Tôi đã thử cả hai phương pháp với một ứng dụng thương mại lớn.
Câu trả lời cho phương pháp nào tốt hơn phụ thuộc nhiều vào tình huống chính xác của bạn, nhưng tôi sẽ viết những gì mà kinh nghiệm chung của tôi đã thể hiện cho đến nay.
Phương pháp tổng thể tốt hơn (theo kinh nghiệm của tôi): Thân cây phải luôn ổn định.
Dưới đây là một số hướng dẫn và lợi ích của phương pháp này:
- Mã hóa từng tác vụ (hoặc tập hợp các nhiệm vụ có liên quan) trong nhánh riêng của nó, sau đó bạn sẽ có sự linh hoạt khi bạn muốn hợp nhất các tác vụ này và thực hiện một bản phát hành.
- QA nên được thực hiện trên mỗi nhánh trước khi nó được hợp nhất vào thân cây.
- Bằng cách thực hiện QA trên từng nhánh riêng lẻ, bạn sẽ biết chính xác nguyên nhân gây ra lỗi dễ dàng hơn.
- Giải pháp này quy mô cho bất kỳ số lượng các nhà phát triển.
- Phương pháp này hoạt động kể từ khi phân nhánh là một hoạt động gần như ngay lập tức trong SVN.
- Gắn thẻ cho mỗi bản phát hành mà bạn thực hiện.
- Bạn có thể phát triển các tính năng mà bạn không có kế hoạch phát hành trong một thời gian và quyết định chính xác khi nào nên hợp nhất chúng.
- Đối với tất cả các công việc bạn làm, bạn có thể có lợi ích của việc cam kết mã của bạn. Nếu bạn chỉ làm việc ngoài thân cây, có thể bạn sẽ giữ mã của mình không được cam kết rất nhiều, và do đó không được bảo vệ và không có lịch sử tự động.
Nếu bạn cố gắng làm ngược lại và thực hiện tất cả sự phát triển của bạn trong thân cây, bạn sẽ gặp các vấn đề sau:
- Vấn đề xây dựng liên tục cho các bản dựng hàng ngày
- Mất năng suất khi một nhà phát triển gây ra sự cố cho tất cả những người khác trong dự án
- Chu kỳ phát hành dài hơn, bởi vì cuối cùng bạn cần có một phiên bản ổn định
- Bản phát hành kém ổn định
Đơn giản là bạn sẽ không có sự linh hoạt mà bạn cần nếu bạn cố gắng giữ một nhánh ổn định và thân cây như hộp cát phát triển. Lý do là bạn không thể chọn và chọn từ thân cây những gì bạn muốn đưa vào bản phát hành ổn định đó. Nó sẽ được trộn lẫn với nhau trong thân cây.
Một trường hợp cụ thể mà tôi muốn nói là thực hiện tất cả sự phát triển trong thân cây, là khi bạn đang bắt đầu một dự án mới. Có thể có các trường hợp khác quá tùy thuộc vào tình huống của bạn.
Bằng cách này, các hệ thống kiểm soát phiên bản phân tán cung cấp sự linh hoạt hơn nhiều và tôi khuyên bạn nên chuyển sang hg hoặc git.