Neuere Versionen von svn unterstützen das --show-item
Argument:
svn info --show-item revision
Verwenden Sie für die Versionsnummer Ihrer lokalen Arbeitskopie:
svn info --show-item last-changed-revision
Sie können os.system()
eine Befehlszeile wie folgt ausführen:
svn info | grep "Revision" | awk '{print $2}'
Ich mache das in meinen nächtlichen Build-Skripten.
Auch auf einigen Plattformen gibt es einen svnversion
Befehl, aber ich glaube, ich hatte einen Grund, ihn nicht zu verwenden. Ahh, richtig. Sie können die Versionsnummer nicht von einem Remote-Repository abrufen, um sie mit der lokalen mit svnversion zu vergleichen.
cmd.exe
Tag in der ursprünglichen Frage, was bedeutet , das OP in Windows ist, wo Sie nicht verwenden könnengrep
undawk
.svn info
(z. B. mit dem Unterprozessmodul), das Lesen der Ausgabe und das Ausführen der grep / awk-Schritte direkt in Python (if "Revision" in line: return line.split()[1]
) in der Regel einfacher und einfacher als der Versuch, Bash-Befehle in Python zu schreiben.grep
:svn info | awk '/Revision/ { print $2; }'
svn info | awk '/^Revision:/ {print $2;}'
LANG=C svn info | grep "Revision" | awk '{print $2}'
Es gibt auch einen bequemeren (für einige)
svnversion
Befehl.Die Ausgabe kann eine einzelne Revisionsnummer oder ähnliches sein (von -h):
Ich verwende dieses Python-Code-Snippet, um Revisionsinformationen zu extrahieren:
quelle
Zunächst hat der SVN-Status die Revisionsnummer, die Sie von dort aus lesen können.
Außerdem kann jede Datei, die Sie in SVN speichern, die
$Rev$
Versionsnummer in sich selbst speichern. Fügen Sie das Schlüsselwort zu Ihrer Datei hinzu und führen Sie propset aus:svn propset svn:keywords "Revision" file
Schließlich befindet sich die Revisionsnummer auch in der
.svn/entries
Datei, vierte ZeileJedes Mal, wenn Sie diese Datei auschecken, hat sie die Revision für sich.
quelle
svn, version 1.11.0 (r1845130) compiled Oct 31 2018, 12:40:42 on x86_64-unknown-cygwin
:.svn/entries
enthält nur eine ganze Zahl.REV =
svn info svn://svn.code.sf.net/p/retroshare/code/trunk | grep 'Revision:' | cut -d\ -f2
quelle
svn info
Ich glaube, das ist was du willst.Wenn Sie nur die Überarbeitung wollten, könnten Sie vielleicht etwas tun wie:
quelle
Verwenden Sie Folgendes, um die XML-Ausgabe von Subversion zu nutzen:
Beachten Sie auch, dass der
<commit revision=...>
Eintrag je nachdem, wofür Sie dies benötigen, möglicherweise mehr das ist, wonach Sie suchen. Dies ergibt die "Last Changed Rev", die sich erst ändert, wenn sich der Code im aktuellen Baum tatsächlich ändert, im Gegensatz zu "Revision" (was oben angegeben ist), die sich jedes Mal ändert, wenn sich etwas im Repository ändert (sogar Verzweigungen). und du machst ein "svn up", was nicht dasselbe ist oder oft so nützlich.quelle
svnversion
? Es hat eine dokumentierte kompakte Ausgabe und benötigt nichts so Komplexes, um es zu analysieren.Ich habe gerade die Antwort von @ badcat in einer modifizierten Version verwendet und Folgendes verwendet
subprocess.check_output()
:Ich glaube, Sie können pysvn auch installieren und verwenden, wenn Sie Python als Schnittstelle zu svn verwenden möchten.
quelle
Niemand erwähnt die Windows-Welt SubWCRev , die bei richtiger Verwendung die benötigten Daten automatisch an den benötigten Stellen ersetzen kann, wenn das Skript SubWCRev in Form aufruft
SubWCRev WC_PATH TPL-FILE READY-FILE
Beispiel meines Post-Commit-Hooks (Teil von)
wo mein Builder.tpl ist
Als Ergebnis habe ich jedes Mal eine Bat-Datei mit dem variablen Teil - Name des Verzeichnisses -, der den Metadaten von Working Copy entspricht
quelle
Ich denke, ich muss svn info machen und dann die Nummer mit einer String-Manipulation aus "Revision: xxxxxx" abrufen. Es wäre einfach schön, wenn es einen Befehl gäbe, der nur die Nummer zurückgibt :)
quelle
Andernfalls können Sie in der alten Version den folgenden Befehl verwenden, wenn '--show-item' nicht erkannt wird:
Ich hoffe es hilft.
quelle