web-dev-qa-db-fra.com

Comment pourrais-je écrire un hook avant la fusion dans Git?

La question dit tout. Existe-t-il un moyen d'effectuer une action avant une fusion? J'imagine qu'il existe un moyen d'utiliser un hook pre-commit, mais je ne suis pas tout à fait sûr.

36
joshin4colours

Vous pouvez essayer d'utiliser le hook prepare-commit-msg. Le deuxième argument sera merge "si la validation est une fusion ou un fichier .git/MERGE_MSG existe". Un état de sortie différent de zéro annulera la validation.

Je ne pense pas que cela fonctionnera avec une fusion à avance rapide, car il n'y aura pas de message de validation.

Plus d'infos sur les hooks: https://www.kernel.org/pub/software/scm/git/docs/githooks.html#_prepare_commit_msg

16
Kousha

Une autre solution intéressante serait d’ajouter un script Shell, appelez-le comme vous le souhaitez, Puis ajoutez ces lignes au script:

git() {
    if [ "$1" == "merge" ]; then
        echo "seems to work like a charme"
    fi
    command git "$@"
}

git "$@"

Puis faire un

alias git="./my-pre-merge-script.sh"

Alors tu peux y aller. Vous venez d'ajouter votre propre point d'ancrage avant la fusion ... Je sais que vous n'avez pas accès aux arguments que git transmettrait à un véritable point d'ancrage avant la fusion, mais vous pouvez préparer des fichiers ou tout ce que vous voulez préparer pour la fusion maintenant ; Personnellement, je suis très heureux de cette approche: j'ai passé 2 ou 3 jours entiers à trouver quelque chose à pré-fusionner, puis j'ai dû choisir le pré-commit-msg que je n'ai pas trouvé assez précis pour mes besoins. Cela résout tous mes problèmes. J'espère que cela aidera tout le monde à l'avenir.

0
ElectRocnic