我有'更新'鉤子的問題。在新分支的情況下,它將得到一個0000000000000000000000000000000000000000作爲'oldrev'。我不知道如何處理這種情況。Git接收/更新掛鉤和新分支
我們有這樣的要求,即每個提交消息引用一個有效的Jira問題。所以我在中央倉庫上安裝了一個「更新」鉤子。該鉤子獲得「oldrev」和「newrev」。然後我通過那些「混帳轉列表」是這樣的:
git rev-list $oldrev..$newrev
這給了我所有轉速下,我可以然後遍歷列表,並做我需要做的。
問題是,當用戶按下一個新的分支時,鉤子獲取0000000000000000000000000000000000000000作爲oldrev。和「混帳轉列表」簡單地抱怨:
fatal: Invalid revision range 0000000000000000000000000000000000000000..21bac83b2
那麼,如何讓所有的都在新的分支轉速的名單?我已經在網上查了很長一段時間了,什麼都沒發現。這個例子鉤,我發現無論是
- 不處理這個問題,失敗,上面的錯誤消息
- 錯誤地試圖通過設置OLDREV爲「」,它返回自啓錯誤的結果來解決問題-list
- 乾脆放棄,當他們遇到的這些OLDREV
無聲音特別興奮。
那麼有人有任何想法如何得到正確的答案在這種情況下?我在考慮查詢git是否「給我所有可從newrev獲得的轉發,但不能從任何其他分支(=除新分支以外的所有分支)」。但即使如此,如果從新分支合併到任何舊分支,這也會給出錯誤的答案。
我不確定它是否與我的環境或git更新有些奇怪,但否定是刪除當前分支上的引用。我必須做這樣的事情:'git rev-list $(git for-each-ref --format ='%(refname)'「refs/heads/*」| grep -v'$ ref'| sed '/'/'^ /')「$ newrev」' – mmalone 2012-11-08 01:47:44
爲了在'update'(和'pre-receive')鉤子中使用,如問題中所述,這些答案都更加複雜和昂貴。約瑟在下面的答案是最簡單和最有效的;這應該是IMO的選擇答案。 – MadScientist 2014-06-01 19:41:26
@mmalone你是對的。我不得不添加「| grep -v'$ rev'」。否則,我總是得到empy結果 – dritan 2015-03-31 09:18:14