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就可以了.

特此记录.

欢迎补充指正!

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读