Wie erhält man programmgesteuert die SVN Revisionsnummer?

7

Gefällt mir diese Frage , aber ohne den SVN-Server tatsächlich abfragen zu müssen. Dies ist ein webbasiertes Projekt, daher denke ich, dass ich das Repository nur als öffentliche Ansicht verwenden werde (es sei denn, jemand kann mir raten, warum dies eine schlechte Idee ist). Ich nehme an, dass diese Information irgendwo in einer Datei im Ordner .svn ist, aber wo und wie parse ich sie? Ich möchte etwas wie SO machen, indem ich die Revision in der unteren rechten Ecke habe.

Code in Python oder PHP geschätzt, wenn Sie es zur Hand haben, oder nur ein Punkt in die richtige Richtung.

    
mpen 30.09.2009, 18:17
quelle

9 Antworten

13

Subversion enthält das Tool svnversion für genau diesen Zweck. Eine Arbeitskopie kann tatsächlich lokale Änderungen aufweisen oder aus einer Mischung von Revisionen bestehen. svnversion weiß, wie man damit umgeht; Siehe die Beispiele in der verknüpften Dokumentation.

Sie können svnversion von Python wie folgt aufrufen:

%Vor%     
Wim Coenen 30.09.2009, 23:37
quelle
4

Ich würde wahrscheinlich die Versionsnummer in eine Textdatei irgendwo innerhalb der Website mit dem Post-Commit-Hook schreiben und dann einfach diese Datei lesen, wenn ich Ihre Seite lade.

Mehr zur Verwendung von Hooks hier

    
inkedmn 30.09.2009 18:22
quelle
3

Sie können die aktuelle Revisionsnummer eines Checkouts über die Befehlszeile " svn info " abrufen.

Zum Beispiel:

%Vor%

Beachten Sie, dass es lokalisiert ist; Wenn Sie Linux verwenden, können Sie Folgendes versuchen:

%Vor%

Wenn Sie dies jedoch von PHP aus verwenden, ist es möglicherweise hilfreicher, sie als XML zu erhalten (einfacher zu analysieren und nicht Gebietsschema-bewusst) :

%Vor%

Verwenden Sie einfach simplexml_load_string und rufen Sie das revision -Attribut des entry -Tags ab.


Beachten Sie, dass ich dies nicht bei jeder Seitenansicht tun würde: nicht ganz so schnell, wie man es sich für Ihre Anwendung wünscht.

Stattdessen erhalte ich diese Revisionsnummer beim Erstellen des Archivs, das ich später an den Produktionsserver senden und in einer Art Konfigurationsdatei speichern werde.

Auf diese Weise müssen Sie nicht den Befehl svn auf Ihrem Produktionsserver verwenden, und Sie müssen auch nicht auf diesem Server auschecken.

    
Pascal MARTIN 30.09.2009 18:21
quelle
3

Dies funktioniert für SVN Version 1.6.2. Aber seien Sie gewarnt, verschiedene SVN-Versionen verwenden unterschiedliche Formate des .svn-Ordners.

%Vor%     
Lance Rushing 30.09.2009 18:35
quelle
3

Nach Lance folgt hier ein Kommandozeilen-Liner.

%Vor%     
Ewan Todd 30.09.2009 21:02
quelle
2

Ich mag die von MediaWiki verwendete Lösung und lese den Inhalt von .svn/entities . Überprüfen Sie die erste Antwort zu dieser Frage: Abrufen der Subversion-Repository-Nummer in Code

    
Annika Backstrom 30.09.2009 18:32
quelle
2

Wenn Sie nach einer Python-Implementierung suchen, sehen Sie sich pysvn an. Sie können das info-Befehl , um Details einschließlich der aktuellen Revision zu erhalten:

%Vor%     
Rich Seller 30.09.2009 18:32
quelle
1

Ich weiß, dass das ziemlich alt ist, aber ich dachte mir, ich würde das in PHP für meine Web-Apps anbieten:

Fügen Sie dies in eine PHP-Datei in Ihrer App ein und legen Sie die SVN-Schlüsselwörter-Eigenschaft für "Date Revision Author HeadURL ID" fest (Schlüsselwortersetzung in der Datei).

%Vor%

Nachdem svn den Schlüsselwortaustausch in der Quelldatei durchführt, sieht die $ SVN_rev Zeile wie folgt aus:

%Vor%

also würde die Ausgabe von stripSVNstuff ($ SVN_rev) "6" (ohne Anführungszeichen) sein.

    
Jason Antman 03.12.2010 15:21
quelle
0

Sie könnten einfach in die Befehlszeile wechseln und svn info ausführen. Denken Sie daran, dies könnte eine gemischte Überarbeitung sein. Sie könnten auch eine Svn starten und die letzte Zeile von STDOUT wird Ihnen die Revisionsnummer geben.

Oder möchten Sie die svn-API verwenden? Sie können auch den TortoiseSVN-Code von SubWCRev betrachten, der dazu verwendet wird, ein Token in einer Datei durch die aktuellen Revisionen des WCs zu ersetzen.

    
PilotBob 30.09.2009 18:24
quelle

Tags und Links