我想出了以下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

09-04 02:52
查看更多