使用Git,如果你要提交,它会在提交消息下包含一个被注释掉的部分。其中包含有关编写提交消息的说明以及正在更改的文件列表。像这样:
# 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 <file>..." to unstage)
#
# modified: important-file.txt
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: some-other-thing.txt
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# untracked.txt
是否可以在此文件中添加更多资料?一个明确的用例是那些使用问题跟踪软件如Trac,Redmine等的用户正在指定额外的语法元素。例如,Redmine用户可以包含问题编号和一些特殊关键字,以便将问题标记为已解决:关键字是“refs”(和“引用”)和“修复”(或“关闭”) - 但我经常发现它很难记住关键词。
如果可以在提交说明的底部附加一些特定于项目的文本,那将会很方便。
有没有现成的方法可以做到这一点,还是我需要攻击一个?作为一个副作用,其他任何VCS(如Mercurial)都有类似的行为吗?
答案 0 :(得分:5)
我使用了commit.template(如here所述)。我本可以使用prepare-commit-msg钩子,但是提交模板可以使工作稍微容易一点,而且我可以将提交模板保留在项目的版本控制中。
答案 1 :(得分:3)
正如其他人所提到的,使用Git执行此操作的直接方法是prepare-commit-message挂钩。
但是,必须考虑该战略的问题。从Pro Git的第7.4章开始:
[客户端钩子脚本]不是 随着一个克隆转移 项目,你必须分发这些 脚本以其他方式然后有 您的用户将其复制到他们的 .git / hooks目录并制作它们 可执行文件。你可以分发这些 项目内或项目中的钩子 单独的项目,但没有办法 自动设置它们。
如Tom Morris所述,请使用commit template。
您可以自定义构建Git,其中包含您的其他说明。当前提交消息中包含的指令在Git源代码中是硬编码的。从line 655开始,请$GIT_SRC/builtin/commit.c
。
这种方法可能不是首选,因为每次发布新版本的Git时都必须应用补丁。
为Git创建一个补丁,添加此功能并将其提交到邮件列表。如果您(或其他人)决定尝试此操作,我首先会从列表中寻求有关如何继续的建议。
Mercurial中的Hook脚本的行为方式类似。来自Mercurial的Chapter 10:权威指南:
在Mercurial中,钩子不是修订版 控制,不要传播的时候 您从存储库克隆或拉取。 原因很简单:一个钩子 是完全随意的 可执行代码。它运行在你的 用户身份,享有您的特权 等级,在你的机器上。
任何人都会非常鲁莽 分布式修订控制系统 实现修订控制的钩子, 因为这会很容易 可剥削的方式颠覆了 修订版用户的帐户 控制系统。
答案 2 :(得分:1)
您可以通过prepare-commit-message
hook调整提交消息。
答案 3 :(得分:0)
我很确定你可以使用prepare-commit-msg钩子。有关详细信息,请查看githooks。