Bạn đang nói về tờ giấy Promotional Model - Tài liệu của Perforce nêu bật các vấn đề với nó - truyền đạt vai trò thay đổi của các dòng mã và di chuyển giữa các nhánh.
Việc mở rộng trên quan điểm của tôi về vấn đề niêm yết:
1) Thay đổi chính sách của mã dòng:
Mỗi dòng mã có một chính sách, cho dù nó được viết xuống và chính thức hóa, hoặc hoàn toàn ẩn trong một đầu của nhà phát triển. Nó định nghĩa ví dụ:
- ai được phép cam kết mã dòng
- bao nhiêu thử nghiệm là cần thiết (ví dụ làm đơn vị kiểm tra phải vượt qua, kiểm tra hồi quy, đầy đủ kiểm tra hệ thống)
- có bao nhiêu người phải xem xét mã thay đổi
- những loại thay đổi được phép
Với cách tiếp cận thân cây, các chính sách vẫn cố định, do đó dễ viết hơn, giúp chúng dễ dàng giao tiếp hơn (quan trọng hơn trong một nhóm lớn hơn).
ví dụ:Trunk:
- bất kỳ nhà phát triển có thể cam kết
- bất kỳ sự thay đổi
- kiểm tra đơn vị phải vượt qua
- xem xét mã sau khi cam kết
Version chi nhánh:
- chỉ phát triển duy trì
- chỉ lỗi sửa chữa
- đơn vị kiểm tra + hồi quy kiểm tra
- đang xem xét lại bởi 2 nhà phát triển khác trước khi cam kết
chi nhánh Tag:
- không cam kết sau khi tạo
phát triển của cá nhân chi nhánh:
- Chỉ kiểm tra nhà phát triển trong
- Bất kỳ sự thay đổi
- kiểm tra chỉ cần thiết trước khi sáp nhập vào thân cây
- xét Mã trước khi hợp nhất để thân cây
Nếu bạn có mô hình khuyến mãi, sau đó bạn có một chính sách trong khi phát triển chính, sau đó phải nói với mọi người khi bạn thay đổi chính sách trong khi chuẩn bị phát hành, sau đó một chính sách khác (cho dòng mã) sau khi dòng được phát hành.
Mô hình quảng cáo là một mô hình dễ dàng để tham gia, nó ánh xạ trực tiếp lên cách thức kiểm soát không phải là nguồn làm việc. Nhưng nó đau khi bạn bắt đầu nhận được các đội lớn.
Nếu bạn nhìn vào sự phát triển hạt nhân Linux, bạn có thể thấy sự căng thẳng giữa mô hình Khuyến mại và mô hình Trunk: Cây Linus là Quảng cáo - nó đi qua các chu kỳ giữa cửa sổ hợp nhất và thời gian ổn định. Nhưng Linux-tiếp theo và -mm đã nổi lên để cung cấp cho một thân cây giống như dòng.
SCM/VCS phân tán có phần khác nhau, các chính sách không phải được phân phối cho tất cả các nhà phát triển vì mỗi phát triển đều có cây riêng và kéo thay đổi khi muốn.
Dự án mã nguồn mở gặp phải sự cố là chúng không thể buộc mọi người thực hiện công việc vất vả để ổn định bản phát hành, sau khi phân nhánh từ thân cây. Do đó mô hình khuyến mãi quan trọng hơn như là một cách để thúc đẩy các nỗ lực ổn định, thay vì chỉ làm việc trên các tính năng.
2) Di chuyển công việc:
Một nhà phát triển có thể làm việc trên một tính năng mà chính sách cho dòng anh ấy làm việc trên những thay đổi để sửa lỗi mà thôi, ông bây giờ cần phải chuyển bản sao làm việc của mình để một số- khác nhau hàng. Đây có thể là bất cứ nơi nào từ dễ đến vô cùng khó khăn tùy thuộc vào hệ thống SCM đang sử dụng. Vấn đề này không xảy ra nếu nhà phát triển đang làm việc trên thân cây, vì công việc của họ luôn đi vào thân cây.Nếu nhà phát triển ở trên một nhánh riêng hoặc tính năng thì công việc của họ sẽ chỉ tác động lên thân cây (và bản phát hành).
Nếu tính năng đã được đăng ký nhưng bị trì hoãn từ phiên bản hiện tại, bạn phải tìm cách xóa nó. Vấn đề này vẫn còn tồn tại với mô hình thân cây, nhưng có thể dễ dàng hơn một chút để giải quyết - những thứ nhặt hoa anh đào từ thân cây cho bản phát hành. Đây là nơi các nhánh tính năng trợ giúp - nhưng chúng có chi phí tích hợp.
+1 cho liên kết đến bài viết tuyệt vời! – RichardOD
Bài viết rất hay, cảm ơn Douglas. – Sebastian
Tuyệt vời - Tôi nhận được 6 phiếu bầu, và câu hỏi đã được thực hiện CW: -) ... –