2013-06-05 50 views
2

在此基礎上question我做了一個混帳掛鉤prepare-commit-msg如何確定git-hook中是否存在rebase?

#!/bin/sh 
# 
# Automatically adds branch name and branch description to every commit message. 
# 
NAME=$(git branch | grep '*' | sed 's/* //') 
DESCRIPTION=$(git config branch."$NAME".description) 

echo "[$NAME]"': '$(cat "$1") > "$1" 
if [ -n "$DESCRIPTION" ] 
then 
    echo "" >> "$1" 
    echo $DESCRIPTION >> "$1" 
fi 

它工作得很好簡單的提交。示例 - [issue14020]: some text message如果在issue14020分支中提交。

但後來我做了一個rebase我有這樣的消息[(no branch)]: [issue14020]: some text message。有什麼辦法可以跳過這個「不分支」部分嗎?

回答

2

如果您最終處於無頭狀態,您將在rebase提交中獲得'(no branch)'。

而不是使用git branch獲取當前分支名稱,使用NAME=$(git rev-parse --abbrev-ref HEAD)將返回當前分支或'HEAD',如果您處於無頭模式。

重新工作的腳本,這個就變成了:

NAME=$(git rev-parse --abbrev-ref HEAD); 
if [ "$NAME" != 'HEAD' ] ; then 
    DESCRIPTION=$(git config branch."$NAME".description); 
    echo "[$NAME]"': '$(cat "$1") > "$1"; 
    if [ -n "$DESCRIPTION" ] ; then 
     echo "" >> "$1"; 
     echo $DESCRIPTION >> "$1"; 
    fi 
fi 
+0

如果我想,以確定當前正在重建基礎,如,而不是HEAD分支的名稱,這也算是名實際的分支。有沒有辦法做到這一點?我想不是因爲分離HEAD沒有提及它的分支,但我可能是錯的。 – finiteloop

相關問題