2010-01-12 15 views
25

Wir verwenden benutzerdefinierte Git Haken in unserem Projekt.Git Haken Management

Hooks werden im Repository eines Projekts gespeichert, und wenn sie sich ändern, muss jeder Benutzer, um eine neue Version zu erhalten, diese manuell in sein .git/hooks-Verzeichnis kopieren. Das ist eher unbequem.

Eine Möglichkeit, dies zu verbessern, besteht darin, .git/hooks einen Symlink in worktree zu machen. Dies würde jedoch bedeuten, dass jede Verzweigung (sogar die lokalen Feature-Zweige des Benutzers, die gerade entwickelt werden) die aktuellste Version von Hooks haben sollte. Dies ist auch nicht bequem.

Wie würden Sie das Problem lösen?

Antwort

12

Pflegen Sie ein separates Repository Ihrer Hooks und symlink in das.

Ich stimme zu, es wäre nett, wenn Git einen eingebauten Mechanismus zum Verbreiten von Hook-Skripten hätte, aber das tut es nicht.

+1

Das ist natürlich eine Option, aber das ist ein weiteres Repository, das am Morgen aktualisiert wird ... Für jeden Entwickler. Ich schätze, ich brauche noch mehr Automatisierung ... –

0

Wir haben .git/hooks einen Symlink in den Arbeitsbaum eingefügt.

Für die seltenen Gelegenheiten, wenn jemand braucht Dateien zu begehen, dass die Haken ablehnen, verwenden wir git commit --no-verify

+0

Das git commit --no-verify ist gefährlich. Es ist schwer, wenn Sie schlechte Commits haben. –

+1

@Alexander, Git Rebase wird auch ein --no-Verify-Flag. –

+0

Danke, ich habe es verpasst. Immer noch ... ein Hack. :-) –

2

Sie könnten die .git Verzeichnis eine Git-Repository Repository machen, und nur Haken und andere Config, um es hinzuzufügen, die objects, refs usw. Verzeichnisse und Dateien wie index seine .gitignore hinzufügen. Nicht nur das, Sie können auch einen Post-Receive-Hook einrichten, um den Metarepo von seinem Ursprung zu aktualisieren. Sobald Sie die Erstkonfiguration eingerichtet haben, können Sie Updates ohne zusätzlichen Aufwand abrufen.

Ich arbeite die Details aus, wie, was in der Ignorierliste gehen sollte; Ich behalte die Ergebnisse in den Zweigen this repo.

1

Für NodeJS-basierte Projekte, empfehle ich Ihnen einen Blick auf, ghooks.