Tôi đang cố gắng chọn một quy trình công việc Git phù hợp nhất cho sản phẩm của chúng tôi. Dưới đây là các tham số:
- Chúng tôi thực hiện một vài bản phát hành lớn mỗi năm, giả sử nhiều nhất là 10
- Chúng tôi có nhiều phiên bản sản phẩm của chúng tôi hoạt động cùng một lúc (một số người ở phiên bản v10.1, một số phiên bản v11.2, v.v.)
- Chúng tôi cần có khả năng làm việc trên nhiều bản phát hành cùng một lúc (vì vậy chúng tôi có thể làm việc trên v12.1, nhưng khi chúng tôi kết thúc bản phát hành, chúng tôi bắt đầu làm việc trên v12.2 cùng một lúc)
- Chúng tôi cần có khả năng phát hành hotfix khi tìm thấy lỗi nghiêm trọng
Cho đến nay, đây là cách tôi nghĩ nó có thể hoạt động:
- Repo từ xa duy nhất được sử dụng
- Tạo nhánh 12.1 từ master
- Tạo các nhánh tính năng dựa trên 12.1, cam kết chúng và hợp nhất lại thành 12.1, đẩy
- Khi chúng ta cần bắt đầu làm việc với bản phát hành trong tương lai, hãy tạo một nhánh mới 12.2 dựa trên 12.1
- Từ đó trở đi, khi làm việc trên một tính năng cho 12.1, hãy tạo nhánh từ 12.1, cam kết thay đổi và hợp nhất vào cả 12.1 và 12.2, đẩy
- Nếu làm việc trên một tính năng cho 12.2, hãy tạo chi nhánh từ 12.2, cam kết thay đổi và chỉ hợp nhất thành 12.2, đẩy
- Khi hoàn thành phát hành 12.1, hợp nhất nó vào nhánh chính và thẻ master với 12.1
- Nếu cần một hotfix, hãy tạo một nhánh hotfix từ nhánh phát hành cũ nhất cần nó, cam kết thay đổi và hợp nhất trở lại vào tất cả các nhánh phát hành cho bản phát hành đó và các bản phát hành trong tương lai có thể bị ảnh hưởng; nếu nhánh phát hành ổn định mới nhất bị ảnh hưởng, hãy hợp nhất nó thành master.
Tôi có một vài lo ngại:
- Tôi không chắc chắn rằng việc hợp nhất các hotfix từ các nhánh cũ thành các nhánh mới sẽ là một quá trình trơn tru, đặc biệt là nếu có nhiều thay đổi chồng chéo; nó sẽ thông minh hơn khi chỉ cần hotfix thủ công ở mỗi chi nhánh trong trường hợp có vẻ như sẽ có xung đột
- Các mô hình quy trình công việc mà tôi thấy dường như không giữ cho các nhánh phát hành tồn tại nhiều, sau khi thực hiện xong, bản phát hành được hợp nhất thành chủ, được gắn thẻ và xóa. Vấn đề của tôi với điều đó là tôi không có ý tưởng hay về cách quản lý trạng thái phát hành nếu tất cả những gì tôi có là các thẻ trong master, có vẻ như hotfix dễ dàng hơn trong một nhánh và sau đó tôi có một bản phát hành mà tôi luôn có thể quay lại có hotfix mới nhất (tôi thậm chí có thể gắn thẻ các hotfix trong bản phát hành). Không chắc chắn có cách nào tôi có thể quay lại trong master và bằng cách nào đó có một bản sao của bản phát hành với hotfix được áp dụng và cập nhật thẻ đó.
Nhận xét được đánh giá cao về những điều tôi có thể đã bỏ qua hoặc cách tốt hơn để hoàn thành những điều được đưa ra theo yêu cầu tôi đã chỉ định.