Globaler Git-Haken

3340
tig

Ist es möglich, alle Möglichkeiten zur Erstellung von Git-Repo zu nutzen? Ich kann also ein Skript ausführen, wenn das Repo geklont oder initialisiert wird ... (gibt es andere Möglichkeiten als Verschieben / Kopieren eines Ordners?).

Meine Absicht ist es, alle Repos zu verfolgen, also muss ich nicht alle Verzeichnisse durchgehen, um etwas zu tun (vor allem, git statusweil ich manchmal vergesse, Änderungen vorzunehmen und git gc --auto).

4

2 Antworten auf die Frage

4
Chris Johnsen

Hooks werden (derzeit) ausschließlich pro Repository konfiguriert, sodass vor dem Erstellen eines Repositorys keine aktiven Hooks vorhanden sein können.

Wenn Sie nur einige repositoryspezifische Einstellungen für alle neuen Repositorys identisch initialisieren möchten, können Sie möglicherweise den Repository-Vorlagenmechanismus verwenden .

Mit Ihrer eigenen Vorlage können Sie

  • aktivierte Hooks installieren (durch Bereitstellung einer <template‑dir>/hooks/<hook‑name>Datei),
  • Setze Konfigurationsvariablen (durch Bereitstellung einer <template‑dir>/configDatei) und
  • Pro-Repository-Ausschlussregeln oder -attribute konfigurieren (durch Angabe einer <template‑dir>/info/excludeoder einer <template‑dir/info/attributes>Datei).

Jede Konfigurationsdatei, die sich in einem .gitVerzeichnis befindet, kann in eine Vorlage eingefügt werden, die als Anfangskopie dieser Datei in neuen Repositorys dient, die mit der Vorlage initialisiert werden. Ich vermute, Sie könnten sogar erste Objekte und Referenzen bereitstellen.

Sobald Sie ein Template - Verzeichnis mit Anpassungen gemacht haben muss Sie sagen, git initund git clonewo sie zu finden. Dies kann explizit mit der --templateOption (Git 0.99.4 oder höher) oder implizit mit der GIT_TEMPLATE_DIRUmgebungsvariablen (Git 1.5.0 oder höher) oder implizit durch Festlegen der init.templatedirKonfigurationsvariablen in „global“ (pro Benutzer) oder erfolgen Git-Konfigurationsdateien „System“ (dh ~/.gitconfigoder /etc/gitconfig(variiert je nach Installation); Git 1.7.1 oder höher).

Danke für die Antwort, aber es ist nicht das, wonach ich gesucht habe: Ich möchte alle Repos nachverfolgen, ich habe die Frage um meine Absicht ergänzt. tig vor 14 Jahren 0
0
VonC

Sie können git repos nicht "verfolgen" (wie in "fragen Sie nach einem zentralen Verweis nach der Liste der gerade aktiven git repo).
Jedes git repo ist unabhängig von einem anderen.

Es können zwei Lösungen in Betracht gezogen werden:

  • eine Git-Vorlage wie in Chris 'Antwort, mit einem der clientseitigen Hooks, die bei der ersten Verwendung das Git-Repo in einer "zentralen" Datei registrieren können.
    Diese Datei würde dann von einem externen Skript (extern für git) gelesen, um das relevante git statusoder git gcdas gewünschte zu machen.

  • Wenn alle Ihre Git-Repos in demselben gemeinsamen Verzeichnis deklariert sind, können Sie ein globales übergeordnetes Git-Repo deklarieren und alle Sub-Repos als Submodule hinzufügen . Weiß
    seit git1.7.0, git statuswann ein Submodul nicht festgeschriebene Änderungen enthält.

Anmerkung: Auf "git submodules" gibt es eine ziemlich vollständige Einführung: http://longair.net/blog/2010/06/02/git-submodules-explained VonC vor 14 Jahren 0