Linux als SOHO-Server

für Linux- und Windows-Clients
http://linux.eusterholz.dyndns.org

Kapitel:

Home
Debian Installation
Debian Etc.
Internet-Zugang
Telnet
FTP
r-Utilities
SSH
Printing
NTP
Nameserver
NFS/NIS/Automount
Samba (SMB-Server)
Apache (WEB-Server)
Modem / ISDN
Backup
Etc.

 

Beispiel-Szenarien mit Subversion

Im Folgenden ein paar elementare Kommandos für das Handling mit einem Subversion-Server. Die Beispiele beziehen sich auf einem SVN-Server, der über 'svn://' bzw. 'http://'-Zugang bedient werden kann. Dabei wird nur die Arbeitsweise auf der Kommandozeile berücksichtigt (z.B. unter Linux oder auch Windows), das arbeiten mit grafische Clients sollten eher selbsterklärend sein.

Die folgenden Beispiele beziehen sich auf dem zuvor beschriebenen Subversion-Server, welcher über den Namen 'svn.eusterholz.tld' angesprochen werden kann, alternativ kann natürlich auch die IP-Adresse verwendet werden. Bezogen wird sich bei den Beispiele immer auf das Repository mit ebenfalls den Namen 'repository'. Daraus resultierend kann so der SVN-Server mit 'svn://svn.eusterholz.tld/repository/' bzw. 'http://svn.eusterholz.tld/svn/repository/' bedient werden.

