Subversion Tutorial

Warnung Dieses Tutorial habe ich 2004 geschrieben und nie aktualisiert. Auch wenn sich die Konzepte von Subversion seitdem kaum geändert haben: Vorsicht vor veralteten Informationen!

Dateien mit TortoiseSVN verwalten

Das Problem kennt bestimmt jeder: man ändert ein Dokument mehrere Tage lang, und auf einmal denkt man sich: ach könnte ich doch die Version vor 3 Tagen noch mal sehen

TortoiseSVN ist ein Versionskontrollsystem, das sich um dieses Problem kümmert. Solange du mit reinen Textdateien o. ä. (.txt, .html, .xml, Programmcode, …) arbeitest, kannst du dir auch noch bequem ansehen, welche Änderungen an einer Datei vorgenommen wurden. Sogar gelöschte Dateien sind nicht endgültig gelöscht - alles ist wiederherstellbar! Und Subversion (dass von TortoiseSVN verwendete System) ist nicht auf einen Computer beschränkt - und gerade, wenn mehrere Personen zusammenarbeiten, ist ein solches System sehr wertvoll. In diesem Tutorial gehe ich aber nur auf die Verwendung von TortoiseSVN auf einem Computer ein.
Zunächst muss TortoiseSVN installiert werden - das Programm kann auf http://tortoisesvn.net/downloads kostenlos heruntergeladen werden. Das Programm integriert sich in den Windows Explorer (Neustart erforderlich).

Vor der Benutzung muss aber erst einmal das Funktionsprinzip klargemacht werden: Die Verwaltung selbst findet im Repository statt. Das ist eine Art virtuelles Dateisystem, in der eben auch auf ältere Versionen zugegriffen werden kann. Im Repository kann man nicht direkt arbeiten. Um zu arbeiten, muss man den Inhalt des Repositories (nur die neueste Version, genannt HEAD), auschecken. Dabei wird die neueste Version aus dem virtuellen Dateisystem entpackt und in eine echte Ordnerstruktur kopiert.

Zunächst erzeugen wir also ein Repository. Im Beispiel machen wir dies im Ordner C:\Repository. Erzeugen Sie zunächst einen leeren Ordner mit diesem Namen im Windows Explorer.

Über das TortoiseSVN kann ein Repository in diesem leeren Ordner angelegt werden. Es wird nun ein Haufen Ordner mit einigen Datenbank-Dateien erstellt. Diese sind nur für die interne Verwendung von Subversion.

Vergessen Sie jetzt den Repository-Ordner, jetzt kommen wir zur Working Copy. Erzeugen Sie wieder einen leeren Ordner, diesmal mit dem Namen "C:\Work". Dort wählen Sie im Kontextmenü die Option "Checkout".

Im Checkout-Dialog wählen Sie als URL des Repositories "file:///c:/Repository". Achten Sie auf den 3fachen / nach file: und darauf, dass Sie statt Backslash den normalen Schrägstrich verwenden, schließlich ist dies eine URL. Das Checkout-Directory ist das eben erstellte Verzeichnis. Da dies ein lokales Verzeichnis ist, darf hier kein file: stehen und der normale Backslash darf verwendet werden.

Wenn Sie nun auf OK klicken, wird im Work-Ordner ein versteckter Ordner ".svn" angelegt. Dort sind Dateien enthalten, die TortoiseSVN zum Arbeiten mit dem Work-Ordner benötigt.
Nun sollten Sie Ihr Repository mit Informationen füllen.
Legen Sie also einfach eine neue Textdatei im Work-Ordner an, und schreiben Sie 3 bis 5 Zeilen Text hinein. Nach dem Speichern der Datei wählen Sie im Kontextmenüs des Work-Ordners (auf freie Stelle klicken, nicht auf Datei) den Befehl "Commit". Commit oder Checkin nennt sich der Vorgang, wenn die Änderungen der Working Copy in das Repository übertragen werden.

Unten sehen Sie eine Liste der von ihnen geänderten Dateien und deren Status - Datei.txt ist als "non-versioned" aufgeführt. Das bedeutet, sie ist im Moment nur in der Working Copy vorhanden, nicht aber im Repository; also werden Änderungen an ihr nicht überwacht. Indem Sie den Haken vor Datei.txt wählen können Sie die Datei dem Repository hinzufügen. Geben Sie außerdem noch eine Beschreibung ein, was Sie gemacht haben.

