Làm thế nào một người có thể sử dụng git-Flow hiệu quả trên một dự án trong đó có nhiều hơn một phiên bản chính đang được duy trì?


18

Tôi đã chuyển một số dự án của mình sang luồng công việc git và tôi yêu nó. Tuy nhiên, tôi đã không tìm thấy một thực tiễn tốt nhất giúp mọi thứ trôi chảy khi làm việc với một dự án trong đó có nhiều hơn một phiên bản chính được duy trì tại một thời điểm.

Cụ thể, tôi không duy trì "phiên bản miễn phí" và "phiên bản trả phí" hay bất kỳ mô hình song song nào khác, tôi đang nói về một dự án trong đó Phiên bản 1 được phát hành và vẫn được hỗ trợ với các phiên bản nhỏ (1.1, 1.2, v.v. .) cho đến khi Phiên bản 3 được phát hành, tại đó điểm 2 và 3 sẽ được duy trì, cho đến khi phiên bản 4 được phát hành ... bạn sẽ có ý tưởng.

Làm thế nào bạn, hoặc bạn, sẽ duy trì hai hoặc nhiều phiên bản được hỗ trợ của một dự án cùng một lúc trong quy trình công việc gitflow?


Không có bất kỳ ví dụ nào, nhưng các dự án tôi biết về các kho riêng được sử dụng cho các phiên bản chính khác nhau và các bản vá backport từ bản này sang bản khác.
ProdigySim

@ProdigySim: Cảm ơn điểm dữ liệu, nhưng đó chỉ là tôi hoặc sẽ thêm một lượng chi phí nhất định để theo dõi và quản lý?
HedgeMage

@ProdigySim Tôi nghi ngờ rằng những dự án đó đã không sử dụng một công cụ có khả năng phân nhánh và hợp nhất của git.
Rein Henrichs

@Rein Họ dùng Mercurial. Tôi không nghĩ việc phân nhánh sẽ rất rõ ràng trong việc theo dõi các phiên bản phần mềm chính song song.
ProdigySim

Sau đó, sự nghi ngờ của tôi là chính xác. Và vâng, nó khá sạch sẽ nếu công cụ của bạn hỗ trợ nó đúng cách. Cả git và nhân Linux đều làm theo cách này.
Rein Henrichs

Câu trả lời:


10

man gitworkflows, cha đẻ của dòng công việc 'git Flow', mô tả các nguyên tắc quy trình công việc git chung; việc sử dụng pu, next, mastermaintcác chi nhánh; và cách maintquản lý. Nếu bạn có nhiều chi nhánh bảo trì, bạn có thể đặt tên cho chúng, ví dụ, maint/1.x, maint/2.xvà vân vân.

Điều quan trọng không phải là quá nhiều cách sử dụng các lệnh git, mà là cách xây dựng một quy trình hợp lý. Quyết định những điều quan trọng đối với bạn (dễ dàng nhập khẩu?) Và xây dựng (và tài liệu) một quy trình làm việc thỏa mãn những ràng buộc đó.


Nhưng điều này có trả lời câu hỏi không? Cụ thể, git-Flow có hỗ trợ mô hình phát hành linh hoạt như được mô tả trong câu hỏi không, hay liệu người ta có quay trở lại các lệnh git cơ bản không? ("gitworkflows" mô tả cách sử dụng quy trình công việc git cơ bản, dòng tiền git.) tránh những sai lầm "sáp nhập sai" tốn thời gian. Có thể w / git-Flow duy trì và phát triển v1.2. {1,2,3, ..} cùng lúc với v2,5. {1,2,3, ...}? Có lẽ w / chi nhánh phát hành dài hạn? Hoặc master1, master2, ...?
michael

0

Về cơ bản, bạn sẽ lặp lại trong các master, releasedevelopchi nhánh cho mỗi phiên bản chính bạn đang duy trì. Cách họ tương tác với nhau vẫn như cũ. Đối với featurechi nhánh, chỉ cần đảm bảo để chi nhánh từ các chi nhánh cũ nhất mà bạn có ý định sáp nhập trở lại vào , mà ngăn chặn kéo trong phụ thuộc không mong muốn. Sau đó, khi bạn hợp nhất featurechi nhánh của mình trở lại, bạn chỉ cần thực hiện hợp nhất bổ sung vào từng nhánh phiên bản chính mới hơn phù hợp.


1
Không phải toàn bộ quan điểm chính bao gồm mọi phiên bản được phát hành sao?
HedgeMage

@HedgeMage, trong một chu kỳ phát hành tuyến tính hơn, đó là điều không thực tế đối với các phiên bản chính song song.
Karl Bielefeldt

Đây có vẻ như là giải pháp thiết thực nhất, trừ khi có một số mẹo thử và đúng bằng cách sử dụng hotfix hoặc những thứ mà tôi không biết. Tôi đã tìm kiếm một cách để giới thiệu git-Flow và vẫn có thể (như một điều kiện tiên quyết đáng tiếc) giữ cho mô hình phát hành hiện tại của chúng tôi, nơi chúng tôi phải duy trì / phát triển các bản phát hành cũ hơn (không chỉ là hotfix). Vì vậy, v5.1.x sẽ tồn tại xung quanh (w / tính năng mới được thêm vào, đã sửa lỗi, v.v.) một vài năm sau khi v6.1.x được phát hành. Khoảng 2-3 phiên bản chính được hỗ trợ và phát triển tại bất kỳ thời điểm nào. Nhưng sửa lỗi cần phải được áp dụng cho từng phiên bản có lỗi tồn tại.
michael
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.