2010-11-03 35 views
14

我有一個爲git設置的提交模板,我想在其中包含當前分支的名稱。我通常設立的分公司是錯誤ID,它會幫助我在樣板填充,如:在提交模板中包含當前分支名稱

Bug : $BUG 

我如何執行與git的評論模板這種替代?

+0

哦,看錯了SRY :(您可以設置一個別名git commit,它首先找到當前分支,把它寫到一個臨時文件中,並用--template參數調用git commit。 – ZeissS 2010-11-03 13:26:41

回答

15

我可能只是使用prepare-commit-msg掛鉤將其添加到文件。從(鏈接的)聯機幫助頁:

此鉤子在準備默認日誌消息之後,在編輯器啓動之前由git commit調用。

它需要一到三個參數。第一個是包含提交日誌消息的文件的名稱。第二個是提交消息的來源... [消息,模板,合併,壓扁或提交] ...

如果退出狀態爲非零,git commit將中止。

掛鉤的目的是編輯消息文件在地方...

您可以git symbolic-ref HEAD獲得當前的分支。

你可以完全繞過模板,並使掛鉤/插入/追加分支名稱。最簡單的情況下,追加,腳本只是一個shebang線,然後git symbolic-ref HEAD >> "$1"。如果你想嵌入它,使用你最喜歡的方法 - 最易讀的方法是將原文移動,​​寫入和追加,但在註釋中鏈接的方法當然也可以。

如果您希望在佔位符中使用模板,您可以只執行一些操作,如sed -i "s/Bug : \$BUG/BUG : $(git symbolic-ref HEAD)/" "$1"。我相信你可以想象很多其他的變化。

對於某些提交類型(即第二個參數),您可能想要抑制此行爲,或者如果使用樣板替換方法,則只有在第二個參數爲「template」時纔會將其打開。

+0

感謝你的回答,它現在已經發布了,作爲參考,我設法用http ://stackoverflow.com/questions/54365/prepend-to-a-file-one-liner-shell – 2010-11-05 15:34:47

+0

@羅伯特Munteanu任何機會,你想把你的整個解決方案在這裏的答案,爲拉茲ÿ?我肯定會贊成:)謝謝... – 2010-11-29 19:20:43

+1

@Yar:就個人而言,我寧願有一些可用臨時文件讀取的東西,而不是一些文件描述符的魔法,我必須稍後嘗試解密。 'mv「$ 1」「$ 1.tmp」; git symbolic-ref 2>/dev/null>「$ 1」;貓「$ 1.tmp」>>「$ 1」; RM「1美元。tmp「' – Cascabel 2010-11-29 21:54:21

0

只是從Jefromi的回答中拼湊出來的評論,我最終得到了類似的結果。使用Git別名,但沒有模板

tempFile='/tmp/git-commit-template' 
git config commit.template "$tempFile" 
rm $tempFile 
branch=$(git symbolic-ref HEAD|sed s#refs/heads/##) exec 3<> "$tempFile" && awk -v TEXT="[$branch]" 'BEGIN {print TEXT}{print}' "$tempFile" >&3 
git add . 
git commit -a 
1

:A液:當然,它可能是更嚴格的(如果我知道我在做什麼)

$ git config --global alias.com '!sh -c "bug=`git symbolic-ref HEAD|sed s#refs/heads/##`; git commit -em \"BUG: \${bug}\""' 
$ git com 
相關問題