TortoiseSVN

Diese Seite erklärt den grundlegenden Umgang mit TortoiseSVN. Tortoise-SVN ist eine Erweiterung für den Windows Explorer und bietet eine gute Integration von SVN. Der Zugriff auf TortoiseSVN geschieht über das Kontextmenu des Windows-Explorers. Eine umfassende Dokumentation ist auf der Projektseite zu finden.

Lokale Arbeitskopie erstellen (checkout)

Checkout Dialog

Eine lokale Arbeitskopie kann in jedem beliebigen Ordner erstellt werden: Rechtsklick auf den Ordner → SVN Checkout…. In der daraufhin erscheinenden Maske muss nur noch die URL zum Repository angegeben werden. Befindet sich das Repository auf dem NTB-SVN-Server sieht die URL z.B. so aus: https://svn.ntb.ch/svnba/RepositoryName. Bei einem lokalen Repository z.B. so: file:///D:/work/SVN/WasAuchImmer.

Lokale Arbeitskopie aktualisieren (update)

Es ist wichtig, die lokale Arbeitskopie stets aktuell zu halten. Dazu wird ein sogenanntes update durchgeführt. Dies wird wie folgt gemacht: Rechtsklick auf den obersten Ordner → SVN Update.

Lokale Änderungen übermitteln (commit)

Hat man in der lokalen Arbeitskopie Änderungen gemacht, sollten diese regelmässig wieder ins Repository übermittelt werden. Dazu wird ein sogenannter commit durchgeführt: Rechtsklick auf den obersten Ordner → SVN Commit. Anschliessend werden alle Dateien aufgelistet, die sich vom Repository unterscheiden. Man wählt diejenigen an, welche übertragen werden sollen, gibt einen Kommentar ein und klickt auf OK.

Konflikt lösen

Konflikt beim Commit
Konflikt beim Update

Wenn mehere Benutzer im gleichen Repository arbeiten, kann es vorkommen, dass zwei Benutzer die gleiche Datei abändern. Da man aber nur auf einer lokalen Kopie des Repositories arbeitet, merkt man nichts davon. Einer der beiden Benutzer wird seine Änderungen als erster übermitteln (commit). Wenn der zweite Benutzer seine Änderungen übermitteln will (commit), erhält er eine Fehlermeldung (siehe Bild). Als nächstes wird man gefragt, ob die lokale Arbeitskopie aktualisiert werden soll (update).

Nach dem Update gibt es wieder eine Fehlermeldung, welche auch aufgetreten wäre, wenn zuvor kein Commit gemacht wurde. Alle betroffenen Dateien wurden mit der Version, welche im Repository liegt, vereinigt. Eine Kopie der lokalen Dateien wurde unter dem Namen *.mine erstellt.

Um den Konflikt zu lösen klickt man mit der rechten Maustaste auf die betroffene Datei und wählt → TortoiseSVNEdit conflicts aus. Es erscheint ein Fenster mit drei Bereichen:

  • Theirs → Version auf dem Repository (oben links)
  • Mine → Version auf lokaler Kopie (oben rechts)
  • Merged → vereinigte Version (unten)
Bearbeiten der Konflikte

Nun kann mit den Pfeil-Symbolen für jede Linie gewählt werden, welche Version verwendet werden soll (Mine → Pfeil nach links oder Theirs → Pfeil nach rechts). Die vereinigten Linien sind im Merged Bereich zu sehen. Bei grossen Dateien kann mit den Pfeilen nach oben/unten zum nächsten Konflikt gesprungen werden. Im Merged Bereich können die Konflikte auch manuell gelöst werden. Nach dem alle Konflikte gelöst wurden, muss die Datei als bereinigt markiert werden, indem im Menü unter → EditMark as resolved oder auf das Symbol geklickt wird. Die Änderungen können nun ganz normal übermittel werden (commit).

Tag/Branch erstellen

Tags oder Branches werden erstellt, indem rechts auf den Ordner geklickt wird, von dem man einen Tag/Branch erstellen möchte, und dann → TortoiseSVNBranch/tag auswählt. Im daraufhin erscheinenden Fenster gibt man den Zielort des Tags bzw. Branch ein. Danach muss ein Update gemacht werden, um die kopierten Daten zu sehen.

→ siehe: Richtlinien für den richtigen Umgang mit SVN

Lokales Repository erstellen

Mit TortoiseSVN ist es möglich lokale Repositories an einem beliebigen Ort auf dem Dateisystem zu erstellen. Diese sind jedoch nur für den Eigengebrauch geeignet und sollten nicht über ein Netzlaufwerk mit anderen gemeinsam verwendet werden. Grund für diese Einschränkung sind die fehlenden Lock-Funktionen der Windows-Dateisysteme. Dadurch kann das Repository unbrauchbar gemacht werden, wenn zwei Personen gleichzeitig einen Commit durchführen! Praktisch sind diese privaten Repositories jedoch, da man dadurch jederzeit wieder zu einer früheren Version zurückkehren kann und man die Änderungsschritte automatisch dokumentiert hat (natürlich nur wenn man die Änderungsmitteilung immer brav ausfüllt).

Ein Repository erstellen ist relativ einfach: Gewünschen Ordner aussuchen, Rechtsklick → TortoiseSVN → Create repository here. Anschliessend muss nur noch eine lokale Arbeitskopie erstellt werden.

Wird ein Projekt von mehreren Personen bearbeitet, eignet sich ein solches Repository nicht. Für eine einfach und sichere Zusammenarbeit stellt die NTB einen SVN-Server zur Verfügung.

Was tun, wenn das Repository verschoben wurde?

Ändert sich die URL von einem Repository, kann kein Update/Commit mehr ausgeführt werden. Um dieses Problem zu lösen muss TortoiseSVN mitgeteilt werden, wohin das Verzeichnis verschoben wurde. Dazu gibt es die Funktion Relocate:

  1. Rechtsklick auf die lokale Arbeitskopie → TortoiseSVN → Relocate
  2. URL anpassen und mit OK speichern
  3. Update und Commit sollten nun wieder funktionieren.