2016-09-08 83 views
5

我們的項目正在使用受保護的分支,並要求PR的基本分支與目標分支保持最新以便合併。我們還使用Jenkins構建PR的未組裝頭部,因爲我們使用的插件將在目標分支更改時自動重建所有打開的PR,這可能會快速堵塞管道。因此,在打開PR而不與目標分支保持同步的情況下,我們希望能夠立即停止Jenkins管道,並通知提交者他們需要先合併。檢查PR是否與目標分支保持同步

因此,使用GitHub API,我希望能夠判斷一個請求是否與目標分支保持同步。與此最接近的事情似乎是拉取請求中的「可合併」屬性,但它看起來只表示安全自動合併CAN是否能完成,而不是分支是否已經是最新的。

是否有可以查看的直接API json標籤?如果沒有,是否有一個簡單的方法來檢查這與git命令手動?

+0

[需要的狀態檢查](https://github.com/blog/2051-protected-branches-and-required-status-checks)可以選擇'要求分支在合併之前保持最新狀態'。雖然這不能回答你問題的API部分,但它可能是一個有效的工作流程。 – osowskit

回答

5

我不知道GitHub是否通過他們的API公開了這些信息,但是您可以使用Git命令手動檢測到此信息。你想找到所謂的合併基礎,並確保這個提交與master(或任何你的主要分支)的提示相同。

腳本的形式,它會是這個樣子:

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 

如果包含此腳本作爲構建步驟,那麼出口值應引起必要時詹金斯失敗的工作。