2009-06-10 8 views
4

Ich suche eine Lösung für die folgende Situation."Mark" SVN-Export mit Revision

Wir verwenden Subversion und neben der Entwicklungsumgebung, in der wir Checkouts verwenden, haben wir eine Testumgebung, die der Produktionsumgebung so nahe wie möglich kommen soll.

Daher haben wir jetzt eingerichtet, dass die Umgebung mithilfe von SVN-Export aktualisiert wird. Da wir jedoch nur die letzte Revision wünschen, wissen wir nicht, welche Revision exportiert wurde.

Gibt es eine Möglichkeit, diesen Export zu "markieren", z. B. durch Hinzufügen einer generierten Datei, die angibt, welche Revision exportiert wurde? (Wir möchten Tags nicht exportieren, da wir innerhalb eines Veröffentlichungszyklus mehrmals aktualisiert werden.)

Antwort

3

Eine Sache, die Sie tun können, ist sicherzustellen, dass Sie von einer bekannten Revision exportieren und diese Revisionsnummer schreiben eine Textdatei im Export. Der Befehl svnversion teilt Ihnen die Revisionsnummer eines Arbeitsverzeichnisses mit. Tun Sie also eine svn update, um die neueste Version zu erhalten, und dann svn export an Ihrem Deployment-Standort, dann svnversion umleiten die Ausgabe in eine Textdatei an der gleichen Stelle wie der Export. Die Revisionsnummer ist die Revision ab dem Update, auch wenn jemand seither neuen Code festgeschrieben hat.

Sie wollen natürlich den obigen Prozess in einem Shell-Skript oder etwas automatisieren.

+1

Vielen Dank für Ihre Antwort. Es löst mein Problem jedoch nicht wirklich. Die Situation ist, dass externe Entwickler vom Auschecken committen, und ich werde ein Update-Skript ausführen, das den Export ausführt. Ich habe herausgefunden, dass ich versuchen kann, die Ausgabe vom Befehl svn export zu erfassen, da am Ende "Exportierte Revision ..." gedruckt wird. –

1

Sie könnten svn info /path/to/repository kurz vor (oder nach) exportieren, aber Sie müssten sperren, um sicherzustellen, dass keine Änderungen vorgenommen wurden.

Alternativ mit der Technik in Ihrem Kommentar und Rohrleitungen durch einen Shell-Skript beschrieben, wie:

svn export /path/to/repository | grep ^Exported > revision.txt 

oder

svn export /path/to/repository | tail -l > revision.txt 
+0

Wenn Sie es vorher oder nachher machen, könnte es sich um eine andere Revision handeln –

0

Alternativ können Sie ein svn update und dann tun svn export aus diesen lokalen Kopieren. Der Vorteil davon ist, dass Subversion "rsync" (oder einen anderen Algorithmus) verwendet, um nur die geänderten Dateien zu aktualisieren. Und dann exportieren Sie einfach von Ihrer lokalen Kopie, sparen Bandbreite und behalten alle Repository-Informationen bei Ihrer lokalen Kasse.

Erstellen Sie zwei Verzeichnisse, eine für Kasse und eine für den Export, dann mit einem zweistufigen Prozess implementieren:

svn update /path/to/repository checkout/project 
svn export checkout/project export/project