2016-09-08 14 views
5

Dự án của chúng tôi đang sử dụng các chi nhánh được bảo vệ và yêu cầu nhánh cơ sở của PR phải được cập nhật với chi nhánh mục tiêu để hợp nhất. Chúng tôi cũng đang sử dụng Jenkins để xây dựng đầu unmerged của PR vì các plugin chúng tôi sử dụng sẽ tự động xây dựng lại tất cả các PR mở khi các chi nhánh mục tiêu thay đổi, có thể nhanh chóng làm tắc nghẽn một đường ống. Vì vậy, trong trường hợp PR được mở mà không được cập nhật với chi nhánh mục tiêu, chúng tôi muốn có thể dừng đường ống Jenkins ngay lập tức và thông báo cho người cam kết rằng họ cần hợp nhất trước.Kiểm tra xem PR có được cập nhật với chi nhánh mục tiêu

Vì vậy, khi sử dụng API GitHub, tôi muốn có thể biết yêu cầu kéo có được cập nhật với chi nhánh mục tiêu hay không. Điều gần nhất với điều này có vẻ là thuộc tính "có thể hợp nhất" trên yêu cầu kéo, nhưng có vẻ như nó chỉ cho biết liệu tự động hợp nhất có thể được thực hiện hay không, không phải là chi nhánh đã được cập nhật hay chưa.

Có thẻ json API trực tiếp có thể xem được không? Nếu không, có cách nào đơn giản để kiểm tra điều này bằng tay với lệnh git không?

+0

[Yêu cầu kiểm tra trạng thái] (https://github.com/blog/2051-protected-branches-and-required-status-checks) có tùy chọn để 'Yêu cầu các chi nhánh được cập nhật trước khi hợp nhất'. Mặc dù điều này không trả lời phần API của câu hỏi của bạn, nhưng đó có thể là quy trình làm việc hợp lệ cần xem xét. – osowskit

Trả lời

5

Tôi không biết liệu GitHub có hiển thị thông tin này thông qua API của họ hay không, nhưng bạn có thể phát hiện điều này theo cách thủ công bằng lệnh Git. Bạn muốn tìm cái được gọi là cơ sở hợp nhất và đảm bảo rằng cam kết này giống như đầu của master (hoặc bất kỳ nhánh chính nào của bạn).

Trong hình thức của một kịch bản , nó sẽ giống như thế này:

if [ $(git merge-base @ master) == $(git rev-parse master) ] 
then 
    echo "Your branch is up to date." 
    exit 0 
else 
    echo "You need to merge/rebase." 
    exit 1 
fi 

Nếu bạn bao gồm kịch bản này như một bước xây dựng, sau đó các giá trị xuất cảnh nên gây ra Jenkins thất bại trong công việc nếu cần thiết.

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