git - 忽略prepare-commit-msg git hook的合并提交
问题描述
我想出了以下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 的形式)添加到每个提交消息来完成其工作。但是,我不希望这与具有自动生成提交消息 sa 的合并提交一起使用Merge branch 'master' into BRANCH-123
。用我的钩子转换成BRANCH-123 Merge branch 'master' into BRANCH-123
我需要编辑脚本以某种方式忽略(不应用挂钩)以Merge branch
.
解决方案
正如prepare-commit-msg的文件所说,
它需要一到三个参数。第一个是包含提交日志消息的文件的名称。第二个是提交消息的来源,可以是:消息(如果给出了 -m 或 -F 选项);模板(如果给出了 -t 选项或设置了配置选项 commit.template);合并(如果提交是合并或存在 .git/MERGE_MSG 文件);壁球(如果存在 .git/SQUASH_MSG 文件);或提交,然后是提交 SHA-1(如果给出了 -c、-C 或 --amend 选项)。
如果是,我们可以测试第二个参数并以 0 退出merge
:
#!/bin/bash
COMMIT_MSG_FILE=$1
COMMIT_SOURCE=$2
SHA1=$3
if [ "${COMMIT_SOURCE}" = merge ];then
exit 0
fi
推荐阅读
- javascript - 1 个按钮在引导程序上打开 2 个下拉菜单
- c# - Visual Studio 或 Rider 如何读取使用 System.Diagnostics.Trace.Write 编写的消息?
- python - 在 Python 中使用递归将元素及其类型写入文本文件
- angular - 让 Angular 6 实时感知代码
- php - laravel 5.4查看table的唯一值
- scala - Spark - 是否可以广播功能?
- javascript - 使用 CanvasJS 在图表中显示 Y 轴
- git - 如何使用--no-ff 继续在分支分支上工作?
- unity3d - SyncVar在按钮按下Unity 3d时不会改变Bool
- c# - 使用 RestSharp 获取 Solvemedia 图像