Ich muss bei jeder Ausführung einige Aktionen für mein Projekt ausführen (gettext * .mo-Nachrichtendateien vorbereiten) git pull. Gibt es einen geeigneten Git-Haken, den ich bitte für diesen Zweck verwenden könnte?
@ Alan: Das ist definitiv kein Duplikat. Diese Frage bezieht sich auf einen Haken auf der lokalen Seite, auf der Sie laufen git pull. Bei dem von Ihnen verknüpften handelt es sich um das Auslösen eines Hakens auf der Fernbedienung , wenn jemand daran zieht. (Und es ist eine sehr seltsame Frage - es impliziert, dass sie ein nicht nacktes zentrales Repo verwenden ...)
Cascabel
2
@ Alan: Leicht genug zu übersehen, wenn Sie überfliegen - hoffe, ich war nicht zu hart. Ich werde nur paranoid, wenn Fragen falsch geschlossen werden, da es so viel länger dauert, bis sich die Stimmen wieder öffnen.
Cascabel
1
Jefromi: Du hast absolut recht. Kein Grund zur Sorge. Ich war nur traurig, dass ich überflogen und das Schließen eingeleitet habe.
Alan Haggai Alavi
Antworten:
184
Die githooksManpage ist eine vollständige Liste der Hooks. Wenn es dort nicht ist, existiert es nicht.
Das heißt, es gibt einen Post-Merge-Hook, und alle Pulls enthalten einen Merge, obwohl nicht alle Merges Pulls sind. Es wird nach dem Zusammenführen ausgeführt und kann das Ergebnis nicht beeinflussen. Es wird nie ausgeführt, wenn es Konflikte gab; Sie müssten das mit dem Post-Commit-Hook aufnehmen, wenn es wirklich wichtig ist, oder es manuell aufrufen.
@Jefromi "Alle Pulls beinhalten eine Zusammenführung", auch wenn ich eine Pull-Rebase mache?
FMaz008
11
Es wurde auch festgestellt, dass die Zusammenführung beim Ausführen niemals ausgeführt wird, git pullwenn keine Änderungen vorgenommen werden müssen (Sie sind bereits auf dem neuesten Stand).
Joe Bergantine
11
@jbergantine: Ich glaube, ich war in meiner Antwort ungenau - alle Pulls, die keine No-Ops sind, beinhalten eine Zusammenführung. Aber ... im Allgemeinen denke ich nicht, dass Sie Maßnahmen ergreifen möchten, wenn jemand eine No-Op-Zusammenführung durchführt, wenn Sie versuchen, bei einer Zusammenführung Maßnahmen zu ergreifen. Zum Beispiel wäre es eine Verschwendung für das OP, diese Dateien neu zu erstellen, wenn sich nichts geändert hat.
Cascabel
12
Wenn Sie wirklich jedes Mal etwas tun möchten, wenn Sie ziehen ... könnten Sie den Alias 'git pull' verwenden, damit Sie ein Skript aufrufen, das den git pull ausführt, und dann etwas anderes tun
Shadow Radiance
13
git pullwith rebase (entweder mit --rebaseoder mit der Konfiguration pull.rebase=true) enthält keine Zusammenführung und löst den Post-Merge-Hook nicht aus. In diesem Fall können Sie angeben --no-rebase, ob der Hook ausgelöst werden soll, oder den Hook nach dem Umschreiben verwenden.
git pull
. Bei dem von Ihnen verknüpften handelt es sich um das Auslösen eines Hakens auf der Fernbedienung , wenn jemand daran zieht. (Und es ist eine sehr seltsame Frage - es impliziert, dass sie ein nicht nacktes zentrales Repo verwenden ...)Antworten:
Die
githooks
Manpage ist eine vollständige Liste der Hooks. Wenn es dort nicht ist, existiert es nicht.Das heißt, es gibt einen Post-Merge-Hook, und alle Pulls enthalten einen Merge, obwohl nicht alle Merges Pulls sind. Es wird nach dem Zusammenführen ausgeführt und kann das Ergebnis nicht beeinflussen. Es wird nie ausgeführt, wenn es Konflikte gab; Sie müssten das mit dem Post-Commit-Hook aufnehmen, wenn es wirklich wichtig ist, oder es manuell aufrufen.
quelle
git pull
wenn keine Änderungen vorgenommen werden müssen (Sie sind bereits auf dem neuesten Stand).git pull
with rebase (entweder mit--rebase
oder mit der Konfigurationpull.rebase=true
) enthält keine Zusammenführung und löst den Post-Merge-Hook nicht aus. In diesem Fall können Sie angeben--no-rebase
, ob der Hook ausgelöst werden soll, oder den Hook nach dem Umschreiben verwenden.post-merge
- Weitere Informationen zur Verwendung finden Sie unter https://git-scm.com/docs/githooks#_post_merge .quelle