Sau git-flow, bạn nên xử lý hotfix của bản phát hành trước đó như thế nào?


101

Nếu bạn cố gắng làm theo mô hình phân nhánh git-flow, được ghi lại ở đây và với các công cụ ở đây , bạn nên xử lý tình huống này như thế nào:

Bạn đã tạo bản phát hành 1.0 và bản phát hành 2.0. Sau đó, bạn cần tạo một hotfix cho 1.0. Bạn tạo một nhánh hotfix ngoài thẻ 1.0 và triển khai bản sửa lỗi ở đó. Nhưng sau đó thì sao?

Thông thường, bạn sẽ hợp nhất để làm chủ và đặt thẻ phát hành 1.1 ở đó. Nhưng bạn không thể hợp nhất 1.1 thành một điểm sau 2.0 trên tổng thể.

Tôi đoán bạn có thể đặt thẻ phát hành trên nhánh hotfix, nhưng điều đó sẽ tạo ra một nhánh vĩnh viễn bên cạnh cái chính có chứa thẻ phát hành. Đó có phải là cách đúng đắn?


có thể trùng lặp của Git-dòng chảy và thạc sĩ với nhiều song song phát hành nhánh [mặc dù câu hỏi khác là mới hơn nó có câu trả lời hữu ích hơn vì vậy tôi đã gắn cờ câu hỏi này như trùng lặp]
Danio

Câu trả lời:


74

Có vẻ như có một khái niệm về một nhánh "hỗ trợ" trong git flow. Điều này được sử dụng để thêm một hotfix vào bản phát hành trước đó.

Chủ đề này có nhiều thông tin hơn , với các ví dụ sau:

git checkout 6.0
git checkout -b support/6.x
git checkout -b hotfix/6.0.1

... thực hiện sửa chữa của bạn, sau đó:

git checkout support/6.x
git merge hotfix/6.0.1
git branch -d hotfix/6.0.1
git tag 6.0.1

hoặc sử dụng git flowlệnh

git flow support start 6.x 6.0
git flow hotfix start 6.0.1 support/6.x

... thực hiện các thay đổi sau đó:

git flow hotfix finish 6.0.1

? giữ lại các nhánh hỗ trợ này hoặc xóa chúng sau một thời gian
Evan Hu

@EvanHu, chắc chắn hãy giữ chúng miễn là bạn có chi nhánh đó đang được sản xuất ở đâu đó. Sau đó nó là một vấn đề của lịch sử. Bạn có thể muốn biết các hotfix đã được sửa chữa như thế nào nếu chúng sẽ lặp lại.
Klas Mellbourn

Người ta nên phát hành bản sửa lỗi nóng, phải không? Làm thế nào chúng ta có thể làm điều đó?
Ravindranath Akila

33

Câu hỏi thú vị! Luồng bạn đã liên kết giả định rằng chính có thể theo dõi quá trình sản xuất. Điều đó chỉ hoạt động nếu các phiên bản sản xuất ngày càng tăng. Điều đó thường đúng đối với một trang web chỉ có một phiên bản sản xuất.

Nếu bạn phải duy trì nhiều phiên bản sản xuất, một nhánh để theo dõi sản xuất là không đủ. Một giải pháp là không sử dụng master để theo dõi quá trình sản xuất. Thay vào đó, chi nhánh sử dụng thích release1, release2vv

Trong cách tiếp cận này, bạn thậm chí có thể không cần một nhánh hotfix. Bạn có thể khắc phục sự cố trên release1nhánh. Khi bản sửa lỗi đủ tốt, hãy tạo một release1.1thẻ trên release1nhánh.


Bạn có thể thay đổi git-flow để đặt các thẻ phát hành trên các nhánh phát hành. Đó là một thay đổi khá lớn. Nó sẽ phá vỡ các tập lệnh hiện tại. Ngoài ra, chủ nhân sau đó sẽ chứa những gì?
Klas Mellbourn

3
Công git-flowcụ này không phù hợp nếu bạn phải hỗ trợ nhiều phiên bản sản xuất. Trong quy trình làm việc được đề xuất trong câu trả lời này, bản gốc hoàn toàn không được sử dụng. Bạn có thể đặt tên cho chủ nhánh phát triển, xét cho cùng thì đó chỉ là một cái tên.
Andomar

GitFlow hỗ trợ theo dõi nhiều hơn một phiên bản produciton: gitversion.readthedocs.io/en/latest/git-branching-strategies/...
Andre L

7

git-flow giả định rằng bạn chỉ hỗ trợ một dòng phát hành tại một thời điểm, được theo dõi thuận tiện bởi master. Nếu bạn đang duy trì nhiều hơn 1, thì bạn sẽ cần phải sửa đổi quy trình git-flow để có nhiều trình theo dõi các bản phát hành riêng biệt mà bạn đang hỗ trợ (master-1, master-2). Bạn có thể tiếp tục sử dụng bản chính để theo dõi dòng phát hành gần đây nhất, ngoài hoặc thay cho một trình theo dõi cụ thể cho dòng phát hành gần đây nhất (chính thay cho bản chính-2).

Thật không may, bất kỳ công cụ git-flow nào bạn đang sử dụng có thể sẽ cần được sửa đổi, nhưng hy vọng bạn đủ quen với quy trình git-flow để xử lý trường hợp cụ thể này trực tiếp bằng các lệnh git.


Nếu bạn sửa đổi git flowquy trình thì nó sẽ khác. Nếu một số mô hình nên được sửa chữa (không chỉ mở rộng) thì nó đã thành công như tác giả của nó đã nói. Vui lòng kiểm tra câu trả lời của tôi cho chủ đề chúng ta đang thảo luận.
Victor Yarema

0

git config --add gitflow.multi-hotfix true Lệnh này dường như phù hợp với tôi!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.