So erhalten Sie programmatisch das letzte Commit-Datum an einem CVS-Checkout

8

Für ein Skript, an dem ich arbeite, um die Bisektion mit CVS zu implementieren, möchte ich herausfinden, was der "Zeitstempel" des aktuellen Checkouts ist. Mit anderen Worten, wenn ich in einer Verzweigung / einem Tag bin, möchte ich den letzten Zeitstempel wissen, der zu dieser Verzweigung / diesem Tag bestimmt wurde. Wenn ich auf Kopf bin, möchte ich den letzten Zeitstempel auf dem Kopf wissen.

Ich weiß, das ist nicht 100% ig garantiert, da cvs checkouts verschiedene Dateien zu verschiedenen Zeitstempeln / Revisionen / ... haben können, aber eine Korrekt-in-den meisten Fällen Lösung ist für mich in Ordnung.

Naiv, das dachte ich mir

%Vor%

würde es tun, aber es stellt sich heraus, dass es den gesamten Commit-Verlauf für alle Zweige / Tags durchläuft.

    
Thomas Vander Stichele 25.06.2009, 15:39
quelle

2 Antworten

2

CVS-Dateien in einem Zweig mit unterschiedlichen Zeitstempeln, die Genauigkeit der Auswahl einer Datei, um die letzte Zeitinfo für den Zweig zu erhalten, ist kaum wert.

Aber es kann besser werden, wenn es eine Datei gibt, die oft geändert wird. Zum Beispiel gibt es in einer meiner Basen eine version.h -Datei, die bei jeder Versionshift aktualisiert wird (minor oder major). Das kann für die Zeit-Information auf der aktuellen Version verwendet werden (wieder nicht genau für alle Dateien in der Branche, aber es gibt eine untere Zeile).

Wenn Sie also eine Datei kennen, die Ihnen einen Grundwert geben kann,

%Vor%

gibt Ihnen den letzten Zeitstempel für diese Datei.

Wenn Sie den gesamten Dateisatz der Basis wie folgt aufzählen können,

%Vor%

Dann können Sie den obigen cvs-Befehl für jede Datei wiederholen,

%Vor%

Die letzte Zeile der Sortierung gibt Ihnen das genaue Datum für das letzte Commit.
Leider wirst du den Dateinamen nicht bekommen (was auch mit etwas mehr Fu gemacht werden kann)

    
nik 25.06.2009, 17:36
quelle
0

Ein schnellerer Weg, um den letzten Zeitpunkt zu erhalten, an dem eine Datei geändert wurde (was auf der Antwort von nik aufbaut) ist:

%Vor%

Wenn Sie nur das Datum abrufen möchten, verwenden Sie:

%Vor%

Dies verwendet das Flag -b, das den Standardzweig und -d verwendet, mit dem Sie CVS mitteilen können, dass Sie nur bis zu einem bestimmten Zeitpunkt an der neuesten Version interessiert sind. Der '' Ausdruck gibt dann das aktuelle Datum als das Limit aus und gibt Ihnen den letzten Commit.

Im gnuplot CVS-Repository verringert die Verwendung der Option -d die Ausführungszeit von ~ 4s auf ~ 1,5s.

    
Jon Gjengset 13.08.2013 11:42
quelle

Tags und Links