2010-02-26 3 views
11

Eine der unvermeidlichen Macken von git ist die Unfähigkeit, Metadaten über eine Datei zu speichern und abzurufen. Auf dem Mac werden Etiketten zum Beispiel mit "erweiterten Attributen" gespeichert (zugänglich mit xattr), und jeder Befehl checkout/reset/merge/pull löscht diese Attribute, wenn die Datei vom Checkout betroffen ist.Git-Hooks zum Speichern/Abrufen von Metadaten

Ich habe mich umgesehen, ob jemand schon Metadaten-speichernde Skripte geschrieben hat, aber ich kam trocken.

Also, was ich möchte ist tun, um Git Hakensystem verwenden:

  1. lesen Attribute erweitert, wenn Dateien begangen werden,
  2. Schreiben Sie die Attribute in einer Datei im Repository gespeichert, die begangen wird auch ,
  3. Wenden Sie die erweiterten Attribute auf Dateien an, die bei einem Zusammenführen/Auschecken/Zurücksetzen geändert wurden.

Welchen der Haken sollte ich verwenden? Sind post-receive und pre-commit alles was ich brauche? Kann pre-commit auch eine Datei zum Festschreiben hinzufügen (d. H. Nach dem Schreiben der neuen Attribute)?

+0

Warum die downvote (die Sie in Ihren Commits umfassen können)? Wenn die Frage nicht zufriedenstellend ist, hinterlasse einen Kommentar, damit ich ihn korrigieren kann. –

Antwort

3

Die gibak tool verwendet pre-commit und post-checkout seiner ometastore Tool können Speichern/Wiederherstellen von Metadaten (optional mit xattrs).

Sie möchten nicht post-receive. Es wird auf dem Remote-Ende von Pushs ausgeführt. Es wird für leere Repositories ausgeführt, so dass es nicht darauf ankommt, Dateien aus dem Inhalt eines Push-Commits zu aktualisieren. Tun Sie es in post-checkout, wo Sie wissen, dass Sie einen funktionierenden Baum zur Verfügung haben werden.

+1

Post-Merge ist auch eine, die verwendet werden sollte. Siehe githooks (5) http://ftp.kernel.org/pub/software/scm/git/docs/githooks.html –

+0

@Seth Johnson: guter Fang. Sie könnten nach der Zusammenführung die gleiche Art von Arbeit wie "Post-Checkout" ausführen, um alle Metadaten neu zu erstellen, die verloren gegangen sind, als die Zusammenführung Dateien umschrieb. Das Zusammenführen von Metadaten kann jedoch schwierig sein, je nachdem, wie die von Ihnen ausgewählten Tools sie speichern und für das Anzeigen/Entfernen verfügbar machen. –

+0

Wenn sich jemand anderes für ein solches Tool wie Gibak interessiert, sieht Slug (https://github.com/hbaragar/slug) so aus, als wäre es eine kürzlich gepflegte Verzweigung von gibak mit der Möglichkeit, in einem Remote-Repository zu sichern. – mormegil

0

metastore in der Lage, Datei-Metadaten zu speichern und wiederherzustellen, ist es in einer separaten Datei zu speichern