Apache Subversion (SVN)
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.
Installationen und Grundkonfiguration
Subversion installieren
sudo pacman -S subversionApache installieren
sudo pacman -S apacheTipps zur Apache‑Konfiguration: Wiki.
Sicherstellen, dass folgende Zeilen in
/etc/httpd/conf/httpd.confvorhanden 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.soDie Zeile
Include /etc/httpd/conf/extra/httpd-ssl.confin/etc/httpd/conf/httpd.confauskommentiert lassen.SSL‑Zertifikat erzeugen
cd /etc/httpd/conf/ openssl req -new -x509 -keyout server.key -out server.crt -days 365 -nodesApache für SVN einrichten – folgende Blöcke zu
/etc/httpd/conf/extra/httpd-ssl.confhinzufü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>
Verzeichnisse, Benutzer und Rechte konfigurieren
Gruppe für Repo‑Zugriff anlegen
sudo groupadd svnusersWurzelverzeichnis für Repos anlegen
mkdir -p /srv/svn/repositorios chmod -R 755 /srv/svn/repositoriosZugriff für dich und Apache sicherstellen
sudo gpasswd -a http svnusers sudo gpasswd -a julio svnusersDanach neu anmelden, damit die Gruppen greifen.
Zugriffsrichtlinien definieren –
/srv/svn/svn-policy
[/]
* = r
[projeto:/]
julio = rw
- Benutzerdatei
/srv/svn/svn-authmithtpasswderstellen
sudo htpasswd -cs /srv/svn/svn-auth julio
Weitere Benutzer ohne -c hinzufügen.
- 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}
- Repo‑Struktur
project
|--branches
|--tags
|--trunk
- Branches: parallele Entwicklungs‑/Maintenance‑Linien
- Tags: eingefrorene Stände (v1, v2, …)
- Trunk: aktuelle stabile Linie
- Projekt importieren (Beispiel:
codefestnachtrunk)
svn import ~/codefest/ file:///srv/svn/repositorios/projeto/trunk -m 'importacao inicial'
Danach auflisten:
svn ls file:///srv/svn/repositorios/projeto/trunk
- Checkout
svn co file:///srv/svn/repositorios/projeto/trunk ~/codefest-svn
- Protokolle
file://– lokalsvn://– eigener Serversvn+ssh://– via SSHhttp://– via WebDAVhttps://– wie http, aber verschlüsselt
- Apache neu starten
sudo /etc/rc.d/httpd restart
Zugriff via https://localhost/svn/projeto/.
Links
- http://rockfloat.com/howto/gentoo-subversion.html
- http://svnbook.red-bean.com/
- http://ankhsvn.open.collab.net/
- https://wiki.archlinux.org/index.php/Subversion_Setup
- http://en.wikipedia.org/wiki/WebDAV
- http://svnbook.red-bean.com/en/1.0/ch06s04.html
- http://subversion.apache.org/features.html
- http://www.javaworld.com/javaworld/jw-09-2007/jw-09-versioncontrol.html?page=1