如何将新的git hook安装到所有现有(克隆的)存储库?

问题描述 投票:1回答:2

我的机器上有〜50个存储库。我想将新创建的git钩子安装到所有这些钩子上。

我已经创建了.git-templates文件夹并在其中放置了钩子,然后git config --global init.templatedir ~/.git-templates-它适用于新存储库,但是现有存储库呢?

git githooks
2个回答
2
投票

我使用的是git的最新版本(> = 2.9),那么我建议使用core.hooksPath变量。

然后您可以创建一个单独的目录,在其中放置所有挂钩,例如,/var/myhooks,然后

git config --global core.hooksPath /var/myhooks

将使该目录立即成为所有存储库的默认挂钩目录。副作用是,每个存储库中.git/hooks下的所有挂钩都将被忽略。但是在特定的存储库中,您可以使用自己的hooks目录再次覆盖它:

git config core.hooksPath .git/hooks

0
投票

只需这样做。查找所有存储库并复制钩子。这是一个示例(这可能比您想的要多,这就是为什么实际回显未执行回显的原因,如果您的路径名中可能包含',则不要仅对回显的命令进行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"
© www.soinside.com 2019 - 2024. All rights reserved.