Tortoise als lokaler Versionsserver

Um eine funktionsfähige Versionsverwaltung einzurichten, benötigt man nicht unbedingt einen Webserver mit installiertem Subversion.

Mit TortoiseSVN als Shell-Erweiterung lässt sich sowas auch im lokalen Netz oder dem eigenen Rechner einrichten.
Im folgenden werde ich die dafür notwendigen Einstellungen Schritt für Schritt darstellen.

1) Verzeichnisstruktur

Für mein Beispiel verwende ich die von Microsoft mit Access ausgelieferte Beispieldatenbank "Nordwind.mdb" und die folgende Verzeichnisstruktur
struktur
Abb. 1: Verzeichnisstruktur auf Laufwerk Z:
Die Datenbank selbst befindet sich hier im Verzeichnis "Z:\Entwicklung\Nordwind\Nordwind.mdb".

2) Repository erstellen

TortoiseSVN speichert die einzelnen Revisionen (Versionsstände) in einer eigenen Datenbank.
Um diese erstmalig zu erzeugen, verwenden wir im Tortoise-Menü den Menüpunkt "CreateRepository here".
create_repository
Abb. 2: Lokales Repository erstellen
Damit ist unser Repository angelegt und der Ordner ab sofort für jegliche manuellen Arbeiten tabu - unbedarfte Änderungen können hier fatale Folgen haben und unser Repository unbrauchbar machen.

3) Erster Checkout

Alle Arbeiten erfolgen von nun an in der sog. "Arbeitskopie".
Im Beispiel ist das der Ordner "Z:\Entwicklung\Nordwind\Source\".
Um dieses Verzeichnis zu unserer lokalen Arbeitskopie zu machen, verwenden wir den Menüpunkt "Checkout".
checkout
Abb. 3: Verzeichnis zur Arbeitskopie machen
Als URL wird, wie in der Abbildung ersichtlich, die Pfadangabe zu unserem in Punkt 2 erzeugten lokalen Repository verwendet.
Die Einrichtung des Repository ist nun abgeschlossen und wir können es genauso verwenden, als hätten wir ein Repository auf einem Subversion-Server.

4) Projekteinstellungen für OASIS

Der Beispieldatenbank "Nordwind.mdb" muss nun für OASIS noch mitgeteilt werden, wo die Quelltextdateien zu finden sind.
settings
Abb. 4: Einstellungen in OASIS

5) Export aus OASIS

Da unser Quelltext-Verzeichnis momentan noch vollkommen leer ist, müssen durch OASIS als nächstes die zu verwaltenden Dateien exportiert werden.
Dazu dient der Befehl "Exportieren" in OASIS.
export
Abb. 5: Exportieren mit OASIS
Die markierten Objekte werden durch OASIS als einzelne Dateien im unter Punkt 4 eingestellten Verzeichnis (der Arbeitskopie des Repositories) gespeichert.
dateien
Abb. 6: Exportierte Quelltext-Dateien in "Z:\Entwicklung\Nordwind\Source\"

6) Dateien hinzufügen

Damit TortoiseSVN auch weiß, welche Dateien unter die Versionsverwaltung fallen, müssen diese noch zur Versionsverwaltung hinzugefügt werden.
Dazu dient der Menüpunkt "Add".
add
Abb. 7: Dateien zur Versionierung hinzufügen

Das funktioniert über das Tortoise-Menü sowohl für einzelne Dateien als auch für komplette Verzeichnisse.
Im Verlauf eines Projekts muss man aber nicht immer "Add" verwenden - der Dialog "Commit" zeigt unversionierte Dateien an und bietet die Möglichkeit, diese auch ohne "Add" in die Verwaltung mit aufzunehmen.

7) Einchecken (Commit)

Durch "Add" wird Tortoise lediglich mitgeteilt, welche Dateien in die Versionsverwaltung zu übernehmen sind - es werden allerdings noch keinerlei Inhalte übertragen.
Um die Dateien (bzw. deren Inhalte) tatsächlich in das Repository zu übertragen, wird der Menüpunkt "Commit" verwendet.
checkin
Abb. 8: Änderungen in das Repository übernehmen

Hier werden alle hinzugefügten/geänderten/gelöschten Dateien angezeigt, deren Inhalte in das Repository übertragen werden sollen.
Wenn "Show unversioned files" markiert ist, werden auch Dateien angezeigt, die noch nicht unter Versionsverwaltung stehen - diese können durch Markieren der Datei (Checkbox) auch unter Umgehung des "Add"-Dialogs mit aufgenommen werden.
Jedem "Commit" kann ein individueller Kommentartext mitgegeben werden, um die einzelnen Versionsstände zu beschreiben.

8) Tortoise-Befehle

Im folgenden noch eine kurze Liste der wichtigsten Kommandos von Tortoise:

Befehl Bedeutung
SVN Update Holt den aktuellen Versionsstand aus dem Repository ab
SVN Commit... Überträgt lokal geänderte Dateien in das Repository
Show log Zeigt die Versionshistorie an
Update to revision... Holt einen bestimmten Versionsstand aus dem Repository ab
Revert... Holt den aktuellen oder einen bestimmten Versionsstand aus dem Repository ab, um damit lokale Änderungen zu verwerfen
 
 
Eine ausführliche Dokumentation zu TortoiseSVN befindet sich hier