2015-08-31 23 views
6

Trong khi điều này tương tự như chuỗi Git-flow and master with multiple parallel release-branches và đến What's best way to work with git on multiple master branch?, nó không hoàn toàn giống nhau ... Tôi đã tìm thấy cái này khá giống: Multiple projects with same GIT master, nhưng tôi muốn thảo luận về trường hợp sử dụng cụ thể ...Gitflow với nhiều nhánh chính

Công ty tôi đang làm việc đang trong quá trình thiết lập chính sách và quy trình cho luồng công việc Git của chúng tôi. Chúng tôi muốn sử dụng mô hình "Gitflow" như được mô tả trong bài viết http://nvie.com/posts/a-successful-git-branching-model/ hoặc https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow và thường được tham chiếu trong nhiều cuộc thảo luận về vấn đề này.

Chúng tôi có trường hợp sử dụng, tuy nhiên, với yêu cầu mà tôi không thể tìm thấy giải pháp được ghi lại. Nếu dự án của bạn được sử dụng để sản xuất nhiều hơn một sản phẩm cuối cùng thì sao? Do đó, nhánh chính không thể đại diện cho "các điểm phát hành" như thể nó là một sản phẩm duy nhất. Có vẻ như có lẽ các nhánh thay thế được yêu cầu từ chủ nhân? Vì vậy, nhiều chi nhánh phát hành song song? Ví dụ, nếu dự án hoạt động như một xương sống hoặc động cơ cho thứ gì đó có thể có các giao diện, hương vị hoặc biến thể khác nhau nhưng bạn muốn có từng sản phẩm cuối cùng được lưu trữ trong một kho lưu trữ thì sao?

Trong trường hợp cụ thể của tôi, tôi có một chương trình chạy trên máy chủ Linux, nhưng nó cũng được phân phối dưới dạng ứng dụng Windows cục bộ. Trong các phiên bản khác nhau này, có những phần lớn của dự án có thể hoặc không được bao gồm trong một hoặc các bản phát hành khác. Ví dụ, có các thư viện trên máy chủ không cần phải được bao gồm nếu repo chỉ dành cho máy chủ, nhưng phải được bao gồm cho bản phân phối cục bộ nơi chúng không tồn tại. Tôi muốn kéo các bản cập nhật cho repo lên máy chủ tại các điểm phát hành cụ thể, nhưng bỏ qua những phần không thuộc về đó.

Từ nhánh chính, tôi có tạo chi nhánh "Phát hành máy chủ" và "Bản phát hành cục bộ" không?

Chi nhánh phát triển (và tính năng của nó) ở đâu sau đó sẽ tắt? Tôi không muốn nhiều chi nhánh phát triển, mỗi chi nhánh đến từ bản phát hành riêng của nó, vì sự phát triển mã thực tế là 99% áp dụng cho cả hai. Tôi có cần phải hợp nhất một chi nhánh dev thành một và sau đó phát hành khác không?

Trả lời

4

Nếu 99% mã được chia sẻ giữa hai sản phẩm, bạn có thể dễ dàng chia sẻ cùng một kho lưu trữ. Bạn có thể có một bản phát hành/phát triển/tổng chi nhánh duy nhất miễn là hai sản phẩm có cùng chu kỳ phát hành, ví dụ: tàu phiên bản 2.0 cùng một lúc.

Từ nhánh chính, tôi có tạo chi nhánh "Phát hành máy chủ" và "Bản phát hành cục bộ" không?

Trong gitflow bạn thực sự phân nhánh phát hành! Nhưng trong trường hợp họ đang sử dụng các chu kỳ phát hành khác nhau, không có gì ngăn bạn tạo ra một nhánh phát hành cho mỗi sản phẩm. Sau đó, bạn được tự do hợp nhất các nhánh phát hành vào các nhánh phát triển và chủ khi chúng được thực hiện vào thời gian riêng của chúng. Điều duy nhất ở đây là bạn có thể sẽ cần phải có hai vị trí khác nhau của các thẻ trên nhánh chính để bạn có thể thấy vị trí của mỗi sản phẩm trên chu kỳ phát hành của nó. Hoặc để giữ các thẻ ở cùng một định dạng, bạn có thể có hai nhánh chính (một trên mỗi sản phẩm), mà bạn hợp nhất thành tương ứng khi một tính năng được hoàn thành cho sản phẩm tương ứng.

+0

Tôi đồng ý. Nếu mã ít nhiều giống nhau, có một kho lưu trữ và chỉ cần thêm các tập lệnh/công cụ triển khai khác nhau (ví dụ: 'ant'files) vào kho lưu trữ này. Git-Flow sẽ hoạt động tốt ở đây. – mstrap

+0

Cảm ơn mvd. Những sự giúp đỡ đó. Tôi vẫn đang học về mô hình phân nhánh này, và tôi rõ ràng đã dẫn đầu lạc lối trên Gitflow bằng cách xem xét các nguồn thứ cấp.Nhìn vào nguồn chính thay vào đó, tôi thấy các nhánh phát hành tạm thời như thế nào, và phát triển ra sao. Tôi đã mặc dù phát hành là một người đàn ông trung niên vĩnh viễn mà ban đầu đến từ chủ, và sau đó dev đến từ đó. Kết quả là, giải pháp đề xuất của tôi đã được nhấc lên. Tôi thích 2 ý tưởng chi nhánh chính. Nó tương tự như những gì tôi thực sự muốn nói. Tôi đang nói chuyện với đội ở đây về điều này ngay bây giờ. Tôi sẽ ngoại trừ câu trả lời này nếu chúng tôi thực hiện kế hoạch của bạn. – BuvinJ

+0

Có các mô hình khác trong đó các nhánh phát hành tồn tại lâu dài. Công việc bắt đầu phát triển, được sáp nhập vào master (một khi nó được coi là đủ ổn định để kiểm tra) và một nhánh phát hành được phân nhánh khỏi master khi thẻ .0 đang được gắn thẻ. Không cảm thấy như bạn phải đi với dòng chảy vì nó rất phổ biến! Bạn có một tình huống duy nhất và cuối cùng bạn nên chọn một chiến lược phù hợp nhất cho công ty của bạn. – mvd

Các vấn đề liên quan