Ein Tag mit Subversion

Subversion ist eine konsolenbasierte Versionsverwaltung, für die es inzwischen jedoch einige grafische Oberflächen gibt.

Installation

Subversion kann bezogen werden von der Internetseite der Firma Tigris:  http://subversion.tigris.org

Dort navigieren Sie über das Menü auf der linken Seite zu Download und suchen Ihr Betriebssystem. Linux-Systeme bieten hierfür meistens Installationsroutinen an.

Bei  Debian, meinem Lieblingsbetriebssystem gebe ich folgendes als root ein:
apt-get install svn

Installation des Servers

Das Subversion Serverprogramm läuft nur auf Linux. Sie können Ihren Provider fragen oder Ihren eigenen Server bei sich zu Hause aufsetzen. Mein Server im Wohnzimmer ist ein 486er mit einem Debian ohne grafische Oberfläche. Ich habe einen Router mit  dyndns-Support. Damit ist dieser immer über  splizz.dyndns.org erreichbar. Obwohl Arcor meine IP-Adresse alle 24 ändert;-)

Installation auf debian

  • Mein Rechner im Wohnzimmer heißt "Takamotu". Im folgenden steht kursiver Text für Konsoleneingaben.
  • TAKAMOTU:~$ apt-get install subversion subversion-tools
  • Pfad ist /var/lib/svn
  • evtl. vorhandes Repository sichern und übertragen mit
    • akira@PCLOCAL:~$ tar -cjf [Pfad] /tmp/[Dateiname].tar.bz2
    • Auf Zielsystem kopieren mit SSH !scp akira@splizz.dyndns.org:/[Pfad] /tmp/[Dateiname]
    • akira@PCLOCAL:~$ cd /tmp (Wichtig: in das Verzeichnis wechseln)
    • akira@PCLOCAL:~$ tar -xjf [Dateiname] (entpacken)
    • akira@PCLOCAL:~$ cp -a /var/lib/svn/modulname (kopieren)
  • neues Repository anlegen
    • TAKAMOTU:~$ svnadmin create /var/lib/svn/modulname (Repository initialisieren)
    • TAKAMOTU:~$ groupadd svn (Gruppe svn anlegen)
    • TAKAMOTU:~$ chown -R root:svn /var/svn/modulname (Besitzer des Repositories setzen)
    • TAKAMOTU:~$ chmod -R 2770 /var/svn/modulname (Rechte des Repositories setzen)
    • akira@PCLOCAL:~$ cd /tmp (in ein temporäres Verzeichnis wechseln)
    • akira@PCLOCAL:~$ mkdir eLearning (Das Beispielprojekt soll "eLearning" heißen)
    • akira@PCLOCAL:~$ cd eLearning
    • akira@PCLOCAL:~$ mkdir trunk (Ordner trunk für den Quelltext)
    • akira@PCLOCAL:~$ mkdir branches (Ordner branches für Zweige)
    • akira@PCLOCAL:~$ mkdir tags (Ordner trunk für Tags)
    • akira@PCLOCAL:~$ cp -a [Pfad]/eLearning/* /tmp/eLearning/trunk (Projektinhalt kopieren)
    • akira@PCLOCAL:~$ svn import svn+ssh://splizz.dyndns.org:/var/svn/eLearning -m 'Initialer Import'
  • Das Repository sollte jetzt bereit sein.

Die Arbeit beginnt

Als Entwickler arbeiten Sie in einer sogenannten "Sandbox". Dies ist nichts anderes als ein Verzeichnis auf Ihrem PC, in dem Sie an dem Projekt arbeiten. Zu den Projektdateien werden jedoch noch Ordner benötigt, die es Subversion ermöglichen die Versionsverwaltung zu überwachen. Sie erstellen eine solche Sandbox, indem Sie ein neues Verzeichnis anlegen. Unser Beispielverzeichnis soll "eLearning" heißen. Führen Sie folgenden Befehl aus:

akira@PCLOCAL:~/Work$ svn co svn+ssh://splizz.dyndns.org/var/svn/eLearning/eLearning/trunk eLearning

Updates

Vorrausgesetzt Sie arbeiten nicht alleine, wollen Sie von Zeit zu Zeit oder durch Absprache mit den Anderen die Arbeit der anderen erhalten. Auf englisch heißt das Aktualisieren der Sandbox update. Es ist also der Befehl:

svn update

Führen Sie obigen Befehl in Ihrer Sandbox aus, sind keine weiteren Parameter mehr notwendig. Alle Einstellungen wie der Name des Servers(splizz.dyndns.org) sind schon in der Sandbox gespeichert. Subversion aktualisiert die Dateien. Dies kann nun drei Unterschiedliche Ergebnisse ergeben:

  • U bedeutet, dass die Datei aktualisiert wurde
  • M bedeutet, dass ein zweiter Entwickler an der gleichen Datei wie Sie gearbeitet hat. Die Unterschiede wurden durch Subversion jedoch korrekt zusammengeführt.
  • C bedeutet, dass ein zweiter Entwickler an der gleichen Datei wie Sie gearbeitet hat. Die Unterschiede waren jedoch unvereinbar. Sie müssen Hand anlegen oder den anderen Entwickler fragen.