Subversion einrichten, Sicherung einspielen und aus CVS importieren
Es soll ein Repository mit Subversion eingerichtet und ein Export mit vollständiger Historie, aus einem anderen Subversion bzw. CVS Repository, importiert werden.
Aufsetzen eines Subversion Repositories
Nachdem die benötigte Software installiert und ein Benutzer svn
sowie eine Benutzergruppe svn
eingerichtet wurde, kann ein Subversion Repository angelegt werden. Dazu wird zuerst ein Ablageort erzeugt und ein rudimentäres Subversion Repository angelegt.
$ mkdir /srv/svn/repository $ svnadmin create /srv/svn/repository
Dieses Subversion Repository muss nun dem Benutzer und der Benutzergruppe zu geordnet werden. Alle Benutzer dieses Subversion Repositories müssen der Benutzergruppe svn
angehören.
$ chown -R svn /srv/svn/repository $ chgrp -R svn /srv/svn/repository
Zusätzlich müssen alle Mitglieder der Benutzergruppe svn
Schreibrecht auf das Subversion Repository haben. Allerdings wird das Schreib- und Leserecht auf die Konfiguration gleich wieder auf dem Benutzer svn
beschränkt.
$ chmod -R g+w /srv/svn/repository $ chmod -R go-rw /srv/svn/repository/conf $ chmod -R o-r /srv/svn/repository/conf
Nun kann schon lokal auf das Subversion Repository z. B. mit …
$ svn list file:///srv/svn/repository
… zugegriffen werden. Da aber auch der entfernte Zugriff möglich sein soll, wird nun der Serverprozess gestartet.
$ svnserve -d
Der Standard-Port für den Subversion Server ist 3690. Mit dem Parameter --listen-port n
kann ein anderer Port angegeben werden.
Damit nun auch die Benutzer zugreifen können, wird in der Datei conf/passwd
die Benutzer mit ihren Passwörtern abgelegt. Diese Benutzer können dann über den Serverprozess auf das Subversion Repository zugreifen.
### This file is an example password file for svnserve. ### Its format is similar to that of svnserve.conf. As shown in the ### example below it contains one section labelled [users]. ### The name and password for each user follow, one account per line. [users] # harry = harryssecret # sally = sallyssecret username = password
Danach müssen noch die Konfiguration conf/svnserve.conf
für das Subversion Repository bearbeitet werden. Dort wird der generelle Zugriff für unautorisierte (Zeile 12) und autorisierte (Zeile 13) Benutzer bearbeitet. In der Zeile 20 wird der Dateiname mit den Passwörtern und in Zeile 32 der Name des Realm angegeben.
### This file controls the configuration of the svnserve daemon, if you ### use it to allow access to this repository. (If you only allow ### access through http: and/or file: URLs, then this file is ### irrelevant.) ### Visit http://subversion.tigris.org/ for more information. [general] ### These options control access to the repository for unauthenticated ### and authenticated users. Valid values are "write", "read", ### and "none". The sample settings below are the defaults. anon-access = read auth-access = write ### The password-db option controls the location of the password ### database file. Unless you specify a path starting with a /, ### the file's location is relative to the directory containing ### this configuration file. ### If SASL is enabled (see below), this file will NOT be used. ### Uncomment the line below to use the default password file. password-db = passwd ### The authz-db option controls the location of the authorization ### rules for path-based access control. Unless you specify a path ### starting with a /, the file's location is relative to the the ### directory containing this file. If you don't specify an ### authz-db, no path-based access control is done. ### Uncomment the line below to use the default authorization file. # authz-db = authz ### This option specifies the authentication realm of the repository. ### If two repositories have the same authentication realm, they should ### have the same password database, and vice versa. The default realm ### is repository's uuid. realm = My Repository
Nun kann auf das Subversion Repository von außen zugegriffen werden.
$ svn list svn://localhost/srv/svn/repository
Exportieren und Importieren eines Subversion Repositories
Zunächst wird ein bestehenden Subversion Repository mit vollständiger Historie exportiert. Dieses muss im gleichen Dateisystem erfolgen, wo auch das Subversion Repository liegt.
$ svnadmin dump /srv/svn/projects > projects-dumpfile * Dumped revision 0. * Dumped revision 1. * Dumped revision 2. ...
Als nächster Schritt wird im neuen Subversion Repository ein neues Verzeichnis projects
angelegt.
$ svn mkdir -m "Initial projects root" file:///srv/svn/repository/projects Committed revision 1. $
Jetzt kann das alte Subversion Repository unter dem neuen Verzeichnis mit vollständiger Historie in das neue Subversion Repository eingespielt werden. Wiederum muss der Befehl im gleichen Dateisystem, wo das neue Subversion Repository liegt, durchgeführt werden.
$ svnadmin load /srv/svn/repository --parent-dir projects < projects-dumpfile <<< Started new transaction, based on original revision 1 * adding path : projects/... ... done. ------- Committed new rev 2 (loaded from original rev 1) >>> ...
Falls das alte Subversion Repository nicht unter dem neuen Verzeichnis abgelegt werden soll, so kann der Parameter --parent-dir
weggelassen werden.
Liegen das alte und neue Subversion Repository im gleichen Dateisystem, kann auch folgender Befehl verwendet werden.
$ svnadmin dump /srv/svn/projects | svnadmin load /srv/svn/repository --parent-dir projects
Das neue Subversion Repository steht sofort nach den Änderungen bereit.
Exportieren und Importieren eines CVS Repositories
Zunächst wird ein bestehendes CVS Repository mit vollständiger Historie exportiert. Dazu muss unter Linux das Package cvs2svn
installiert sein.
$ cvs2svn --dumpfile=projects-cvs2svn-dump --encoding=utf_8 /srv/cvs/projects
Nun wurde die Datei projects-cvs2svn-dump
im aktuellen Verzeichnis erstellt. Diese kann nach dem Verfahren aus dem vorherigen Kapitel ins neue Subversion Repository mit vollständiger Historie importiert werden.
$ svnadmin load /srv/svn/repository --parent-dir projects < projects-cvs2svn-dump
Nun ist das alte CVS Repository mit allen seinen Historien im neuem Subversion Repository vorhanden.
Eine Alternative ist der folgende Befehl, wenn altes und neues Subversion Repository im gleichen Dateisystem liegen. Dieser kopiert direkt das alte CVS Repository mit allen Historien in das neue Subversion Repository.
$ cvs2svn -s /srv/svn/repository /srv/cvs/repository
Subversion auf einem QNAP NAS TS-409 einrichten
Auf Wunsch von Sven Müller, durch seinem Kommentar, habe ich hier noch beschrieben, wie auf einen QNAP TS-409 Pro Turbo NAS ein Subversion Repository angelegt werden kann.
Dazu über das Optware IPKG (Itsy Package Management System) der Subversion Server installiert werden. Das Optware IPKG ist ein Package Manager, welcher bei der Linux-Distribution für eingebettete Systeme OpenWRT verwendet wird.
Zunächst wird die Software des Subversion Servers installiert.
[~] $ ipkg update [~] $ ipkg install svn
Als nächstes muss das Starten des Subversion Servers im Init-Skript autorun.sh
eingefügt werden. Dazu muss die Partition /dev/mtdblock5
mit den Init-Skripten gemounted werden.
[~] $ mount -t ext2 /dev/mtdblock5 /tmp/config [~] $ vi /tmp/config/autorun.sh
In der Datei autorun.sh
werden die folgende Befehle ab Zeile 3 angehangen.
#!/bin/sh rm -ef /opt ln -sf /share/MD0_DATA/optware/opt /opt /opt/bin/svnserve -d --pid-file=/tmp/svnserve.pid
Nach dem Bearbeiten der Datei autorun.sh
wird mit folgendem Befehl die Partition wieder ausgehangen.
[~] $ umount /tmp/config
Die offene Punkte
- Den Zugriff über die HTTP/HTTPS Erweiterung WebDAV ermöglichen, dazu wird ein Apache 2-Webserver benötigt.
- Upgrade von Subversion auf eine höhere Version.
Die Literaturempfehlungen
- Apache Subversion
- Apache Subversion
- Offizielle Subversion Dokumentation
- Versionskontrolle mit Subversion (*)
- Wer ist der optimale Java Bean Mapper? - Freitag, 22. September 2023
- Spring Boot Webanwendung: Die ersten Schritte (Tutorial) - Montag, 28. März 2016
- Mainframe-Zugriff via Java - Sonntag, 04. Mai 2014
Hallo Frank,
da Du ja auch einen QNAP NAS hast, kannst Du mal beschreiben, wie man dort einen Subversion aufsetzt?
Viele Grüße
Sven
Hallo Sven,
interessante Frage. Ich schaue mal, was ich machen kann.
Viele Grüße
Frank
Hallo Sven,
ich hab das Installieren und Starten des Subversion Server beschrieben.
Ein Repository hab ich, wie oben beschrieben, unter dem Verzeichnis
/share/Repository
angelegt.Viele Grüße und Spaß
Frank