我想用方括号中的分支名称自动预处理提交消息,例如:
[分行名称]已更改
这是我的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“commit message”,这个钩子就可以正常工作。但是如果我只使用git commit来使用完整的编辑器,那么我的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脚本专家,所以我怀疑我的脚本有问题。希望能得到帮助!
谢谢!

最佳答案

经过大量的谷歌搜索,我修改了我的脚本,使用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命令排除以开头的行,或以空格/制表符后跟开头的行(不完全必要,但仍将其放入)。

关于git - 我的commit-msg钩子(Hook)-使用完整的编辑器时,注释会添加到提交消息中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22940028/

10-13 09:24