Generell kann zu dem Kommando 'svn' bzw. auch 'svnadmin' eine direkte Hilfe angefordert werden, hierzu sind die Kommandos mit 'help' aufzurufen. Weitere Informationen sind im Online-Handbuch zu Subversion (http://svnbook.red-bean.com/) zu finden.

Projekt + Layout anlegen

Ein Projekt inklusive Layout kann als berechtigter Subversion-User mit dem  'svn://'-Zugang unter Verwendung von 'svn mkdir' direkt angelegt werden:

svn mkdir svn://svn.eusterholz.tld/repository/project_1/ -m 'initial project_1'
svn mkdir svn://svn.eusterholz.tld/repository/project_1/trunk/ -m 'create the trunk-dir in the project_1'
svn mkdir svn://svn.eusterholz.tld/repository/project_1/branches/ -m 'create branches-dir in the project_1'
svn mkdir svn://svn.eusterholz.tld/repository/project_1/tags/ -m 'create the tags-dir in the project_1'

bzw. über den 'http://'-Zugang mit:

svn mkdir http://svn.eusterholz.tld/svn/repository/project_2/ -m 'initial project_2'
svn mkdir http://svn.eusterholz.tld/svn/repository/project_2/trunk/ -m 'create the trunk-dir in the project_2'
svn mkdir http://svn.eusterholz.tld/svn/repository/project_2/branches/ -m 'create branches-dir in the project_2'
svn mkdir http://svn.eusterholz.tld/svn/repository/project_2/tags/ -m 'create the tags-dir in the project_2'

Noch effizienter geht das, wenn man zunächst lokal die Projektstruktur und das Layout aufbaut,, hierzu ein Beispiel:

mkdir ~/svn_tmp
cd ~/svn_tmp
mkdir -p ./project_3/{trunk,branches,tags}
mkdir -p ./project_4/{trunk,branches,tags}

In diesem Beispiel werden exemplarisch die Projekte 'project_3' und 'project_4' angelegt. Anschließend werden die Projekte in einem Rutsch mittels 'svn import' in das Repository überträgt. Zunächst exemplarisch mit dem 'svn://'-Zugang:

svn import ./project_3 svn://svn.eusterholz.tld/repository/project_3 -m 'initial project_3'

oder mit dem 'http://'-Zugang für das 'projekt_4'

svn import ./project_4 http://svn.eusterholz.tld/svn/repository/project_4 -m 'initial project_4'

Danach kann die lokale Struktur wieder gelöscht werden:

rm -rf project_2/ project_3/

Selbstverständlich können auch schon fertige Projekte/Strukturen mit vielen Dateien mit dem 'svn import' erstmalig mit dieser Methode eingebracht werden.

'svn list' - Auflisten des Repositorys

Die Ergebnisse des Imports können mit dem Kommando 'svn list' überprüft werden:

svn list --verbose svn://svn.eusterholz.tld/repository/

bzw.:

svn list --recursive http://svn.eusterholz.tld/svn/repository/

Im ersten Beispiel wird erfolgt die Ausgabe ausführlich ('--verbose') und im zweiten Bsp. rekursiv.

'svn checkout' - Arbeitskopie anlegen

Das Kommando 'svn checkout' wird benötigt um eine lokale Arbeitskopie ('Working Copy') des Projektes zu erhalten, dabei wird das aktuelle Verzeichnis automatisch als Arbeitsverzeichnis festgelegt. Hierzu ein Beispiel mit der 'svn://'-Zugangsart:

svn checkout svn://svn.eusterholz.tld/repository/project_1/

Auch kann direkt auch nur z.B. der 'trunk'-Bereich eines Projektes in ein angegebenes Verzeichnis erzeugt werden. Hierzu ein Beispiel mit dem 'http://'-Zugang:

svn checkout http://svn.eusterholz.tld/svn/repository/project_2/trunk/ ./working_dir

Es wird vom zweitem Projekt nur der 'trunk'-Bereich im Arbeitsverzeichnis mit dem Namen '/working_dir' aufgebaut.
Im Arbeitsverzeichnis werden weitere Verzeichnisse mit dem Namen '.svn' erzeugt, die für die interne Verwaltung von Subversion benötigt werden.

Arbeiten innerhalb der Arbeitskopie

Innerhalb der 'Working Copy' kann mit den jeweiligen Möglichkeiten eines Betriebssystems wie in einem ganz normalen Verzeichnis gearbeitet werden. Die Dateien, die geändert werden, werden mit dem passenden Editor bzw. Tool aufgerufen, bearbeitet und ganz normal wieder gespeichert.
Wenn man in der 'Working Copy' eine neue Datei oder ein neues Verzeichnis anlegt, muss folgendes bedacht werden. Es reicht nicht aus, die Verzeichnisstruktur lokal zu ändern. Solche Änderungen müssen danach auch dem Subversion bekannt gemacht werden, damit später das Repository entsprechend angepasst werden kann. Mit den folgenden Kommandos kann dieses umgesetzt werden:

  • svn add         Datei bekanntmachen, die hinzugefügt werden soll.
  • svn delete      Datei bekanntmachen, die gelöscht werden soll
  • svn copy        Datei bekanntmachen, die kopiert werden soll
  • svn move        Datei bekanntmachen, die verschoben werden soll

Zu bedenken ist, dass die gerade vorgestellten Kommandos nur Vormerkungen für das Repository sind, die erst mit einem späteren mittels 'svn commit' im Repository wirksam werden.

'svn update' - Aktualisieren der Arbeitskopie

Mit dem 'svn update' wird die Arbeitskopie mit dem aktuellen Stand des Repositorys aktualisiert. Beim Aufruf innerhalb der Arbeitskopie ist keine Verzeichnisangabe notwendig:

svn update

Ist keine Revision (Option '-r') angegeben, wird die Arbeitskopie auf den aktuellen Stand der 'HEAD'-Revision gebracht. Ansonsten wird die Arbeitskopie mit der durch '-r' angegebenen Revision synchronisiert.

'svn status' - Zustand der Arbeitskopie anzeigen

Gibt den Status der Dateien und Verzeichnisse der Arbeitskopie aus. Der Status kann einfach mit folgenden Kommando abgefragt werden:

svn status

Dabei kann der Status z.B. folgendermaßen aussehen (Flag beachten):

  • '?' Datei/Verzeichnis ist nicht versionskontrolliert
  • 'A' Datei/Verzeichnis ist zum Hinzufügen vorgemerkt
  • 'C' Datei hat Konflikte durch einen Update
  • 'D' Datei ist zum Löschen vorgemerkt
  • 'M' Der Inhalt der Datei hat lokale Änderungen

'svn commit' - Einchecken ins Repository

Beim Einchecken werden die geänderten Dateien aus der Arbeitskopie ins Repository übertragen. Dieser Vorgang wird durch folgendes Kommando realisiert:

svn commit -m 'transfer changes to repository'

Wichtig dabei ist die Option '-m', mit dem ein Kurzkommentar zu dem Vorgang mitgeliefert wird. Wird  die Option nicht mittels '--message' oder '--file' übergeben, wird ein Editor gestartet.

Der grundlegende Arbeitszyklus

Generell empfiehlt es sich als Benutzer von Subversion den empfohlenen Arbeitszyklus einzuhalten. Dieser grundlegende Arbeitszyklus ist im Subversion-Handbuch (Kapitel 2) ausführlich beschrieben (http://svnbook.red-bean.com/nightly/de/svn.tour.cycle.html). Nach dem grundlegenden Arbeitszyklus sehen die Schritte wie folgt aus:

  • Auschecken bzw. Aktualisieren der lokalen Kopie (aller Dateien oder nur einzelner)
  • Ändern der Datei bzw. der Dateien auf der lokalen Festplatte ('Working Copy')
  • Wenn alle Änderungen vorgenommen wurden, ein erneutes Aktualisieren der lokalen Kopie
  • (bzw. der Dateien, an denen Änderungen vorgenommen wurden) Falls nötig, ein Zusammenführen der parallel entstandenen Versionen, Auflösen der Konflikte
  • Verfassen von Änderungskommentaren und 'commit' (Einchecken) der Datei bzw. der Dateien

 

Copyright © 2004 Norbert Eusterholz