2016-01-08 57 views
1

我正在嘗試編寫git掛鉤來部署推送的Web應用程序。Git Hook:如何判斷標記提交是否已合併爲主

我已經克隆了一個來源的裸露回購,並寫了一個預接收掛鉤來執行某些規則。
其中一個規則是應該只部署帶註釋的標籤,並且所有更改必須已經合併到主文件中。

爲了執行第二條規則,我想使用後接收和一個

git branch --contains <tag_name> 

爲了看主人是否在列表中。

當我做這個出身,我得到

master 
* testbranch 

但是當我運行在部署服務器上的裸回購相同的命令,我只得到

* (detached from e5f1fa4) 

我缺少的東西或者這種方法是否僅僅在裸回購上不起作用?

如果是這樣,是否有任何其他方式來驗證標記的提交已被合併到主已經?

+0

使用'git的合併基礎--is-ancestor'代替 –

+0

這實際上運作良好,並具有通過出口的方式將結果提供額外的好處狀態。 –

回答

0

首先,做git show <tag_name>並複製該提交的散列。

然後,就用grep搜索這個哈希git log

git log master | grep <hash> 

如果沒有返回輸出,那麼散列沒有被合併到主分支。否則,散列將從grep輸出,表示它已被合併。

要做到這一切在一個單一的命令:

git log master | grep "`git show <tag_name> | grep commit`" 
相關問題