git help commit
说以下内容:
--cleanup=<mode>
This option determines how the supplied commit message should be
cleaned up before committing. The <mode> can be strip, whitespace,
verbatim, or default.
strip
Strip leading and trailing empty lines, trailing whitespace,
and #commentary and collapse consecutive empty lines.
whitespace
Same as strip except #commentary is not removed.
verbatim
Do not change the message at all.
default
Same as strip if the message is to be edited. Otherwise
whitespace.
我想确定将从commit-msg hook应用哪种清理模式(必要时正确使用commit.cleanup
config value)。 I run some validations on my commit messages我想确保我看到Git正在计划使用的内容。
或者,我会接受一种方法来获取清理后的提交消息文本(也许我可以欺骗Git为我清理它?)。这对我的用例非常有用,因为那时我不必担心重新实现任何清理模式。
答案 0 :(得分:10)
不幸的是,在当前(ish)git源中,清理模式不会以任何方式传递给钩子。 --cleanup
的参数仅存储在(static
,本地到builtin/commit.c
)变量cleanup_mode
中,而不是导出(例如,作为参数或环境变量)到各种钩。
(添加包含该设置的环境变量应该很容易。如果您想亲自体验一下,请参阅builtin/commit.c
函数parse_and_validate_options
;打电话给setenv()
适当的论点。)
答案 1 :(得分:0)
这就是我在commit-msg挂钩中所做的事情。 (我需要检查行长,但忽略将被注释掉的长行。)
git config commit.cleanup
。default
,请检查git var GIT_EDITOR
:如果等于:
,则清理模式为whitespace
,否则为strip
。 / li>
--cleanup
选项感到幸福。对于每个git help hooks
(请参阅pre-commit条目),这样做的原因是,在不编辑提交的上下文中调用所有相邻的钩子都将收到GIT_EDITOR=:
。对于合并和在没有--cleanup
的情况下进行提交,这足以确定清除模式。