git hooks:有没有克隆钩子?

时间:2012-04-19 12:27:37

标签: git githooks git-clone

我们希望在外部数据库中存储有关提交的一些元信息。在克隆或结帐期间,应该引用此数据库,并将元信息复制到克隆的repo中的文件。数据库是必需的,而不仅仅是使用文件是为了索引和搜索等...

我想如果有一个克隆钩子,我们可以触发它。我在.git / hooks中找不到样本中的克隆挂钩。有吗?客户端唯一的可能性是post-checkout hook?

4 个答案:

答案 0 :(得分:23)

好的,一种方法是使用clone --template选项。

指定客户端挂钩将作为值存储到--template开关的位置。钩子被复制到克隆,并立即触发post-checkout钩子!

答案 1 :(得分:12)

当您克隆远程存储库时,您无法运行任何客户端挂钩,因为挂钩是您的工作副本的本地挂钩,并且您从头开始创建一个挂钩。当您从远程存储库中新的更改时,git将运行您的本地post-merge挂钩(如果存在)。

由于 pull 操作,服务器上没有任何内容运行。 push 操作将触发服务器的updatepost-update挂钩。

有关详细信息,请参阅Git Book

答案 2 :(得分:8)

不,没有任何克隆挂钩。

答案 3 :(得分:0)

我来晚了,但是有一种解决方法:

  1. 捕获git clone的执行并使用trap set_var_on_git_clone DEBUG设置变量,其中set_var_on_git_clone是用户定义的函数。 (例如https://gist.github.com/KeyAmam/a6afcabc3a724fc4a541aca7629c3ff6

  2. 检查post-checkout脚本中的变量,并做一些处理。在脚本末尾清除变量。 (例如https://gist.github.com/KeyAmam/6a0e8805c0b6a662adb6bcf8118a089a

这仅在Bash中有效,但是您可以在其他shell中做类似的事情。