Es soll ein Repository mit Subversion eingerichtet und ein Export aus einem anderen Subversion- bzw. CVS-Repository mit vollständiger Historie importiert werden.
In diesem Beitrag werden folgende Themen dargestellt:
Aufsetzen eines Subversion-Repositories
Nachdem die benötigte Software installiert und ein Benutzer svn sowie eine Benutzergruppe svn eingerichtet wurde, kann ein Repository angelegt werden. Dazu wird zuerst ein Ablageort erzeugt und ein rudimentäres Repository angelegt.
$ mkdir /srv/svn/repository
$ svnadmin create /srv/svn/repository
Dieses Repository muss nun dem Benutzer und der Benutzergruppe zu geordnet werden. Alle Benutzer dieses Repositories müssen zu der Benutzergruppe svn gehören.
$ chown -R svn /srv/svn/repository
$ chgrp -R svn /srv/svn/repository
Zusätzlich müssen alle Mitglieder der Benutzergruppe Schreibrecht auf das 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 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.
Der Standard-Port für Subversion ist 3690. Mit dem Parameter --listen-port n kann auch ein anderer Port angegeben werden.
Damit nun auch 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 Repository zugreifen.
Inhalt von /srv/svn/repository/conf/passwd
-
### 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 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.
Inhalt von /srv/svn/repository/conf/svnserve.conf
-
### 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 Repository von aussen zugegriffen werden.
$ svn list svn://localhost/srv/svn/repository
Importieren eines Subversion-Repositories
Zunächst wird ein bestehenden Subversion-Repository exportiert. Dieses muss im gleichen Dateisystem erfolgen, wo auch das Repository liegt.
$ svnadmin dump /srv/svn/projects > projects-dumpfile
* Dumped revision 0.
* Dumped revision 1.
* Dumped revision 2.
...
Als nächstes wird im neuen Repository ein neues Verzeichnis projects angelegt.
$ svn mkdir -m "Initial projects root" file:///srv/svn/repository/projects
Committed revision 1.
Jetzt kann das alte Repository unter dem neuen Verzeichnis mit allen Historien in das neue Repository eingespielt werden. Wiederum muss der Befehl im gleichen Dateisystem, wo das neue 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 Repository nicht unter dem neuen Verzeichnis abgelegt werden soll, so kann der Parameter --parent-dir weggelassen werden.
Liegen das alte und neue 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 Repository steht sofort nach den Änderungen bereit.
Importieren eines CVS-Repositories
Zunächste wird ein bestehendes CVS-Prpository exportiert.
$ 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 Repository importiert werden.
$ svnadmin load /srv/svn/repository --parent-dir projects < projects-cvs2svn-dump
Nun ist das alte CVS-Repository mit allen seinen Historien im neuen Repository vorhanden.
Eine Alternative ist, wenn altes und neues Repository im gleichen Dateisytem liegen, folgender Befehl. Dieser kopiert das alte CVS-Repository mit allen Historien in das neue Subversion- Reposity.
$ cvs2svn -s /srv/svn/repository /srv/cvs/repository
Offene Schritte
- 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.
Kommentare
Frank W. Rahn
So, 30.01.2011
Permanenter Link
Subversion auf einem QNAP NAS TS-409 einrichten
Dazu über das Optware IPKG Subversion installieren
$ ipkg install svn
Nun muss der Server in der
autorun.sheingefügt werden$ vi /tmp/config/autorun.sh
Folgende Zeilen anhängen
$ ln -sf /share/MD0_DATA/optware/opt /opt
$ /opt/bin/svnserve -d --pid-file=/tmp/svnserve.pid
Nach dem Bearbeiten mit folgendem Befehl wieder entfernen
Neuen Kommentar schreiben