根据手册,post-checkout
Hook 在 git checkout
之后运行(正如预期的那样),但也在 git clone
之后运行>(除非您通过 --no-checkout
)。
很好,现在,考虑以下几点:
- 在
git clone
之前您没有本地存储库 - Hook 在远程之间不同步
存储在与(这实际上不是 Jefromi 在他的回答中所说的那样,但是钩子(Hook)仍然没有执行)--template
一起使用的自定义模板目录中的 Hook 被复制为不可执行的,因此 不 在git clone
之后执行>
post-checkout
Hook 似乎不可能在 git clone
之后执行。尽管如此,位于 http://git-scm.com/docs/githooks 的 githooks
手册页明确说明了避免它被执行的方法,以及在执行时传递的参数,这表明可以在 git-clone
之后执行自定义 Hook 。
那怎么可能呢?我显然在这里遗漏了一些东西。
结果
最佳答案
我想您可以进行自定义安装 - 重命名 .../share/git-core/templates/hooks
中的 Hook 以删除 .sample
后缀。
您还可以创建一个模板目录,其中包含指向存储库中 hooks 目录的符号链接(symbolic link)(例如 post-checkout -> ../../hooks/post-checkout
)。然后,如果克隆的 repo 包含那个特定的钩子(Hook),它就会被执行。
你是对的,但在大多数情况下它不会发生。
编辑:我刚刚对其进行了测试,--template
选项似乎确实保留了权限,因此这是一种更直接的实现方式。你看到什么表明它剥离了那个位?
关于版本的最终决定权:您正在在线查看文档以查找比您正在使用的版本更新的 git。此功能已添加到 dfa7a6c(克隆: checkout 时运行 checkout 后 Hook ); git describe 说这直到 v1.6.2-rc2 才包含在内。
关于git-clone 和 checkout 后 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2141492/