SVK: dezentrale Versionskontrolle mit Subversion

geschrieben von Sebastian Bauer (augusto) am Sonntag, 3. Dezember 2006

subversion-logo-hor-468x641.png

Software Entwicklung ohne Versionverwaltung kann ich mir nicht mehr vorstellen. Hierfür nutze ich schon seit längerem Subversion. Es bringt einfach enorme Vorteile mit sich wenn man im Zweifelsfall auf frühere Versionen zurückgreifen kann. Aber auch das Bugfixing älterer Revisionen geht mit Hilfe sogenannter Branches ohne Probleme. Das einzige was mir bisher fehlte ist der mobile Zugriff auf mein Repository wenn mal kein Netz in der Nähe ist. Doch hierfür habe ich nun die perfekte Lösung gefunden: SVK. Hiermit lassen sich dezentrale Repositories pflegen welche man später wieder in das Haupt-Repository integrieren kann.

Mein primäres Repository ist bereits auf meinem lokalen Server eingerichtet. Hiervon möchte ich nun eine Kopie auf meinem Notebook anlegen um auch unterwegs darauf zugreifen zu können. Als Anleitung orientiere ich mich an den SVK Tutorials von Ron Bieber (Part I, II, III). Zunächst lohnt es sich den SVK Workflow einmal näher zu betrachten. Zur Information: Ich nutze für jedes Projekt ein eigenes Repository. D.h. ich muss folgendes für jedes Projekt abarbeiten, sollte ich davon lokale Kopien anlegen wollen.

Vorteile von SVK – gegenüber reinem SVN

  1. Das Repository ist vollständig lokal. D.h. es können alle Vorteile der SVN-Versionskontrolle auch ohne Netzanbindung genutzt werden.
  2. Mögliche lange Repository-URLs werden durch SVK Aliases handlich und leichter zu handhaben.
  3. Gespiegelte Repositories werden inkrementell synchronisiert. Auch wenn der erste Abgleich bei großen Repositories eine Weile in Anspruch nehmen kann sind zukünftige Syncs sehr schnell.
  4. Einfaches Zusammenführen mit ’star-merge’. Beim Merge verschiedener Zweige muss man bei Subversion die genauen Revisionsnummern mit angeben. SVK weiß selbst was bereits vereinigt wurde. Hiermit ist es sehr einfach lokale Repositories mit dem Original abzugleichen und umgekehrt.
  5. Wer sich bereits mit Subversion auskennt muss bei SVK nicht viel dazulernen. Die Kommandos sind denen von SVN sehr ähnlich oder zum Großteil sogar identisch.
  6. Leichgewichtige Arbeitsumgebungen: Anders als bei Subversion finden sich keine zusätzlichen Organisationsordner (.svn) in den Arbeitsordnern
  7. Die Freiheit immer und überall auf seinen Code zugreifen zu können ohne eine Netzanbindung vorfinden zu müssen

Hinweise zum Arbeitsplatz

Da ich auf meinen Workstations Windows einsetze habe ich mir zunächst den Installer von SVKWin32 heruntergeladen. Die Installation erfolgt ohne größere Eingriffe. Danach ist SVK sofort einsatzbereit.

Lokale Depotmap einrichten

Zunächst müssen wir SVK initialisieren und ein lokales Repository einrichten. Dies geschieht mit dem Befehl

svk depotmap --init

Sollte noch kein Repository existieren wird man gefragt ob eines angelegt werden soll. Standardmäßig wird die zur Ablage des Repository der Ordner .svk im Home-Verzeichnis des aktuellen Nutzers verwendet. Man kann dies jedoch später beliebig verschieben (mit svk depotmap Kommandos).

Haupt-Repository spiegeln

Zunächst muss man das entfernte SVN-Repository auf einen lokalen SVK-Pfad abbilden.

svk mirror svn://goofy/mhccms/trunk //mhccms/trunk ('//' steht für das lokale Repository)

Aktuell eingerichtete Spiegel lassen sich mit svk mirror --list auflisten.

Zum Abgleichen der beiden Repositories wird der Befehl svk sync genutzt.

svk sync //mhccms/trunk

Nun haben wir ein lokales Repository womit wir auch ohne Netz arbeiten können.

Beim erstmaligen abarbeiten der bisherigen Schritte sind bei mir Fehler aufgetreten, so dass ich den .svk-Ordner einfach entfernte und alles nochmal wiederholte. Dann lief alles ohne Probleme.

Einrichten eines lokalen Branch

Für das lokale Arbeiten richten wir nun einen neuen Branch ein. So müssen wir nicht im Trunk arbeiten und können die verschiedenen Zweige später einfach wieder zusammenführen.

svk copy -p -m "Creating local branch." //mhccms/trunk //mhccms/branches/local

Zu beachten ist, dass bei Windows immer mit Doublequotes zu arbeiten ist!

Ein svk ls //mhccms/branches/local listet nun den Inhalt des Branch auf (nur auf einer Ebene).

Auschecken des Entwicklungs-Branch

Um nun mit dem neuen Branch arbeiten zu können muss dieser ausgecheckt werden. Hierfür lege ich in meinem Home-Verzeichnis einen Ordner für das Projekt an und rufe darin folgendes Kommando auf:

svk co //mhccms/branches/local

Nun kann es losgehen.

Was haben wir bis jetzt?

Wir haben nun ein lokales Repository auf unserer Workstation mit Hilfe von SVK angelegt. Darin erstellten wir einen Branch mit dem wir arbeiten werden. Den Inhalt haben wir in unser Arbeitsverzeichnis ausgecheckt.

Man muss jedoch beachten, dass in diesem Verzeichnis ausschließlich mit den SVK-Befehlen gearbeitet werden kann. Tools wie TortoiseSVN oder ähnliche können leider nicht eingesetzt werden.

Die Teile II und III von Ron kommen in einem weiteren Artikel…

Ron war so freundlich und hat mich auf seiner Seite SVK Tutorials als Übersetzer für das deutsche Tutorial angegeben.

Weitere Links zu diesem Thema:

geposted unter: Anleitungen

  1. 2 Kommentare zu “SVK: dezentrale Versionskontrolle mit Subversion”

  2. Beim Spiegeln fehlt der Befehl “mirror” im Aufruf von “svk”:

    svk MIRROR svn://goofy/mhccms/trunk //mhccms/trunk (’//’ steht für das lokale Repository)

    Von Marko Käning am Dienstag 24 Juni, 2008

  3. @Marko: Vielen Dank für den Hinweis. Wurde angepasst.

    Von Sebastian Bauer (augusto) am Sonntag 29 Juni, 2008

Du musst eingeloggt sein um einen Kommentar schreiben zu können.

© 2009 - Sebastian Bauer (IT-Blog). WordPress Theme Designer