githooks(5)
===========
NAME
----
githooks - Hooks(钩子) used by git
SYNOPSIS
--------
$GIT_DIR/hooks/*
简介
-----------
Hooks(钩子),是一些存放于`$GIT_DIR/hooks`文件夹的小脚本,在特定条件下触发动作.
当执行'git init',几个示例hook将复制到新资源库的hooks文件夹, 但默认情况下他们都是禁用状态.
要启用一个hook(钩子),请移除其`.sample`后缀.
注意: 你还需要为这些hook(钩子)添加可执行权限(译者注: 仅针对非Windows系统, chmod u+x XXX).
然而,在新创建的资源库中, - 那些`.sample`默认已经是可执行的(译者注: 并非如此!!).
本文档描述的是当前已经等于的hooks(钩子).
HOOKS(钩子)
-----
applypatch-msg
~~~~~~~~~~~~~~
这个hook由'git am'脚本触发. 它将接受一个参数,即将提交的commit msg的临时文件路径.
如果这个hook以非0状态退出,那么'git am'将在patch(补丁)应用之前取消.
这个hook可以用于修改message(信息)文件, 用来匹配项目的规范格式(如果有的话).
也可以用于校验commit msg,并在必要时拒绝提交.
缺省的'applypatch-msg' hook, 当其启用时,将调用'commit-msg' hook.
pre-applypatch
~~~~~~~~~~~~~~
这个hook由'git am'脚本触发. 它并不接受参数, 当patch(补丁信息)已经应用,且commit尚未执行
之前被调用.
如果以非0状态退出, 那么working tree(工作树)将不会被提交,但patch已经被应用.
它可以用于检查当前的working tree(工作树),当其无法通过某个特定测试时,拒绝进行提交.
缺省的'pre-applypatch' hook, 当其启用时,将调用'pre-commit' hook.
post-applypatch
~~~~~~~~~~~~~~~
这个hook由'git am'脚本触发. 它并不接受参数, 在patch已经应用且commit已经完成后执行.
这个hook主要用于通知, 而且对'git am'的输出无影响.
pre-commit
~~~~~~~~~~
这个hook由'git commit'触发, 且可以通过`--no-verify` 来略过. 它并不接受参数, 在commit msg被创建之前执行.
如果以非0状态退出,将导致'git commit'被取消.
缺省的'pre-commit' hook, 当启用时, 将捕捉以空白字符结尾的行,如果找到这样的行,则取消提交.
(译者注: 事实上并非如此,而是查找非ascii文件名!!)
所有的'git commit' hooks在执行时,如果没有指定编辑器,那么都附带一个环境变量`GIT_EDITOR=:`
prepare-commit-msg
~~~~~~~~~~~~~~~~~~
这个hook由'git commit',在准备好默认log信息后触发,但此时,编辑器尚未启动.
它可能接受1到3个参数.