Dieser Text befindet sich gegenwärtig in Bearbeitung, unterliegt ständigen Änderungen und kann dadurch nicht stets akkurat irgendeine freigegebene Version der Software Apache™ Subversion® beschreiben. Das Speichern dieser Seite als Lesezeichen oder andere auf diese Seite zu verweisen, ist keine so gute Idee. Besuchen Sie http://www.svnbook.com/, um stabile Versionen dieses Buchs zu erhalten.

Revisionsnummern sind jetzt anders

In CVS werden Revisionsnummern pro Datei vergeben. Das liegt daran, dass CVS seine Daten in RCS-Dateien speichert; für jede Datei gibt es eine entsprechende RCS-Datei im Projektarchiv, und die Struktur des Projektarchivs entspricht grob der Struktur Ihres Projektbaums.

In Subversion sieht das Projektarchiv aus wie ein einzelnes Dateisystem. Jede Übergabe verursacht einen völlig neuen Dateibaum; im Wesentlichen ist das Projektarchiv eine Liste aus Bäumen. Jeder dieser Bäume wird mit einer einzelnen Revisionsnummer gekennzeichnet. Wenn jemand von Revision 54 redet, ist damit ein bestimmter Baum gemeint (und indirekt, wie das Dateisystem nach der 54. Übergabe aussah).

Technisch ist es nicht zulässig, von Revision 5 von foo.c zu sprechen. Stattdessen sollte man sagen, foo.c wie es in Revision 5 aussieht. Seien Sie ebenfalls sorgfältig, wenn Sie Annahmen über die Entwicklung einer Datei machen. In CVS sind die Revisionen 5 und 6 von foo.c immer unterschiedlich. In Subversion ist es sehr wahrscheinlich, dass foo.c sich zwischen den Revisionen 5 und 6 nicht geändert hat.

Auf ähnliche Weise ist in CVS ein Tag oder ein Zweig eine Anmerkung zu der Datei oder zu der Versionsinformation dieser individuellen Datei, wohingegen ein Tag oder ein Zweig in Subversion eine Kopie des gesamten Baums ist (konventionell in die Verzeichnisse /branches oder /tags, die auf der obersten Ebene des Projektarchivs neben /trunk liegen). Im Projektarchiv in seiner Gesamtheit können viele Versionen einer Datei sichtbar sein: die letzte Version jedes Zweigs, jede mit einem Tag versehene Version und natürlich die letzte Version auf dem Stamm. Um den Ausdruck also noch weiter zu präzisieren, würde man sagen foo.c wie es in /branches/REL1 in Revision 5 aussieht.

Für weitere Einzelheiten zu diesem Thema, siehe „Revisionen“.