Wenn Sie jetzt OK klicken, werden die Änderungen ins Repository übertragen, d.h. Datei.txt wird eingecheckt. Drücken Sie nun F5 im Explorer, Datei.txt erhält einen grünen Haken.
Öffnen Sie die Datei wieder, Ändern Sie eine Zeile und fügen Sie eine neue Zeile ein (die anderen Zeilen lassen Sie bestehen). Speichern Sie die Datei.

Die Datei hat ein rotes Ausrufezeichen erhalten. Das bedeutet, die Datei wurde lokal geändert. Mit dem Befehl "Diff" im TortoiseSVN Kontextmenü (Rechtsklick auf die Datei, nicht auf die freie Fläche) können Sie genau sehen, was Sie geändert haben.

Der Befehl Diff vergleicht die Working Copy mit der Working Base.
Die Working Base ist die Version, die sie ausgecheckt haben. Solange niemand anders an Ihrem Repository mitarbeitet, entspricht die Working Base meist der Head-Version im Repository (es sei denn, sie checken eine ältere Version aus)

Um die Änderungen an Datei.txt nun ins Repository zu übertragen, müssen Sie wieder den Befehl Commit ausführen (Rechtsklick auf freie Fläche = Commit ganzen Ordner, auf Datei = Commit nur Datei)
Ein Doppelklick auf einen "Modified"-Eintrag im Commitdialog führt übrigens Diff aus - so kann man vor dem Commit alle Änderungen noch mal ansehen. Klicken Sie auf OK, um die Änderungen an Datei.txt nun ins Repository zu senden.
Gratulation, Sie haben soeben die 2. Version in ihr Repository geladen. Die Änderungen, die ins Repository geladen wurden, wurden gleichzeitig auch an Ihrer Working Base durchgeführt - Diff zeigt also ab jetzt alten Änderungen nicht mehr an, sondern nur noch die neuen Änderungen nach dem Commit. Löschen Sie zum Beispiel ein paar Zeilen aus der Datei und speichern sie sie.

Was jetzt, wenn Sie diese Änderungen nun doch nicht ins Repository laden wollen?
Um eine geänderte Datei in Ihrer Working Copy wieder auf den Stand der Working Base zurückzubringen, können Sie den Befehl "Revert" verwenden. Schließen Sie dazu zunächst dass Diff-Fenster und (falls noch geöffnet) den Texteditor.
Klicken Sie mit der rechten Maustaste auf Datei.txt und wählen Sie im Menü den Befehl "Revert". Die Datei in der Working Copy wird wieder in den Stand zurückversetzt, den die Working Base hatte. Da die Datei noch nicht committed war, gehen die Änderungen verloren! Seien Sie also vorsichtig mit Revert.

Wenn Sie im Nachhinein sehen wollen, wann Sie was gemacht haben, können Sie den Befehl "Show Log" verwenden. Er zeigt alle Änderungen im Ordner (bei Klick auf freie Fläche) oder an der gewählten Datei (bei Klick auf Datei) an.
Sie sehen die Versionen mit ihren Nummern, den Zeitpunkt vom commit und Ihre Beschreibung (eine sinnvolle Beschreibung kann Ihnen also später beim Wiederfinden einer Version helfen).
Beim Klick auf einen Eintrag sehen Sie die Beschreibung noch mal ausführlich (die Liste oben zeigt bei längeren Beschreibungen ja nur den Anfang an) und die Liste der geänderten Dateien.
Und selbst wenn sie schon bei Version 78 ihres Repositories sind, wenn Sie z.B. Version 4 anklicken und dort in der Dateiliste eine "Modified" Datei doppelklicken, sehen Sie die Änderungen von Version 3 zu Version 4.

So, ich denke das reicht erstmal als TortoiseSVN Tutorial…
Eine sehr gute weiterführende Hilfe ist http://svnbook.red-bean.com/.
Dieses Tutorial wurde von Daniel Grunwald geschrieben.