我想要一个提交消息清理,它不一定会删除消息本身中以#
开头的行。默认--cleanup=strip
会删除以#
字符开头的所有行。
遗憾的是,Trac引擎的wiki格式化程序在代码块的开头使用哈希来表示语法类型。在我的提交消息中使用引擎的语法时,这会产生困难。
示例:
Created demo of perl added to helloworld.pl
{{{
#!/usr/bin/perl
use strict;
# say hi to the user.
print "hello world\n";
}}}
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
# (use "git reset HEAD^1 <file>..." to unstage)
#
# added: helloworld.pl
# and so on and so forth...
我希望在最终记录的提交消息中得到以下结果:
commit 1234567890123456789012345678901234567890
Author: Danny <...>
Date: Wed Apr 7 13:34:29 2010 -0400
Created demo of perl added to helloworld.pl
{{{
#!/usr/bin/perl
use strict;
# say hi to the user.
print "hello world\n";
}}}
我想使用自定义过滤器,从提交消息的底部向上移除以哈希开头的所有行。留下我单独添加的消息中的行。我在哪里或如何在git中指定它?
注意,创建一个sed或perl脚本来执行操作不是问题,只需要知道将它挂钩到git的位置就是问题。
我对我的问题混淆了道歉,我没有意识到它有多模糊。
答案 0 :(得分:4)
我想你会想要用两件事来完成这个:
指定清理模式。 git commit
选择--cleanup=<mode>
;你可以使用--cleanup=whitespace
来防止git剥离任何评论。您可能想要的另一个选择是逐字,其中(惊喜)不会触及该消息。如果您有兴趣,请参阅man page了解其他选项。
使用commit-msg
挂钩编辑消息。如果您之前没有使用过钩子,则手册页称为githooks,它们是放在.git/hooks
中的脚本,这些脚本在适当的时间执行。 commit-msg
挂钩使用单个参数执行,该文件包含建议的提交消息。它可以在适当的位置编辑消息,如果它返回失败(非零),则提交将被中止。因此,将您的自定义剥离脚本编写为.git/hooks/commit-msg
,确保它是可执行的,并且您将被设置。请注意,不跟踪钩子目录;如果你想与他人分享这个,一个常见的方法是将它放在你的知识库中,然后符号链接.git/hooks/commit-msg
到它。