2014-10-29 11 views
16

Ich muss mehrere Vorab-Hook-Skripts verwenden. Nicht sicher, wie man damit umgeht. Sollten alle zu einem einzigen großen Vorab-Skript kombiniert werden? Wenn nicht, wie wird mit mehreren vordefinierten Skripten verfahren?Behandeln mehrere Pre-Commit-Hooks

+0

wie http://stackoverflow.com/questions/30104343/multiple-git-hooks-for-the-same-trigger –

Antwort

19

Sollten alle zu einem einzigen großen Vorab-Skript kombiniert werden?

Ja und nein: Sie können nur ein pre-commit Skript deklarieren, so dass dieses Skript verantwortlich sein sollte:

  • Aufruf
  • die tatsächliche pre-commit-Skripte
  • wählte für diejenigen, die eine Bestellung Skripte aufgerufen werden.

So:

  • ein pre-commit Skript
  • mehrere Scripts aufrufen, die jeweils zulassen oder nicht (mit ihren Exit-Status) der Commit fortzufahren.
+6

Eine Möglichkeit, dies zu organisieren wäre, ein 'pre-commit.d' -Verzeichnis zu erstellen, das enthält alle Skripte, die Sie ausführen möchten. Ihr "Pre-Commit" -Skript würde dann alle diese Skripte in den oben beschriebenen Anweisungen ausführen. – TomDotTom

+0

@TomDotTom Basierend auf Ihrem Vorschlag habe ich so etwas unter https://bugs.chromium.org/p/gerrit/issues/detail?id=5999 und https://github.com/tommarshall/git-good-commit implementiert/Ausgaben/19 – sorin

9

können Sie einen delegierenden Skript verwenden, die nur andere Skripte aufruft (subhooks):

https://gist.github.com/carlos-jenkins/89da9dcf9e0d528ac978311938aade43

Verbrauch:

Sie Ihr Bausystem einen symbolischen Link im Git zu erstellen hakt das Verzeichnis in dieses Skript mit dem Namen des Hooks, an dem Sie teilnehmen möchten.

Zum Beispiel pre-commit.

Dieser Haken wird dann ausführen, in alphabetischer Reihenfolge, alle ausführbaren Dateien (subhooks) unter einem Ordner nach dem Haken Typ mit dem Namen gefunden Sie suffixed mit .d besuchen.

Zum Beispiel pre-commit.d.

Wie es aussehen könnte:

.git/hooks/ 
|_ pre-commit -> ../../tools/git/multihooks.py 
|_ pre-commit.d/ 
    |_ 01-cpp_coding_standard 
    |_ 02-python_coding_standard 
    |_ 03-something_else 

Diese Python3 erfordert, aber man konnte kam mit etwas ähnliches mit anderen Technologien.

Verwandte Themen