2009-12-23 27 views
5

Trong công ty của chúng tôi, chúng tôi đang làm việc trên một sản phẩm bao gồm các mô-đun C/C++ khác nhau. Lý tưởng nhất, mỗi cấp và mô-đun nên được phát triển riêng biệt bởi các nhóm khác nhau và được kiểm tra độc lập. Hiện nay, chúng tôi có riêng mỗi module vào chi nhánh riêng của nó: \svn: externals & tagging, cách kết hợp mã giữa các đội

Các module là:

 
\hid 
    \branches 
    \tags 
    \trunk 
\api 
    \branches 
    \tags 
    \trunk 
\ui 
    \branches 
    \tags 
    \trunk 

riêng, việc phát hành sản phẩm là xây dựng bằng cách kết hợp các mô-đun và biên soạn thường xuyên sử dụng một hệ thống CI.

 
\productX 
    \branches 
    \5.0 
     \hid-4.0 (svn:externs \hid\branches\4.0) 
     \api-3.0 (svn:externs \api\branches\3.0) 
     \ui-5.0 (svn:externs \ui\branches\5.0) 
    \tags 
    \trunk 

Vấn đề chính mà chúng tôi đang gặp phải là hành vi của 'svn tag' gắn với externs. Các extern hiện tại đang tham chiếu HEAD - bởi vì chúng tôi muốn xây dựng phiên bản mới nhất thường xuyên để đảm bảo tất cả các module hoạt động cùng nhau. Tuy nhiên, khi xây dựng thành công và chúng tôi tiến hành phát hành, sẽ rất tuyệt nếu có cách dễ dàng để tự động gắn thẻ mọi thứ - bao gồm cả phiên bản được sử dụng trong extern. Vì nó là viết tắt của ngày hôm nay, chúng ta phải tạo thẻ cho các mô-đun và sau đó cập nhật các externs cho các thẻ này, sau đó gắn thẻ sản phẩm, và cuối cùng trao đổi nó trở lại thân cây sau.

Có cách nào tốt hơn để thực hiện việc này không? Cảm thấy tự do cũng bình luận về cấu trúc hiện tại.

Trả lời

3

Tôi nghĩ sẽ tốt hơn nếu bạn định nghĩa các định nghĩa bên ngoài tham chiếu đến các thẻ của mô-đun chứ không phải là các thân của chúng. Bằng cách này, bạn ’ chỉ tái tạo các cột mốc được biết đến của các mô-đun và sẽ không có gì cần phải thay đổi khi bạn gắn thẻ sản phẩm cốt lõi.

Điều này phù hợp với thực tiễn tốt nhất (được đề xuất trong tài liệu SVN) chỉ sử dụng sửa đổi rõ ràng (thay vì HEAD) trong svn:externals.

+1

Cảm ơn Michael. Ý kiến ​​của bạn phản ánh những gì tôi đã đọc (rất nhiều!) Về SVN: externs thực hành. Chúng tôi đang thực hiện hầu hết những gì đã được đề xuất: * hầu hết các lần, sản phẩm được đề cập đến các nhánh của mô-đun * trước khi phát hành, chúng tôi tạo thẻ cho mỗi mô-đun * tiếp theo, chúng tôi cập nhật các điểm bên ngoài thẻ * cuối cùng, chúng tôi gắn thẻ sản phẩm * và sau đó chúng tôi thay đổi bên ngoài trở lại các chi nhánh một lần nữa Công trình này, nhưng rất tẻ nhạt và dễ bị lỗi. Tôi đã hy vọng có một cách tốt hơn ... – Charles

Các vấn đề liên quan