2017-02-14 40 views
21

Lưu ý: Tôi khá mới đối với cả git và GitHub. Vì vậy, trong thiết lập hiện tại của tôi, nhóm của tôi sử dụng git flow Hotfixes (thường được bắt đầu và hoàn thành bởi một công cụ đồ họa như GitKraken hoặc IntelliJ) để thực hiện các thay đổi phải được hợp nhất thành hai nhánh và đẩy ngược lên cả hai. Vì vậy, ví dụ như các dòng sẽ là:Cách thực hiện các hotfix với Yêu cầu kéo GitHub

  1. Kéo mới nhất từ ​​chủ
  2. Bắt đầu hotfix
  3. Cam kết thay đổi
  4. Merge chi nhánh hotfix vào cả hai tổng thể và phát triển và đẩy cả hai phía thượng lưu

Chúng tôi hiện đang xem xét việc chuyển mã của chúng tôi sang GitHub và muốn bắt đầu sử dụng Pull Requests, vì một vài lý do:

  • móc CI để chạy thử nghiệm và các công cụ
  • một nơi để đưa ý kiến ​​mã cụ thể không liên quan trực tiếp đến "vấn đề" cơ bản
  • tránh sự cần thiết cho tất cả mọi người để không ngừng được kéo thạc sĩ mới nhất/phát triển đến địa phương của họ máy để họ có thể hợp nhất các thay đổi

Nhưng trong trường hợp Hotfixes, tôi không biết phải làm gì vì tôi đang hợp nhất thành hai nhánh nhưng thực sự là một "hành động" để tạo thủ công hai yêu cầu kéo có vẻ lạ, đặc biệt là từ bước 4) trong luồng hiện tại của chúng tôi là một nhấp chuột duy nhất.

Có cách xử lý thông minh này không? Trường hợp lý tưởng của tôi sẽ là việc nhấn nút Hợp nhất trên Yêu cầu kéo sẽ chỉ hợp nhất vào cả hai, nhưng điều đó dường như không phải là một tùy chọn có sẵn.

+1

câu hỏi tương tự http://softwareengineering.stackexchange.com/questions/187723/code-review-with-git-flow-and-github – Robbie

+0

@Robbie cảm ơn, tôi cũng sẽ xem xét các câu hỏi đó. – Dan

Trả lời

16

Như bạn đã đề cập, một yêu cầu Kéo chỉ có một chi nhánh mục tiêu, vì vậy bạn sẽ không thể để đẩy hotfix cho cả masterdevelop bằng cách sáp nhập một Pull Request.

Tôi cũng ngạc nhiên khi bạn đề cập đến bướC# 4 - hợp nhất chi nhánh hotfix cho cả hai masterdevelop và đẩy ngược dòng - là một hành động. Mặc dù có nhiều khả năng hợp nhất từ ​​hotfix đến master sẽ không chạy vào xung đột hợp nhất, tôi không thể nói tương tự cho việc hợp nhất từ ​​hotfix đến develop vì nó có thể đã được làm việc kể từ lần triển khai cuối cùng đến sản xuất.

Tôi đề nghị sẽ sau đó được như sau:

  • Tạo một PR hotfix-master và có một người nào đó xem xét nó để xác nhận việc sửa chữa
  • Sau khi đã sáp nhập vào master, tạo PR khác hotfix-develop và xem liệu bạn có gặp phải xung đột hợp nhất hay không
    • Nếu trường hợp đó xảy ra, hãy giải quyết xung đột hợp nhất để PR kết thúc ở trạng thái được hợp nhất và có người nào đó rev iew PR
    • Nếu không có xung đột nhập, sau đó có một người nào đó xem lại PR

Một giải pháp thay thế, nếu bạn thực sự muốn đi xuống con đường tự động, sẽ tận dụng cả hai Webhooks GitHub và API.

Webhook sẽ cho phép bạn là notified when a PR is merged. Bạn có thể kiểm tra tải trọng để đảm bảo rằng nhánh gốc bắt đầu bằng hotfix/ và nhánh đích là master. Sau đó, bạn có thể phản ứng với sự kiện đó bằng cách sử dụng API đến create a new PR từ cùng chi nhánh hotfix tới develop.

Nó sẽ liên quan đến một số phát triển và nỗ lực có thể không đáng kể vì việc tạo PR thông qua giao diện người dùng vẫn khá dễ dàng và nhanh chóng.

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