我想出了以下prepare-commit-msg git钩子(Hook):
#!/bin/sh
BRANCH=`git branch | grep '^*' | sed -e 's/^\* //'`
MESSAGE=`cat "$1"`
JIRA_ID=$(echo "$BRANCH" | grep -Eo "[A-Z0-9]{1,10}-?[A-Z0-9]+-\d+")
if [ -z "$JIRA_ID" ]; then
echo "$MESSAGE" > "$1"
else
echo "[$JIRA_ID] $MESSAGE" > "$1"
fi
它通过向每个提交消息添加分支名称(采用BRANCH-123的形式)来完成其工作。但是,我不希望它与具有自动生成提交消息的合并提交一起使用。
Merge branch 'master' into BRANCH-123
。用我的钩子(Hook)转换成BRANCH-123 Merge branch 'master' into BRANCH-123
我需要编辑脚本以某种方式忽略(不应用钩子(Hook))以
Merge branch
开头的提交。 最佳答案
正如prepare-commit-msg的文件所述,
我们可以测试第二个参数,如果它是merge
,则返回0:
#!/bin/bash
COMMIT_MSG_FILE=$1
COMMIT_SOURCE=$2
SHA1=$3
if [ "${COMMIT_SOURCE}" = merge ];then
exit 0
fi