Trường hợp sửa lỗi trong mô hình git-Flow?


14

Trong, thường được gọi là các hotfix mô hình dòng chảy Git đi trong hotfix-*nhánh cụ thể của chúng và các bản sửa lỗi tích hợp nhỏ ngay trước khi phát hành đi vào release-*nhánh. Các lỗi chung từ phiên bản trước dường như không có chỗ.

Họ nên xuất hiện ở đâu? Họ có nên ở trong bug-*nhánh riêng của họ rẽ nhánh develop(giống như featurecác nhánh) không?


3
Tại sao một lỗi không quan trọng trong mã được phát hành sẽ khác với một tính năng nhỏ để tạo ra hành vi khác với những gì ứng dụng hiện đang làm?
Bart van Ingen Schenau

@BartvanIngenSchenau Bạn có đề nghị họ làm feature-*chi nhánh không? Một sửa chữa trên một hành vi sai lầm có thể được coi là một tính năng?
Giày

1
@Shoe Tôi nghĩ ý nghĩa của Bart là bạn nên coi chúng là các tính năng, không nhất thiết phải sử dụng cùng một tiền tố chi nhánh .
Darkhogg

3
@Shoe: trong git-dòng chảy, bất kỳ chi nhánh trừ master, develop, release-*hoặc hotfix-*là một chi nhánh tính năng, vì vậy bạn có thể sử dụng bất kỳ tiền tố bạn thích và sử dụng một tiền tố khác nhau cho lỗi. Ngoài ra, sự khác biệt giữa hành vi sai lầm hoạt động như hành vi được chỉ định và hành vi sai lệch đi từ đặc điểm kỹ thuật là gì? Trong cả hai trường hợp, đó là hành vi sai lầm, nhưng chỉ có trường hợp cuối cùng là một lỗi.
Bart van Ingen Schenau

Câu trả lời:


8

Câu trả lời ngắn gọn: Có, các nhánh sửa lỗi đang được phát hành theo kế hoạch sắp tới sẽ nằm trong các nhánh tính năng. Cách bạn đặt tên cho các nhánh tính năng hoặc các nhánh này để sửa lỗi tùy thuộc vào tiêu chuẩn của bạn và nhóm của bạn, nhưng chúng nên được xử lý giống hệt nếu bạn đang theo dõi Gitflow.


Bart van Ingen Schenau bình luận mang đến một điểm tốt.

Gitflow có năm loại nhánh: master,, developcác nhánh hotfix (tiền tố với hotfix-), các nhánh phát hành (tiền tố release-và các nhánh tính năng. Các nhánh masterdevelopnhánh là các nhánh chạy dài và bạn không cam kết trực tiếp vào chúng. Các release-nhánh được tạo để vẽ một đường cho một bản phát hành cụ thể và sau đó hỗ trợ sửa lỗi giữa việc xác định phiên bản tiếp theo và bản phát hành. Các hotfix-chi nhánh dành riêng cho các bản phát hành ngoài chu kỳ quan trọng vào sản xuất. Các feature-chi nhánh dành cho phát triển các tính năng riêng lẻ cho một số bản phát hành trong tương lai.

Đến từ môi trường nơi PRs được sử dụng và một số tồn tại một nhà phát triển cá nhân cam kết đến một chi nhánh tính năng, không có gì nên được cam kết trực tiếp vào master, develophoặc một chi nhánh phát hành. Điều này đảm bảo rằng mọi thay đổi đều được xem xét mã, cùng với việc đảm bảo phạm vi kiểm tra phù hợp và vượt qua các thử nghiệm trong môi trường CI trước khi có thay đổi. Tôi sẽ phản đối bất kỳ cam kết nào trực tiếp vào một trong các nhánh này, mặc dù có vẻ như Gitflow không tự ' Không có bất kỳ vấn đề nào với việc cam kết sửa lỗi trước khi phát hành hoặc thay đổi trực tiếp vào nhánh phát hành và sau đó kéo chúng vào phát triển và sau đó là các nhánh tính năng.

Trong trường hợp cụ thể của bạn, một release-chi nhánh không phải là một nơi thích hợp. Phần mềm đã được phát hành và đang ở master. Khi một bản phát hành được hợp nhất thành chủ và được gắn thẻ ở đó, nhánh phát hành cho bản phát hành cụ thể đó đã vượt quá mục đích của nó và không nhất thiết phải tồn tại nữa. Nếu bạn chủ động trong việc dọn dẹp các chi nhánh của mình (mà tôi nghĩ rằng mọi người nên như vậy), thì đây thậm chí không phải là một lựa chọn.

Nếu cách khắc phục của bạn không quan trọng, thì một nhánh hotfix dường như cũng không phù hợp. Mục đích của chi nhánh hotfix là cho phép ai đó nhận được các thay đổi quan trọng trong sản xuất mà không can thiệp vào sự phát triển đang diễn ra. Sử dụng chúng nên là ngoại lệ chứ không phải là tiêu chuẩn cho một nhóm phát triển. Nói chung, các hotfix quan trọng nên là một trường hợp đặc biệt.

Điều duy nhất còn lại là một nhánh tính năng. Lưu ý rằng phần của trang được liên kết trong câu hỏi về các nhánh tính năng thậm chí nói rằng các nhánh tính năng "đôi khi được gọi là nhánh chủ đề". Nếu thay đổi của bạn nhắm mục tiêu bất kỳ bản phát hành sắp tới nào và không đáp ứng các tiêu chí cho một hotfix, thì nó sẽ nằm trong một trong những nhánh này.


Chúng tôi đồng ý rằng không nên có cam kết trực tiếp để làm chủ, phát triển hoặc phát hành chi nhánh. Nhưng những gì nên là luồng PR khi bạn tìm thấy một lỗi trong nhánh phát hành và nó cần được sửa trong cả hai, phát hành và phát triển các nhánh. Điều này có những thách thức riêng nếu toàn bộ chi nhánh phát hành của bạn chưa sẵn sàng để được hợp nhất để phát triển nhưng việc sửa lỗi nên được thực hiện ở cả hai nơi .. Nếu bạn muốn tôi có thể đăng câu hỏi mới cho việc này.
Sap

@Sap Một câu hỏi mới sẽ tốt, nhưng nếu bạn đăng nó, vui lòng giải thích lý do tại sao bản sửa lỗi rất quan trọng đến mức nó cần phải được hợp nhất vào cả hai - điều đó dường như ngụ ý rằng có một vấn đề quan trọng không được tìm thấy trước khi nó được đưa vào develop, không phải được tìm thấy giữa thời gian nó được giới thiệu và việc tạo ra nhánh phát hành và / hoặc nhánh phát hành của bạn tồn tại trong một thời gian dài. Mặc dù vậy, đơn giản, tôi tin rằng sự lựa chọn duy nhất là chọn cherry (Tôi muốn đề xuất một yêu cầu sửa chữa và kéo vào nhánh phát hành, hợp nhất vào nhánh phát hành và chọn cherry phát triển thông qua yêu cầu kéo).
Thomas Owens

4

Nếu một cam kết duy nhất thì chỉ cần thực hiện một cam kết được xác định rõ và đẩy nó lên trên nhánh phát triển, nếu không thì tạo một nhánh tính năng.

Ngoài ra còn có một nhận xét từ tác giả git-Flow nói chính xác những gì bạn đang hỏi: Thiếu các nhánh sửa lỗi # 24


Cảm ơn, liên kết mà bạn đã chia sẻ đã xóa điều này cho tôi.
arcseldon
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.