git commit hooks提示用戶輸入

今天定義git hook: prepare-commit-msg:
意圖是在用戶提交時, 在commit msg後加一行: issue #${issueID}, 以此關聯以redmine.

#! /bin/sh                                                                                                                          

# branch名爲: xxx-yyy-123, 123爲issueID, 最後必須是"-number"這種格式
currBranch=$(git branch --show-current)
issueID=$(echo $currBranch | grep -o -E -- '-[0-9]+$' | sed 's/-//')
 
# branch名中沒有issueID
if [ x"$issueID" = x ]; then
    read -p "分支名一般最後都有\"-issueID\", 你是否確定你的分支名正確?(N/Y): " confirm </dev/tty
    case "$confirm" in
        n|N):
            echo "認識到了錯誤, 可以新建立正確的分支"
            exit 1
        ;;
        y|Y):
            # 選擇了確認
            exit 0
        ;;
        *)
            echo 2>&1 "請輸入N/Y"
            exit 2
        ;;
    esac
fi
 
# issue #140
issueRef="issue #$issueID"
echo "$issueRef" >> "$1"

我們約定分支名格式爲: “xx-xx…-number”, 其中number是某個issueID.

開始出現的問題是, 提交時, read沒有出現交互式的效果, 直接退出了.
後來上網查,
發現: https://stackoverflow.com/questions/45495061/how-to-ask-for-user-input-in-a-git-hook,
說什麼"Git hooks do not use standard input", 這裏不是很懂, 最後在read 最後加 < /dev/tty就可以了.

特此記錄.

歡迎補充指正!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章