3

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

我对我的问题的困惑表示歉意,我没有意识到它是多么模糊。

4

1 回答 1

4

我认为您需要使用两件事来完成此操作:

  • 指定清理模式。git commit--cleanup=<mode>选择权;您可以使用它--cleanup=whitespace来防止 git 删除任何注释。您可能想要的另一个选择是逐字逐句,这(惊喜)不会触及信息。如果您有兴趣,请参阅手册页以了解其他选择。

  • 使用commit-msg钩子在适当的位置编辑消息。如果您以前没有使用过钩子,手册页称为githooks,它们是放置在.git/hooks其中的脚本,在适当的时间执行。该commit-msg钩子使用单个参数执行,该文件包含建议的提交消息。它可以就地编辑消息,如果返回失败(非零),则提交将被中止。因此,将您的自定义剥离脚本编写为.git/hooks/commit-msg,确保它是可执行的,并且您将被设置。请注意,不会跟踪 hooks 目录;如果你想与其他人分享它,一个常用的方法是将它放在你的存储库中的某个地方,然后符号链接.git/hooks/commit-msg到它。

于 2010-04-07T16:01:23.517 回答