GIT: Aktueller Hash und letztes Tag in der Datei beim Commit haben

8

das ist eher eine know-how Frage:

Ich versioniere mit git und sende Dateien für einen PHP-CMS mit rsync an die Test- oder Produktions-Site. Jetzt möchte ich auf dem Laufenden halten, welche Commit derzeit mit einem idiotensicheren und automatisierten System bereitgestellt wird. Ich habe darüber nachgedacht:

Richten Sie einen Git Hook ein, um eine Textdatei mit dem neuesten Tag und Commit Hash hinzuzufügen / zu aktualisieren. Dann kann ich das Commit leicht nachschlagen.

Mein Problem ist, dass das Skript zum Zeitpunkt des Pre-Commits den Commit-Hash nicht kennt. Gibt es eine direkte Methode, um das zu erreichen (oder einen anderen Ansatz, der zu den gleichen Enden kommt)?

Vielen Dank für Ihre Eingabe im Voraus!

    
Martin Rasser 03.05.2013, 17:48
quelle

3 Antworten

9

Okay, ich denke, ich habe eine gute Lösung:

Es gibt einen Git-Hook namens post-commit und hier ist was ich tue:

  • Ich lege die Datei mit dem Tag / Hash auf .gitignore (um unnötige Änderungen beim nächsten Commit zu vermeiden)
  • Lassen Sie den Post-Commit-Hook die Versionsdatei aktualisieren.

Inhalt der Hook-Datei:

%Vor%

Jetzt bin ich sicher, dass die Datei nach jedem Commit auf dem neuesten Stand ist, also bin ich bereit, solange ich vor dem Deployment ein Commit mache.

Hinweise: Faty Anfänger Vorbehalte: machen Sie die Hook-Datei ausführbar, git ignoriert die Datei ohne Warnung, wenn es nicht ist.

Alles über git hooks: Ссылка

Alles über .gitignore: Ссылка

Prost,

Martin

    
Martin Rasser 04.05.2013 11:18
quelle
3

Da Sie rsync zu deploy Ihren Code verwenden, dann tun Sie etwas wie folgt:

%Vor%

Fügen Sie dann das VERSION.txt in das rsync-Paket ein.

Der String git describe sieht folgendermaßen aus:

%Vor%

Oben:

  1. Das neueste Tag ist r1.0
  2. Die 2 zeigt an, dass wir nach diesem Tag zwei Commits abgeschlossen haben
  3. Das g steht für "git" (ok, das ist ein bisschen komisch, aber naja)
  4. Der aktuelle Hash ist ca93d0a
John Jesus 04.05.2013 03:51
quelle
2

Dies ist eine FAQ.

Ссылка

Suchen Sie nach export-subst in gitattributes (5), Sie müssen git-archive (1) verwenden, um die Ersetzung durchzuführen.

(% H gibt Ihnen den Hash. Um das Tag zu erhalten, benötigen Sie noch ein Skript, das aufruft git-describe (1), ich sehe kein Format dafür)

    
Uwe Geuder 03.05.2013 18:23
quelle

Tags und Links