De vraag zegt alles. Is er een manier om een actie uit te voeren voor het samenvoegen? Ik vermoed dat er een manier is om gebruik te maken van een pre-commit
hook, maar ik weet het niet helemaal zeker.
Antwoord 1, autoriteit 100%
Je kunt proberen de prepare-commit-msg
hook te gebruiken. Het tweede argument is merge
“als de commit een merge is of als er een .git/MERGE_MSG
bestand bestaat”. Een exit-status die niet nul is, zal de vastlegging afbreken.
Ik denk niet dat dit zal werken met een fast-forward merge, aangezien er geen commit-bericht zal zijn.
Meer informatie over hooks: https://www .kernel.org/pub/software/scm/git/docs/githooks.html#_prepare_commit_msg
Antwoord 2, autoriteit 74%
Met Git 2.24 (Q4 2019), geen script-wrapper of ‘prepareer-message hook’ nodig.
Er is een nieuwe “pre-merge-commit” hook geïntroduceerd.
Zie commit bc40ce4, commit 6098817, Michael J Gruber (mjg
).
Zie commit f78f6c7(07 aug 2019) door Josh Steadmon (steadmon
).
(Samengevoegd door Junio C Hamano — gitster
—in commit f76bd8c, 18 sep 2019)
git-merge
: eerpre-merge-commit
hook
git-merge
respecteert de pre-commit hook niet bij het automatisch samenvoegen
commits, en om compatibiliteitsredenen zal dit blijven.Introduceer een
pre-merge-commit
hook die wordt aangeroepen voor een automatische merge
commit net zoals pre-commit wordt aangeroepen voor een niet-automatische merge commit
(of een andere verplichting).
De documentatiebevat nu:
pre-merge-commit
Deze hook wordt aangeroepen door
git-merge
.
Er zijn geen parameters voor nodig en het wordt aangeroepen nadat de samenvoeging met succes is uitgevoerd en voordat het voorgestelde vastleggingslogbericht is verkregen om een vastlegging te doen.
Afsluiten met een niet-nul status van dit script zorgt ervoor dat hetgit merge
commando afbreekt voordateen commit wordt gemaakt.De standaard ‘pre-merge-commit’-hook, indien ingeschakeld, voert de ‘pre-commit’-hook uit, als deze laatste is ingeschakeld.
Deze hook wordt aangeroepen met de omgevingsvariabele
GIT_EDITOR=:
als het commando geen editor zal oproepen om het commit-bericht te wijzigen.Als de samenvoeging niet automatisch kan worden uitgevoerd, moeten de conflicten worden opgelost en moet het resultaat afzonderlijk worden vastgelegd (zie
git-merge
).
Op dat moment wordt deze hook niet uitgevoerd, maar de ‘pre-commit
‘ hook wel, als deze is ingeschakeld.
Antwoord 3, autoriteit 7%
Een andere goede oplossing zou zijn om een shellscript toe te voegen, noem het zoals je wilt,
voeg dan deze regels toe aan het script:
git() {
if [ "$1" == "merge" ]; then
echo "seems to work like a charme"
fi
command git "$@"
}
git "$@"
Maak dan een
alias git="./my-pre-merge-script.sh"
Dan bent u klaar om te gaan. Je hebt zojuist je eigen pre-merge hook toegevoegd.
Ik weet dat je geen toegang hebt tot welke argumenten git dan ook zou doorgeven aan een echte pre-merge hook, maar je kunt nu bestanden voorbereiden of wat je maar wilt voorbereiden voor merge; Persoonlijk ben ik erg blij met deze aanpak: ik heb 2 of 3 hele dagen besteed aan het vinden van iets voor pre-merge, daarna moest ik het pre-commit-bericht gebruiken dat ik niet nauwkeurig genoeg vond voor mijn behoeften. Dit lost al mijn problemen op. Ik hoop dat dit iemand in de toekomst helpt.