Học GitFlow và tôi có một số lo ngại mà tôi không thấy được giải quyết trong bất kỳ tài liệu/bài viết nào tôi đã đọc về nó.GitFlow: hợp nhất để làm chủ trước hoặc sau khi phát hành sản phẩm?
Tại một số mã điểm trên chi nhánh develop
cần được triển khai cho môi trường QA/dàn dựng và được kiểm tra một cách nghiêm ngặt. Vì vậy, với GitFlow bạn cắt một chi nhánh release
tắt của develop
, và sau đó bạn triển khai release
cho môi trường dàn dựng.
Thứ nhất, chỉ muốn làm rõ một cái gì đó thật nhanh: lần đầu tiên một dự án đặc biệt/repo trải qua quá trình này, bạn sẽ thực sự được forking/tạo release
chi nhánh mới này từ develop
, có? Và tất cả những lần khác trong tương lai, bạn chỉ cần hợp nhấtdevelop
vào release
, có?
Vì vậy, sau đó QA kiểm tra chi nhánh release
trên phân đoạn env, tất cả đều tốt và chúng tôi sẵn sàng triển khai cho sản phẩm. Bạn có:
- Triển khai để cây trượng và cây sau đó merge
release
vàomaster
? ; hoặc - Hợp nhất
release
đếnmaster
và sau đó triển khai để sản xuất?
Tôi hỏi vì nó có vẻ như trong trường hợp trước đây bạn sẽ cần để triển khai các release
chi nhánh sản, sau đó triển khai đến sản, và sau đó hợp nhất để master
. Những âm thanh OK, nhưng thường là các sản phẩm prod và non-prod không giống nhau và mã chạy hoàn toàn tốt trong các cuộn cảm ứng thứ hai, nó sẽ kích hoạt trên các máy chủ prod. Tôi biết GitFlow hỗ trợ các khái niệm về các chi nhánh hotfix hotfix nhưng chúng được dành riêng cho các bản sửa lỗi nhỏ. Trong trường hợp của một sửa chữa phức tạp đòi hỏi một bản phát hành rollback/backout, bây giờ chúng ta có "mã bẩn" (mã phá vỡ prod vì lý do nào đó) sáp nhập vào master
. Và trong trường hợp sau, có thể mất hàng giờ hoặc thậm chí vài ngày (đặc biệt nếu bạn cần liên quan đến IT/Ops để thực hiện prod triển khai) từ thời điểm bạn nhập và đưa vào yêu cầu phát hành, vào thời điểm triển khai prod thực sự xảy ra. Và trong thời gian này, bạn có chi nhánh master
cho biết "các tính năng X, Y và Z nằm trong sản phẩm" nhưng thực tế là không.
Tôi tự hỏi nếu GitFlow thực sự giải quyết điều này bằng cách nào đó hoặc cách giải quyết đã biết cho cả hai trường hợp.
không chắc chắn này nên được câu trả lời, chúng ta đang thiếu một biện minh, hoặc ưu/chống lại việc sáp nhập trước hoặc sau khi phát hành. – NicolasW
Một lợi thế rất lớn của việc sáp nhập TRƯỚC KHI triển khai là gần như không thể bỏ sót bất kỳ sửa lỗi nào (nếu có) gần đây đã sáp nhập trở lại vào bản chính và kết quả là tạo ra sự cố hồi quy. Vì lý do duy nhất đó, tôi nghĩ đây là cách tiếp cận tốt nhất. – NicolasW