Client-Einrichtung
Linux-Installation
Der Client für Linux wird bei Debian, Ubuntu und Linux Mint mit dem folgenden Befehl installiert:# apt install subversion
Windows-Client
Wer noch unter Windows arbeitet, kann die grafische Oberfläche TortoiseSVN nutzen.Client-Anwendung
Anlegen und Kopieren einer Projektstandes
Anlegen eines Repositories
$ svnadmin create /home/johannes/svnIn das Verzeichnis mit dem Quelltext wechseln und dort den aktuellen Stand als Basis für die Versionsverwaltung speichern.
$ cd ~/src/cpp/meinProjekt $ svn import file:///home/johannes/svn/meinProjekt -m "Erster Stand"Die Dateien im Verzeichnis werden hinzugefügt und als Revision 1 übertragen.
Die Option -m ermöglicht die Angabe eines Versionskommentars. Der ist zwingend. Wird er nicht per -m angegeben, wird man aufgefordert diesen direkt am Terminal einzugeben.
Einen Stand auschecken
Soll ein neues Arbeitsverzeichnis angelegt werden, um beispielsweise etwas auszuprobieren, wird ein Checkout durchgeführt.$ cd ~/tmp/test $ svn checkout file:///home/johannes/svn/meinProjekt
Arbeiten am Source-Code
Wenn man am Source-Code ändert, kann man sich den Status anzeigen lassen.$ svn status ? neu.cpp M paint.cppDie Datei paint.cpp wurde geändert, die Datei neu.cpp neu angelegt. Subversion weiß allerdings noch nichts davon und wird sie ignorieren.
Neue Datei zum Subversion hinzufügen
Die neue Datei wird zum Status hinzugefügt.$ svn add neu.cpp $ svn status A neu.cpp M paint.cppBeim Hinzufügen eines Verzeichnisses werden automatisch alle enthaltenen Dateien zum Repository hinzugefügt.
Dateien aus dem Repository löschen
Durch den Befehl delete oder rm wird eine Datei aus dem Repository entfernt. Gleichzeitig wird auch die lokale Datei gelöscht.$ svn delete mist.cpp
Vergleich mit dem alten Repository-Stand
Bei der Datei paint.cpp liegen also Änderungen gegenüber dem Stand im Repository vor. Diese kann man sich mit dem folgenden Befehl anzeigen lassen.$ svn diff neu.cpp
Lesen des aktuellen Stands aus dem Repository
Um ein eigenes Arbeitsverzeichnis gegenüber einem Repository auf den aktuellen Stand zu bringen, wird er per Update aktualisiert.$ svn update
Übernahme der Änderungen in das Repository
Letztlich sollen die Änderungen natürlich in der Versionskontrolle gespeichert werden. Dazu wird ein Commit durchgeführt.$ svn commit -m "Farbfehler beseitigt, Schattierung neu"
Rückname der Änderungen
Solange der Stand noch nicht per commit gesichert wurde, können die Aktionen mit dem Befehl revert zurückgenommen werden. Als Argument wird der Dateiname angegeben.$ svn revert dochkeinmist.cpp
Subversion Server einrichten
Ein zentraler Subversion-Server sollte aus verschiedenen Gründen keinesfalls auf der Basis eines Netzlaufwerkes eingerichtet werden. Stattdessen empfiehlt es sich, den Server auf der Basis des Web-Servers Apache einzurichten. Damit kann Subversion das Protokoll HTTP nutzen.# apt install apache2 # apt install subversion # apt install libapache2-svn apache2-mpm-preforkFür die Konfiguration findet man im Verzeichnis /etc/apache2/mods-enabled die Datei dav_svn.conf. Die Minimaleinrichtung sieht so aus:
<Location /svn> DAV svn # SVNPath /var/lib/svn SVNParentPath /var/lib/svn </Location>Mehrbenutzer ist auch möglich:
<Location /svn> DAV svn # SVNPath /var/lib/svn SVNParentPath /var/lib/svn AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd Require valid-user </Location>Für die Mehrbenutzervariante müssen die Passwörter gesetzt werden.
# htpasswd -c /etc/apache2/dav_svn.passwd johannes New password: Re-type new password: Adding password for user johannes #Vor eine Benutzung muss das Verzeichnis eingerichtet werden, das Repository angelegt, die Zugriffsrechte für den Apache-Server eingerichtet und der Apache neu gestartet werden.
# mkdir /var/lib/svn # svnadmin create /var/lib/svn/src # chown -R www-data /var/lib/svn/ # /etc/init.d/apache2 restartDatensicherung des Subversion
# svnadmin dump /var/lib/svn/src > svnsrc.dumpZurückholen:
# svnadmin create /var/lib/svn/src # svnadmin load /var/lib/svn/src < svnsrc.dump