J'ai écrit un crochet post-commit Git et cela fonctionne correctement. Cependant, je souhaite ajouter ce crochet à appliquer à tous les référentiels 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 hooks du répertoire du projet, cependant, cela ne semblait 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 pour l'avenir - peut-être un modèle git-init?
Je souhaite ajouter ce crochet à tous les référentiels git actuels (et futurs) sur lesquels je travaille
Avec git 2.9+ (juin 2016), tout ce que vous feriez est:
git config --global core.hooksPath /path/to/my/centralized/hooks
Voir " modifier les hooks par défaut ": ceci a été fait pour gérer les hooks centralisés.
Depuis la version 1.7.1 de git, vous pouvez configurer init.templatedir dans votre gitconfig pour indiquer à git où chercher les modèles.
Définissez-le comme ceci:
git config --global init.templatedir '~/.git_template'
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 voulez dans ~/.git_template/hooks
. Les référentiels existants peuvent être réinitialisés avec les modèles appropriés en exécutant git init
dans le même répertoire .git
est dans.
Pour les versions de git antérieures à la version 1.7.1, exécuter git init --template ~/.git_template
fonctionnera si vous êtes comme moi et que vous souhaitez toujours gérer votre .git_template
dir avec le reste de vos fichiers de points. Vous pouvez aussi utiliser le $GIT_TEMPLATE_DIR
environnement à dire git init
où se trouve votre répertoire de modèles.
Si vous les voulez partout sur votre système (y compris les utilisateurs autres que vous), vous pouvez modifier le contenu du répertoire de modèles installé - ceux-ci se trouvent dans $PREFIX/share/git-core/templates/hooks
, où $PREFIX
est probablement /usr/local
ou /usr
.
Si vous voulez que cela soit juste pour vous, alors oui, la chose la plus simple serait le --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 paramètres par défaut que vous souhaitez conserver (crochets individuels, répertoire d'informations ...), puis votre propre contenu dans hooks/post-commit
et tout ce que vous souhaitez personnaliser.
Une approche minimaliste consiste à créer un git_hooks/
_ répertoire dans votre référentiel pour suivre les points d'ancrage que vous écrivez pour ce projet, le signaler à de futurs utilisateurs en le mentionnant dans un README
et compter sur eux pour faire le bon choix après leur clonage. . Cela fait un moment que je réfléchis à cela et que je choisis une approche progressive. Plus tard, je pourrais envisager d'utiliser un outil tel que git-hooks .