Arbeiten mit SVK

SVK dezentrale Versionskontrolle auf Subversion Basis
Mit SVK ist es möglich eine lokale Kopie des SVN vorzuhalten und auch ohne Internet bzw. Netzwerkverbinung zum Subversion-Server weiter zu arbeiten und alle Vorteile eines SCM (Source Code/Control Managementsystem) zu nutzen.

Wie konfiguriere ich SVK?
Nach der Installation von SVK muss das lokale Repository eingerichtet werden das die SVN Projekte aufnimmt und offline zur Verfügung stellt.

1. Erstellen des Repository-Verzeichnisses z.B. ”D:\User\Fabian\SVK”

2. Setzen der Umgebungsvariablen für das Repository mit SVKROOT=D:\User\Fabian\SVK

3. Starten einer Command-Shell

4. Initialisieren des lokalen Repositories mit
svk depotmap --init

5. Versioniertes Verzeichnis im Repository für die eigenen Projekte erstellen (lokaler branch)
svk mkdir //local -m "create locale branch dir"

6. Versioniertes Verzeichnis mirror für die remote SVN-Projekte erstellen (mirror branch)
svk mkdir //mirror -m "create mirror branch dir"

Wie wird eine Offline-Kopie eines Projektes aus dem Subversion erstellt?
Wenn der SVN-Server eine Authentifizierung benötigt und der Username vom angemeldeten Usernamen abweicht ist die einfachste Variante um SVN und somit auch SVK die Login-Daten anzugeben der folgende Befehl.
svn list --username username http://svn-server/Projektname/trunk/

Mit dem Befehl wird das Projektverzeichnis angezeigt und vorher der User authentifiziert. Subversion merkt sich die Usernamen und Passwort Einstellungen und SVK kann mit den folgenden Befehlen das Subversion spiegeln.

1. Konfiguration des SVN Mirrors mit
svk mirror http://svn-server/ //mirror/

2. Die Mirror Einstellung können mit folgenden Befehl geprüft werden
svk mirror --list

3. Holen des Projektes vom SVN-Server mit kompletter Revisionshistorie
svk sync //mirror/Projektname

# Nur HEAD Revision synkronisieren
svk sync –skipto HEAD //mirror/Projektname

Wie ist der Workflow wenn ich SVK benutze?
1. Wenn notwendig den Mirror aktualisieren falls sich auf dem Server etwas geändert hat.
svk sync //mirror/Projektname

2. Lokale Kopie erstellen um bessere Kontrolle zu haben was in den Mirror kommt. (Optional)
svk copy //mirror/Projektname //local/Projektname

3. Vom lokalen branch oder vom mirror branch eine Arbeitskopie erstellen.
# Wenn mit dem vorher erstellten lokalen branch gearbeitet werden soll
svk checkout //local/Projektname/trunk

# Wenn mit dem mirror direkt gearbeitet werden soll
svk checkout //mirror/Projektname/trunk

4. Gemütlich vor sich hin programmieren wenn nötig und andere User etwas in den branch eingebracht haben die Arbeitskopie mit folgenden Befehl aktualisieren.
svk update

5. Wenn gewünscht neue Dateien hinzufügen, verschieben oder umbenennen mit den folgenden Befehlen.
svk add
svk move
svk rename

6. Die Änderungen in das Repository mit folgenden Befehl übernehmen.
svk commit

7. Wenn mit der lokalen Kopie gearbeitet wird kann mit folgenden Befehlen der lokale branch mit dem mirror branch synchronisiert werden. Dazu ist es notwendig am Firmennetz zu hängen damit dann die Änderungen an das Subversion übermittelt werden können.
# Testlauf des merges um Konflikte zu erkennen und zu beheben (Option -C)
svk smerge -C //local/Projektname/trunk //mirror/Projektname/trunk

# Wenn alle Konflikte beseitigt sind die Änderungen übernehmen
svk smerge -l //local/Projektname/trunk //mirror/Projektname/trunk

8. Wenn direkt mit dem mirror branch gearbeitet wird kann der folgende Befehl verwendet werden. Wenn Konflikte auftreten können diese behoben werden.
svk push

Wie kann ich das lokale SVK Repository mit TortoiseSVN bzw. dem SVN Kommandozeilen-Tool benutzen?
1. Lokale Kopie erstellen die als SVN Repository dient
svk copy //mirror/Projektname //local/Projektname

2. Mit TortoiseSVN das lokale SVK branch Projektverzeichnis als URL angeben und als Arbeitskopie auschecken. Mit dem Kommandozeilen-Tool ist der Befehl:
svn co -p file:///SVKROOT/local/Projektname/trunk Arbeitsverzeichnis

3. Wenn man am Firmennetz hängt vom Remote-Repository die letzten Änderungen holen und mit der lokalen Kopie abgleichen.
svk sync //mirror/Projektname
svk smerge //mirror/Projektname //local/Projektname

4. Arbeitskopie mittels TortoiseSVN oder SVN Kommando aktualisieren und wie gehabt mit Tortoise Arbeiten um die Änderungen in das offline Repository zu übernehmen. An diesem Punkt ist eine Verbindung zum Firmennetz nicht mehr notwendig da die aktuelle Kopie im lokalen Repository liegt.

5. Wenn man dann wieder am Firmennetz hängt und seine Änderungen an das Subversion-Server übergeben will sind folgende Befehle auszuführen.
# aktualisieren des mirror-branches mit dem Subversion-Server im Firmennetz
svk sync //mirror/Projektname/trunk

# Testlauf des merges um Konflikte zu erkennen und zu beheben (Option -C)
svk smerge -C //local/Projektname/trunk //mirror/Projektname/trunk

# Wenn alle Konflikte beseitigt sind die Änderungen übernehmen
svk smerge -l //local/Projektname //mirror/Projektname

This entry was posted in Development, HowTo and tagged , , , . Bookmark the permalink.

Leave a Reply