Как установить новый git hook на все существующие (клонированные) репозитории? - PullRequest
1 голос
/ 01 октября 2019

На моей машине ~ 50 репозиториев. Я хотел бы установить недавно созданный Git Hook для всех из них.

Я уже создал папку .git-templates и поместил туда хуки, затем git config --global init.templatedir ~/.git-templates - она ​​работает для новых репозиториев, но как насчет существующих?

Ответы [ 2 ]

2 голосов
/ 01 октября 2019

Если вы используете последнюю версию git (> = 2.9), то я бы порекомендовал использовать переменную core.hooksPath.

Затем вы можете создать отдельный каталог, куда вы положите все свои хуки,Например, /var/myhooks, тогда

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

сделает этот каталог каталогом по умолчанию для всех ваших репозиториев. Как побочный эффект, все хуки под .git/hooks в каждом хранилище будут игнорироваться. Но внутри определенного репозитория вы можете снова переопределить его с помощью своего собственного каталога ловушек:

git config core.hooksPath .git/hooks
0 голосов
/ 01 октября 2019

Просто сделай это. Найдите все репозитории и скопируйте крючки. Вот пример (это может найти больше, чем вы думаете, именно поэтому фактическая копия отображается, а не выполняется, а не просто комментируйте команды, если у вас есть ' в именах путей):

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"
...