2013-05-05 35 views
65

Nếu bạn cố gắng làm theo mô hình phân nhánh dòng chảy git, documented here và với tools here, bạn nên xử lý tình huống này như thế nào:Theo dõi git-flow bạn nên xử lý hotfix của bản phát hành trước đó 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 phải thực hiện một hotfix cho 1.0. Bạn tạo một nhánh hotfix ra khỏi thẻ 1.0 và thực hiện sửa chữa ở đó. Nhưng những gì sau đó?

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

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 một nhánh vĩnh viễn bên cạnh nhánh chính chứa thẻ phát hành. Đó có phải là cách đúng không?

+0

bản sao có thể có của [luồng Git và chính với nhiều nhánh phát hành song song] (http://stackoverflow.com/questions/16562339/git-flow-and-master-with-multiple-parallel-release-branches) [mặc dù câu hỏi khác là mới hơn nó có nhiều câu trả lời hữu ích hơn vì vậy tôi đã gắn cờ câu hỏi này là trùng lặp] – danio

Trả lời

47

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

This thread has more information, với các ví dụ:

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

... làm cho 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 flow lệnh

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

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

git flow hotfix finish 6.0.1 
+0

? Hãy giữ các nhánh hỗ trợ này hoặc xóa chúng sau một khoảng thời gian –

+0

@EvanHu tốt, để chắc chắn giữ chúng miễn là bạn có nhánh đó trong sản xuất ở đâu đó. Sau đó nó là một vấn đề của hồ sơ lịch sử. Bạn có thể muốn biết làm thế nào hotfix được cố định nếu họ bao giờ nên tái diễn. –

+0

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

25

Câu hỏi thú vị! Luồng bạn liên kết giả định chính có thể theo dõi quá trình sản xuất. Điều đó chỉ có tác dụng nếu các phiên bản sản xuất đang gia tăng nghiêm ngặt. Đ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 quá trình sản xuất là không đủ. Một giải pháp không phải là sử dụng tổng thể để theo dõi sản xuất. Thay vào đó, hãy sử dụng các chi nhánh như release1, release2, v.v.

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

+0

Bạn có thể thay đổi git-flow để thiết lập 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 kịch bản hiện tại. Ngoài ra, những gì sẽ làm chủ sau đó chứa? –

+3

Công cụ 'git-flow' 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, tổng thể không được sử dụng chút nào. Bạn có thể đặt tên cho nhánh chủ phát triển, nó chỉ là một cái tên. – Andomar

+0

GitFlow hỗ trợ theo dõi nhiều phiên bản produciton: https://gitversion.readthedocs.io/en/latest/git-branching-strategies/gitflow-examples/#support-branches –

6

luồng git giả định 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 chính. 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 tổng thể để theo dõi dòng phát hành mới nhất, ngoài hoặc thay cho một trình theo dõi cụ thể cho dòng phát hành mới nhất (chủ thay cho master-2). Không may, bất kỳ công cụ dòng chảy git nào bạn có thể đang sử dụng có thể sẽ cần phải được sửa đổi, nhưng hy vọng bạn đủ quen thuộc với quy trình git-flow để xử lý trường hợp cụ thể này trực tiếp với lệnh git.

+0

Nếu bạn sửa đổi quy trình 'git flow' thì nó sẽ là một cái gì đó khác nhau. Nếu một số mô hình nên được cố định (không chỉ mở rộng) thì nó cũng thành công như các tác giả của nó. Vui lòng xem câu trả lời của tôi cho chủ đề mà chúng tôi đang thảo luận. –