如何为git创建自定义清理模式?

时间:2010-04-07 14:41:42

标签: git trac git-commit

我想要一个提交消息清理,它不一定会删除消息本身中以#开头的行。默认--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的位置就是问题。

我对我的问题混淆了道歉,我没有意识到它有多模糊。

1 个答案:

答案 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到它。