2016-03-24 19 views
2

auslösen Wir verwenden ein Git-Modul mit mehreren Submodulen. Um es für den täglichen Gebrauch bequemer zu machen, wollte ich einen Post-Commit-Hook haben, der das Submodul automatisch dem Git-Index im Haupt/Super/Root-Git-Repo/Klon/Modul hinzufügt, wie zum Beispiel git add mychangedsubmodulename Commit bereit, die Commit-Referenz des Submoduls im Haupt-Repo zu aktualisieren und wahrscheinlich weitere Ideen zu erhalten.Kann nicht nach dem Commit git Hook auf Git Submodul

Der .git-Ordner befindet sich im Stammordner des Hauptmoduls und scheint auch das Submodul-ähnliche Material zu enthalten, da das Haupt-Repo mit der Option --recursive geklont wurde. Meine Version von Git ist git version 2.6.4 (Apple Git-63).

Ich könnte leicht eine Post-Commit-Hook in der Hauptrepo erstellen, aber es wird nicht ausgelöst von commits innerhalb eines Submoduls, die ich bisher für richtig und angemessen halte, könnte aber auch ein Hinweis auf eine mögliche Abhilfe sein.

Ich habe versucht, mehrere Post-Commit-Hook-Dateien an verschiedenen Orten auch nach dem question 10848191 ohne Erfolg zu definieren.

Wie kann ich erreichen, dass das Hauptmodul bei Commits in einem Submodul automatisch geändert wird?

Update: Nachdem der Post-Commit-Hook von Submodulen nun manchmal funktioniert, habe ich es geschafft, in das Haupt-Repository zu codieren und git durch Säubern der Umgebungsvariablen erfolgreich aufzurufen.

# clear git environment or git would confuse main and sub repos when crossing boundary by only changing pwd 
while read variable; do 
    unset $variable 
done < <(env | grep "^GIT_" | sed 's/=.*//g') 

Die ursprüngliche Frage war jedoch, wie der Submodul-Haken ausgelöst wird. Dies scheint nur manchmal zu funktionieren.

Antwort

0

Sie können in Ihrem post-commit Haken etwas wie unten verwenden:

git --work-tree=$PWD/.. --git-dir=$PWD/../.git branch

Der obige Befehl aus .git/modules/my-sub-module/hooks/pre-commit Datei auf meinem git version 2.3.2 (Apple Git-55) genommen wird. Ich verwende den obigen Befehl, um alle lokalen Zweige des Hauptrepos aufzulisten.

Hinweis: Leider Verzeichnis wechseln und laufen git-Befehle in der post-commit Haken möglicherweise nicht, weil der git auf einige der vorkonfigurierten Standardeinstellungen und env-Vars zu verlassen. Also in meinem Fall cd path-to-main-repo-directory && git some-command innerhalb meiner .git/modules/my-sub-module/hooks/pre-commit hat mir nicht geholfen.

Sie können auch die manual here für weitere Details überprüfen.

+0

Ereignis obwohl es sehr ähnlich aussieht, wenn nicht sogar identisch mit (http://stackoverflow.com/questions/10848191/git-submodule-commit-hooks) Ich habe es versucht und es funktioniert. Cool, danke! –

+0

@PhilippKunz Großartig, du hast es bereits gelöst, ich habe nur die Befehle hinzugefügt, die für mich arbeiten, was wahrscheinlich einige Stunden für jemanden einsparen könnte, da ich einige Zeit vergeudet habe, als mir 'cd' und' git -C' nicht geholfen haben. :-) – dopeddude

+1

wenn es funktioniert nur manchmal. Ich habe es wieder erlebt, nur um den Haken im Submodul nicht zu feuern, habe aber keine Ahnung warum. Danke, dass du mich ermutigt hast, es erneut zu versuchen, was dann der erste erfolgreiche Versuch war. –