Apache Subversion (SVN)

Nov. 1, 2011·
Julio Batista Silva
Julio Batista Silva
· 2 Min Lesezeit

Subversion (SVN) ist ein Open‑Source‑VCS, das als Ersatz für das limitierte CVS entstand. SVN verwaltet Dateien/Verzeichnisse und deren Änderungen im Zeitverlauf. So lassen sich alte Versionen wiederherstellen oder der Verlauf nachvollziehen.

Ich bin kein großer SVN‑Fan (Git FTW!), aber ich „hasse“ es auch nicht wie Linus und musste es schon für ein Uni‑Projekt einsetzen.

  1. Installationen und Grundkonfiguration

    1. Subversion installieren

      sudo pacman -S subversion
      
    2. Apache installieren

      sudo pacman -S apache
      

      Tipps zur Apache‑Konfiguration: Wiki.

    3. Sicherstellen, dass folgende Zeilen in /etc/httpd/conf/httpd.conf vorhanden sind (falls nicht, hinzufügen):

      LoadModule dav_module           modules/mod_dav.so
      LoadModule dav_fs_module        modules/mod_dav_fs.so
      LoadModule dav_svn_module       modules/mod_dav_svn.so
      LoadModule authz_svn_module     modules/mod_authz_svn.so
      
    4. Die Zeile Include /etc/httpd/conf/extra/httpd-ssl.conf in /etc/httpd/conf/httpd.conf auskommentiert lassen.

    5. SSL‑Zertifikat erzeugen

      cd /etc/httpd/conf/
      openssl req -new -x509 -keyout server.key -out server.crt -days 365 -nodes
      
    6. Apache für SVN einrichten – folgende Blöcke zu /etc/httpd/conf/extra/httpd-ssl.conf hinzufügen:

      ## Für SVN
      <Location /svn>
          DAV svn
          SVNParentPath /srv/svn/repositorios
          AuthName "SVN Repositories"
          AuthType Basic
          AuthzSVNAccessFile /srv/svn/svn-policy
          AuthUserFile /srv/svn/svn-auth
          Satisfy Any
          Require valid-user
      </Location>
      
  2. Verzeichnisse, Benutzer und Rechte konfigurieren

    1. Gruppe für Repo‑Zugriff anlegen

      sudo groupadd svnusers
      
    2. Wurzelverzeichnis für Repos anlegen

      mkdir -p /srv/svn/repositorios
      chmod -R 755 /srv/svn/repositorios
      
    3. Zugriff für dich und Apache sicherstellen

      sudo gpasswd -a http svnusers
      sudo gpasswd -a julio svnusers
      

      Danach neu anmelden, damit die Gruppen greifen.

  3. Zugriffsrichtlinien definieren – /srv/svn/svn-policy

[/]
* = r

[projeto:/]
julio = rw
  1. Benutzerdatei /srv/svn/svn-auth mit htpasswd erstellen
sudo htpasswd -cs /srv/svn/svn-auth julio

Weitere Benutzer ohne -c hinzufügen.

  1. Repository anlegen
svnadmin create /srv/svn/repositorios/projeto

Rechte setzen:

sudo chown -R http.svnusers /srv/svn/repositorios/projeto
sudo chmod -R g-w /srv/svn/repositorios/projeto
sudo chmod -R g+w /srv/svn/repositorios/projeto/{db,locks}
  1. Repo‑Struktur
project
|--branches
|--tags
|--trunk
  • Branches: parallele Entwicklungs‑/Maintenance‑Linien
  • Tags: eingefrorene Stände (v1, v2, …)
  • Trunk: aktuelle stabile Linie
  1. Projekt importieren (Beispiel: codefest nach trunk)
svn import ~/codefest/ file:///srv/svn/repositorios/projeto/trunk -m 'importacao inicial'

Danach auflisten:

svn ls file:///srv/svn/repositorios/projeto/trunk
  1. Checkout
svn co file:///srv/svn/repositorios/projeto/trunk ~/codefest-svn
  1. Protokolle
  • file:// – lokal
  • svn:// – eigener Server
  • svn+ssh:// – via SSH
  • http:// – via WebDAV
  • https:// – wie http, aber verschlüsselt
  1. Apache neu starten
sudo /etc/rc.d/httpd restart

Zugriff via https://localhost/svn/projeto/.


Julio Batista Silva
Autoren
Senior Cloud-Entwickler
comments powered by Disqus