J'ai écrit un hook post-commit Git et cela fonctionne correctement. Cependant, je veux ajouter ce hook pour s'appliquer à tous les dépôts git actuels (et futurs) sur lesquels je travaille. J'ai essayé d'ajouter le crochet à mon ~/.git/hooks/
au lieu de dans le répertoire des crochets dans le répertoire du projet, mais cela ne semble pas fonctionner.
Existe-t-il un moyen de créer des hooks Git globaux qui s'appliqueront à tous les référentiels de mon système (sans avoir à les copier dans chaque répertoire de projet)? Sinon, quelle serait la meilleure solution à l'avenir - peut-être un modèle git-init?
Réponses:
Avec git 2.9+ (juin 2016), tout ce que vous feriez serait de:
Voir " changer les hooks git par défaut ": cela a été fait pour gérer les hooks centralisés.
la source
/.git/hooks/pre_commit
puis-je le signaler?Depuis git 1.7.1, vous pouvez définir init.templatedir dans votre gitconfig pour indiquer à git où chercher les modèles.
Réglez-le comme ceci:
Par la suite, les nouveaux référentiels que vous créez ou clonez utiliseront ce répertoire pour les modèles. Placez les crochets que vous souhaitez
~/.git_template/hooks
. Les référentiels existants peuvent être réinitialisés avec les modèles appropriés en s'exécutantgit init
dans le même répertoire que celui.git
de.Pour les versions git antérieures à 1.7.1, l'exécution
git init --template ~/.git_template
fonctionnera si vous êtes comme moi et que vous souhaitez toujours gérer votre.git_template
répertoire avec le reste de vos fichiers dot. Vous pouvez également utiliser l'$GIT_TEMPLATE_DIR
environnement pour indiquergit init
où se trouve votre répertoire de modèles.la source
git init
git init
n'a pas vraiment mis à jour les crochets pour moi. Il semble qu'il n'écrase pas les fichiers qui s'y trouvent déjà. stackoverflow.com/questions/10791486/ . Au lieu de cela, vous devez d'abord supprimer les anciens fichiers de hook.Si vous les voulez partout sur votre système (y compris les utilisateurs en plus de vous), vous pouvez modifier le contenu du répertoire de modèles installé - ceux-ci se trouvent
$PREFIX/share/git-core/templates/hooks
, où$PREFIX
est probablement/usr/local
ou/usr
.Si vous voulez que ce soit juste pour vous, alors oui, la chose la plus simple serait l'
--template
option de git-init. Vous pouvez facilement conserver un répertoire de modèles personnel contenant des liens symboliques vers la version installée des valeurs par défaut que vous souhaitez conserver (crochets individuels, répertoire d'informations ...), puis votre propre contenuhooks/post-commit
et tout ce que vous souhaitez personnaliser.la source
git init
nouveau et il a ajouté mon nouveau crochet./Applications/SourceTree.app/Contents/Resources/git_local/share/git-core/templates/hooks
mingw64\share\templates\hooks
(ou mingw32 pour 32 bits)mingw64\share\git-core\templates\hooks
(gfw 2.25)Une approche minimaliste consiste à créer un
git_hooks/
répertoire dans votre référentiel pour suivre les crochets que vous écrivez pour ce projet, le porter à l'attention des futurs utilisateurs en le mentionnant dans unREADME
, et compter sur eux pour faire la bonne chose après leur clonage. J'ai réfléchi à cela pendant un certain temps et j'ai choisi une approche progressive. Sur la route, je pourrais envisager d'utiliser un outil comme les git-hooks .la source