SVN
Auf dieser Seite erkläre ich die Installation und Einrichtung des SVN-Repository. SVN wird zur Quellcodeverwaltung eingesetzt und wird von vielen Entwicklungsumgebungen nativ unterstützt. So lassen sich neue Projekte ohne Probleme in Netbeans auschecken bzw. einchecken.
Die Installation habe ich auf einem Ubuntu 10.04 LTS Server durchgeführt. Die Benutzer müssen sich authentifizieren, um auf das Repository zugreifen zu können. Der Zugriff erfolgt über HTTP Apache.
Server
Installation
Achtung: Diese Installationsvariante setzt einen Apache-Webserver voraus
Um den SVN zu installieren führt man am besten zuerst ein Systemupdate aus.
apt-get update && apt-get upgrade && apt-get dist-upgrade
Anschließend muss man folgende Module installieren:
- subversion
- libapache2-svn
apt-get install subversion libapache2-svn
Konfiguration
Als nächstes legt man ein Verzeichnis für das Repository fest. Oft wird dafür /var/local/svn verwendet.
mkdir -p /var/local/svn
Repository Datenbank erstellen
svnadmin create --fs-type fsfs /var/local/svn
und für den Apache Webserver schreibbar machen:
chown -R www-data: /var/local/svn
Nun muss auf dem Apache2 ein Modul aktiviert werden
a2enmod dav_svn
Anschließend öffnet man die erzeugte Datei /etc/apache2/mods-enabled/dav_svn.conf und aktiviert folgende Parameter
# dav_svn.conf - Example Subversion/Apache configuration
#
# For details and further options see the Apache user manual and
# the Subversion book.
#
# NOTE: for a setup with multiple vhosts, you will want to do this
# configuration in /etc/apache2/sites-available/*, not here.
# <Location URL> ... </Location>
# URL controls how the repository appears to the outside world.
# In this example clients access the repository as http://hostname/svn/
# Note, a literal /svn should NOT exist in your document root.
<Location /svn>
# Uncomment this to enable the repository
DAV svn
# Set this to the path to your repository
SVNPath /var/local/svn
# Alternatively, use SVNParentPath if you have multiple repositories under
# under a single directory (/var/lib/svn/repo1, /var/lib/svn/repo2, ...).
# You need either SVNPath and SVNParentPath, but not both.
#SVNParentPath /var/lib/svn
# Access control is done at 3 levels: (1) Apache authentication, via
# any of several methods. A "Basic Auth" section is commented out
# below. (2) Apache <Limit> and <LimitExcept>, also commented out
# below. (3) mod_authz_svn is a svn-specific authorization module
# which offers fine-grained read/write access control for paths
# within a repository. (The first two layers are coarse-grained; you
# can only enable/disable access to an entire repository.) Note that
# mod_authz_svn is noticeably slower than the other two layers, so if
# you don't need the fine-grained control, don't configure it.
# Basic Authentication is repository-wide. It is not secure unless
# you are using https. See the 'htpasswd' command to create and
# manage the password file - and the documentation for the
# 'auth_basic' and 'authn_file' modules, which you will need for this
# (enable them with 'a2enmod').
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
# To enable authorization via mod_authz_svn
#AuthzSVNAccessFile /etc/apache2/dav_svn.authz
# The following three lines allow anonymous read, but make
# committers authenticate themselves. It requires the 'authz_user'
# module (enable it with 'a2enmod').
#<LimitExcept GET PROPFIND OPTIONS REPORT>
#Require valid-user
#</LimitExcept>
Require valid-user
</Location>
Nun fügen wir noch einen Benutzer hinzu
htpasswd -c /etc/apache2/dav_svn.passwd MaxMustermann
Hinweis: Wenn nur ein Benutzer hinzugefügt werden soll, dann den Befehl ohne -c
ausführen. Sonst wird die Liste komplett verworfen.
Nun Apache neu starten und das Repository sollte unter http://localhost/svn/ verfügbar sein
service apache2 restart