我的机器上有〜50个存储库。我想将新创建的git钩子安装到所有这些钩子上。
我已经创建了.git-templates
文件夹并在其中放置了钩子,然后git config --global init.templatedir ~/.git-templates
-它适用于新存储库,但是现有存储库呢?
我使用的是git
的最新版本(> = 2.9),那么我建议使用core.hooksPath
变量。
然后您可以创建一个单独的目录,在其中放置所有挂钩,例如,/var/myhooks
,然后
git config --global core.hooksPath /var/myhooks
将使该目录立即成为所有存储库的默认挂钩目录。副作用是,每个存储库中.git/hooks
下的所有挂钩都将被忽略。但是在特定的存储库中,您可以使用自己的hooks目录再次覆盖它:
git config core.hooksPath .git/hooks
只需这样做。查找所有存储库并复制钩子。这是一个示例(这可能比您想的要多,这就是为什么实际回显未执行回显的原因,如果您的路径名中可能包含'
,则不要仅对回显的命令进行c&p):
find ~ -name HEAD -execdir test -f config -a -d objects -a -d refs \; \
-execdir mkdir -p hooks \; \
-printf "cp -a ~/.git-templates/hooks '%h'/hooks\\n"