Christian Seiler: Versionsnummer generieren und anzeigen lassen

Beitrag lesen

Hallo andreas,

Zum Verwalten meiner Sourcecodes verwende ich SVN.

Das reicht Dir doch. SVN bietet mit der Revsisionsnummer ja automatisch eine Zahl, die hochgezählt wird. Und ob im Portal jetzt nun "4.2.1.6.89.2.1314.35.7" steht oder "45789" ist doch im Prinzip vollkommen egal.

Auf FTP-Server kopiere ich das ganze noch von hand. Kennt/Benutzt von euch jemand etwas um so eine Versionierung zu realisieren?

SVN bietet sogenanntes "Keyword substitution" an. Damit ersetzt SVN automatisch (wenn aktiviert) $Rev$ durch $Rev: 42 $. Sprich: Du könntest Dir in PHP einfach einen String definieren $str = '$Rev$'; und der wird dann beim Commit / Update automatisch durch $str = '$Rev: 42 $'; ersetzt. Den String könntest Du dann in PHP verarbeiten. Das ganze hat allerdings einen großen Nachteil: $Rev$ steht immer für die letzte Revision, in der diese KONKRETE EINE DATEI modifiziert wurde - d.h. es bringt Dir nur dann etwas, wenn Du die Datei bei jedem Veröffentlichen bearbeiten und dann committen würdest... Wenn das aber der Fall ist, kannst Du die Version ja gleich manuell reinschreiben, bringt Dich also nicht so viel weiter (ich wollt's trotzdem mal erwähnt haben, vielleicht findest Du's ja auch so nützlich).

Allerdings gibt es ein Programm namens "svnversion". Wenn Du das in einer Working Copy ausführst (d.h. Du bist mit der Kommandozeile in dem Hauptverzeichnis, das Du ausgecheckt hast und rufst dann "svnversion" auf - geht auch genauso unter Windows), dann kannst Du Dir alle Revisionsnummern, die in der Working Copy vorkommen, ausspucken lassen. Die Ausgabe ist dann entweder eine einzige Zahl (42) oder zwei Zahlen, wenn mehrere Revisionen vorkommen (4:42 für Revisionen 4 bis 42).

Der Witz ist nun, dass Du einfach sagen kannst:

svnversion > version.txt

Und dann version.txt einfach mit hochladen, Dein PHP-Script liest die Datei aus, interpretiert den Inhalt und zeigt dann die jeweilige Version an.

Wenn Du das ganze später mal so erweitern solltest, dass beim Commit Dinge automatisch veröffentlicht werden (das machen wir auf den SELF-Servern übrigens), dann kannst Du den Schritt ja mit integrieren.

Viele Grüße,
Christian