Bonjour,
Lorsque nous travaillons sur des projets de développement, nous apprécions pouvoir compter sur notre gestionnaire de dépôt pour réaliser des opérations automatiquement lorsque se produisent certains événements.
C’est le cas ici pour moi lorsque je commit mes modifications dans ce blog Hugo : un script exécute la compilation et transfère les modifications sur le serveur sans que j’aie à m’en préoccuper.
Nous parlons ici bien sûr des crochets client (côté machine de développement).
Historiquement, et par défaut, nous créons des crochets (hooks) dans le dossier hooks caché dans les méandres du dossier .git.
Deux inconvénients à cela :
- la plupart des EDI ne nous donnent pas accès facilement à ce dossier (pour nous protéger) ;
- les fichiers de
crochetssont dans un espace non suivi par le gestionnaire de versions.
Je présente ici une méthode simple et pratique pour gérer les crochets gits client.
Création des crochets (hooks) git dans un dossier du projet#
Nous pouvons créer un dossier hooks dans la racine de notre projet et y créer et éditer nos scripts.
chmod u+x qui va bien.Pour indiquer à git d’utiliser ce dossier en lieu et place du dossier par défaut .git/hooks dans le projet en cours, nous utilisons la commande
| |
--local est généralement omis car c’est le comportement par défaut.Dorénavant, sans que nous ayons besoin de « bidouiller » comme avant la version 2.9 de git, et sauf mention contraire dans gitignore, nos crochets git (hooks) sont sauvegardés et versionnés avec le reste de notre projet.
Niveaux local, global et system#
Il est possible de définir des crochets git
- au niveau
localcomme nous venons de le voir ; - au niveau
globalet - au niveau
system(sous réserve de disposer des privilèges associés)
Il est possible d’indiquer un chemin absolu ou relatif.
Nous pouvons ainsi adopter la même convention pour tous nos projets, avec la variante immédiate de la commande au niveau projet :
| |
git ira voir dans le dossier hooks du dépôt dans lequel nous nous trouvons lorsque nous l’exécutons.
Quels sont les fichiers impactés ?#
Même si nous n’avons pas besoin de les éditer, il est bon de savoir où ils sont par défaut dans Debian et Linux généralement :
- local :
.git/config; - global :
~/.gitconfiget - system :
/etc/gitconfig.
Ces fichiers sont créés si nécessaire (ils n’existent pas s’il n’y a rien à mettre dedans).
Vérifier la configuration qui s’applique#
La commande simple et laconique qui retourne le paramètre qui s’applique est :
| |
Nous obtenons plus d’informations avec :
| |
- Si plusieurs paramètres existent, ils sont listés ;
- les niveaux sont indiqués lisiblement via les chemins des fichiers.
Exemple :
| |
=> C’est hooks (défini dans le cadre du projet) qui s’applique ici.
global et system pour savoir si nous avons intérêt à reprendre tout ou partie de ce qui est prévu là-bas au niveau du projet.Supprimer un paramétrage personnalisé#
Pour revenir à l’état par défaut de git, ou pour supprimer sélectivement un des paramètres, nous disposons des commandes :
| |
Quel niveau s’applique ?#
Le niveau le plus proche l’emporte : Local > Global > System > Default.
Si nous avons défini un paramètre au niveau d’un dépôt (local), c’est celui-ci qui s’applique.
Sinon, le paramètre au niveau global et ainsi de suite.
En l’absence de paramétrage spécifique, c’est la valeur par défaut qui s’applique : .git/hooks dans le dépôt en cours.
Désactiver les crochets (hooks)#
En cas de besoin, il suffit d’indiquer le dossier /dev/null.
Ceci peut être utile lorsque nous voulons exécuter une commande précise sans déclencher les scripts qui devraient en principe être exécutés :
| |
Au plaisir,
Marc JESTIN
https://marcjestin.fr
Documentation officielle : https://git-scm.com/docs/git-config#Documentation/git-config.txt-corehooksPath.