我的commit-msg钩子 - 当使用完整编辑器时,注释被添加到提交消息中

时间:2014-04-08 14:26:31

标签: git

我想在方括号中自动将我的提交消息与我的分支名称一起添加,例如:

  

[分行名称]进行了更改

这是我的commit-msg钩子:

#!/bin/sh
#
# Automatically adds branch name and branch description to every commit message.
#
BRANCH=$(git symbolic-ref HEAD | awk -F'/' '{print $3}')

if [ -n "$BRANCH" ]; then
        echo ["$BRANCH"'] '$(cat "$1") > "$1"
fi

如果我使用 git commit -am"提交消息" ,此挂钩工作正常。但是如果我只使用 git commit 来使用完整的编辑器,我的提交消息就会附加注释,例如:

[TestHook] Test # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # On

我从web上的一个例子中复制了commit-msg脚本,并根据我的需要进行了一些改动。但是,我没有bash脚本专家所以我怀疑我的脚本存在问题。希望得到一些帮助!

谢谢!

2 个答案:

答案 0 :(得分:2)

经过大量谷歌搜索,我更正了我的脚本使用grep而不是cat,现在它的工作非常精彩:

#!/bin/sh
#
# Automatically adds branch name to every commit message.
#
BRANCH=$(git symbolic-ref HEAD | awk -F'/' '{print $3}')

if [ -n "$BRANCH" ]; then
        echo ["$BRANCH"'] '$(egrep -v '(^#|^\s*$|^\s*\t*#)' "$1") > "$1"
fi

grep命令会排除以#开头的行,或者以空格/制表符开头,然后是#(不是完全必要的,但无论如何都要扔掉它)。

答案 1 :(得分:1)

您可以尝试更改提交消息模板(请参阅git commit):

  

编辑提交消息时,使用给定文件中的内容启动编辑器    commit.template 配置变量通常用于向命令隐式提供此选项。

尝试:

git config commit.template /path/to/empty/commit/message/template

如果该模板文件为空,则git commit不应附加任何内容。