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.
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:
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.
Dies funktioniert für SVN Version 1.6.2. Aber seien Sie gewarnt, verschiedene SVN-Versionen verwenden unterschiedliche Formate des .svn-Ordners.
%Vor% 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
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%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.
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.