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.
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