Home Publikationen HowTo(s) Subversion einrichten, Sicherung einspielen und aus CVS importieren
Subversion einrichten, Sicherung einspielen und aus CVS importieren Drucken
Mittwoch, den 17. Dezember 2008 um 11:56 Uhr

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 muß 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.

$ svnserve -d

Der Standard-Port für Subversion ist 3690. Mit dem Parameter --listen-port nnnn 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.

$ cat /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 13) und autorisierte (Zeile 14) Benutzer bearbeitet. In der Zeile 21 wird der Dateiname mit den Passwörtern und in Zeile 33 der Name des Realm angegeben.

  1. $ cat /srv/svn/repository/conf/svnserve.conf
  2. ### This file controls the configuration of the svnserve daemon, if you
  3. ### use it to allow access to this repository. (If you only allow
  4. ### access through HTTP: and/or file: URLs, then this file is
  5. ### irrelevant.)
  6.  
  7. ### Visit http://subversion.tigris.org/ for more information.
  8.  
  9. [general]
  10. ### These options control access to the repository for unauthenticated
  11. ### and authenticated users. Valid values are "write", "read",
  12. ### and "none". The sample settings below are the defaults.
  13. anon-access = read
  14. auth-access = write
  15. ### The password-db option controls the location of the password
  16. ### database file. Unless you specify a path starting with a /,
  17. ### the file's location is relative to the directory containing
  18. ### this configuration file.
  19. ### If SASL is enabled (see below), this file will NOT be used.
  20. ### Uncomment the line below to use the default password file.
  21. password-db = passwd
  22. ### The authz-db option controls the location of the authorization
  23. ### rules for path-based access control. Unless you specify a path
  24. ### starting with a /, the file's location is relative to the the
  25. ### directory containing this file. If you don't specify an
  26. ### authz-db, no path-based access control is done.
  27. ### Uncomment the line below to use the default authorization file.
  28. # authz-db = authz
  29. ### This option specifies the authentication realm of the repository.
  30. ### If two repositories have the same authentication realm, they should
  31. ### have the same password database, and vice versa. The default realm
  32. ### is repository's uuid.
  33. 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 neueSVN- 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 (1)
Subversion auf einem QNAP NAS TS-409 einrichten
1 Sonntag, den 03. Mai 2009 um 14:47 Uhr
Frank W. Rahn
Dazu über das Optware IPKG Subversion installieren
# ipkg update
# ipkg install svn

Nun muss der Server in der autorun.sh eingefügt werden
# mount -t ext2 /dev/mtdblock5 /tmp/config
# vi /tmp/config/autorun.sh

Folgende Zeilen anhängen
rm -ef /opt
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
# umount /tmp/config

Kommentar hinzufügen

Ihr Name:
Ihre E-Mail-Adresse:
Titel:
Kommentar:
 

Creative Commons LicenseDieses Werk ist unter der Creative Commons
Attribution-No Derivative Works 2.0
lizenziert.