SVN: Quickstart

Welche Schritte sind notwendig, um einen unversionierten Verzeichnisbaum in ein Repository zu bringen und darin Änderungen vorzunehmen?

Repository erstellen und Dateien importieren

Das Subversion-Repository muss zunächst mit svnadmin erzeugt werden:

svnadmin create /path/to/newrepos/svn

Die Subversion-Verzeichnisstruktur wird dabei im Verzeichnis /var/svn/newrepos gespeichert (absolute oder relative Pfadangabe möglich).
Nach dem Erstellen dieser Struktur, müssen die Dateien in das Repository importiert werden:

svn import /project/path/with/files file:///path/to/newrepos/svn/ -m "Erstimport"

Anfänglicher Checkout

Das Auschecken eines Repositorys erzeugt eine „Arbeitskopie“ desselben auf dem lokalen Rechner. Diese Arbeitskopie umfasst die Revision HEAD (die letzte Revision) des auf der Kommandozeile angegebenen Subversion-Repositories:

svn checkout file:///path/to/newrepos/svn/ /Users/username/myworktree/

Das Verzeichnis /Users/username/myworktree/ dient dann als eigentliches Arbeitsverzeichnis.

Grundlegender Arbeitszyklus

An dieser Arbeitskopie können nun Änderungen vorgenommen werden, und mit folgenden Punkten in das Repository eingepflegt werden:

Der typische Ablauf sieht folgendermaßen aus:

1. Arbeitskopie aktualisieren svn update
2. Änderungen vornehmen. svn add
svn delete
svn copy
svn move
3. Änderungen untersuchen. svn status
svn diff
4. Änderungen eventuell zurücknehmen. svn revert
5. Konflikte auflösen (Änderungen anderer einarbeiten). svn update
svn resolve
6. Änderungen ins Repository bringen. svn commit

Dateien ausschließen

Unter Umständen gibt es im Arbeitsverzeichnis auch Dateien (beispielsweise temporäre Dateien oder Log-Dateien), die nicht von Subversion verwaltet werden sollen. Diese Dateien können durch setzen der Einstellung svn:ignore aus dem Repository ausgeschlossen werden:

svn propset svn:ignore "eineDatei[Enter]nochEine[Enter]*.log[keinEnter]" PFAD

PFAD ist hierbei eine relative Pfadangabe auf den die Einstellungen angewendet werden sollen.

Gibt es beispielsweise ein Verzeichnis tmp/ dessen Inhalt komplett ignoriert werden soll, dann führt man im Terminal folgenden Befehl aus:

svn propset svn:ignore "*" tmp/

Der „*“ steht in diesem Fall für alle Dateien in diesem Verzeichnis „tmp/“. Möchte man propset auf alle enthaltenen Verzeichnisse rekursiv anwenden, dann einfach --recursive als Parameter an svn propset übergeben.

Die aktuell gesetzten ignore-Einstellungen eines Verzeichnisses können über propget abgerufen werden:

svn propget svn:ignore tmp/

Das Löschen einer gesetzten Einstellung erfolgt über propdel (analog zu propset):

svn propdel svn:ignore "*" tmp/

Keywords

Subversion ist in der Lage, Stichworte zu ersetzen und damit dynamische Informationen über die versionierte Datei in die Datei selbst zu schreiben, wie z.B. das letzte Änderungsdatum oder die letzte Revision.

Subversion kennt unter anderem folgende Stichworte: Id, Date, Revision, Author, LastChangedDate, LastChangedRevision, LastChangedBy, HeadURL. Ein besonderes Keyword stellt Id dar, welches eine Kombination mehrerer Stichworte ausgibt.

Um ein Stichwort in einer Datei zu nutzen, muss das Keyword für diese Datei zunächst über propset aktiviert werden:

svn propset svn:keywords "Revision Author Id Date" [filename]

Und anschließend zwischen zwei $ in die Datei (z.B. PHP) geschrieben werden:

<?php
/**
 * @version $Revision$
 */

Die Stichworte werden ersetzt, nachdem für die Datei svn commit ausgeführt wurde. Das angegebene Keyword der Datei ändert sich nach dem Commit in:

<?php
/**
 * @version $Revision: 442$
 */

Properties automatisch setzen

Normalerweise muss propset für jede Datei einzeln durchgeführt werden. Um dies zu vereinfachen, kann in der Subversion-Konfigurationsdatei eingestellt werden, dass für bestimmte Dateitypen bestimmte Properties automatisch gesetzt werden. Dazu setzt man in der Subversion-Config im Abschnitt [miscellany] die Option:

[miscellany]
enable-auto-props = yes

Sollen nun für *.php-Dateien Keywords automatisch gesetzt werden, dann muss dies im Abschnitt [auto-props] aktiviert werden:

[auto-props]
*.php= svn:keywords=Revision LastChangedRevision Id Date

Wo ist meine Subversion config-Datei?

Die Konfigurationsdatei befindet sich für Mac / Linux unter:
~/.subversion/config oder /etc/subversion/config
und für Windows unter
%appdata%\subversion\config.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.