SUBVERSION

freies Versionskontrollsystem.

Subversion auf einem Debian mit Domänenauthentifizierung mit HTTP-Zugriff installieren

zuerst muss der Rechner mit fester IP konfiguriert werden.
Die DNS-Auflösung im Netz muss stimmen. Evt. muss der Rechner manuell auf dem DNS-Server eingetragen werden.
Die Uhrzeit muss per ntpd konfiguriert werden. siehe dazu ntp
Der Rechner muss in die Domäne aufgenommen werden. siehe dazu winbind
Die Softwarepakete subversion, libapache2-svn, libapache2-mod-auth-pam, libapache2-mod-auth-sys-group müssen installiert werden:

apt-get install subversion apache2 libapache2-svn libapache2-mod-auth-pam libapache2-mod-auth-sys-group

Es muss ein Datenverzeichnis für Subversion bestimmt werden (z.B. /daten/svn):

mkdir -p /daten/svn

Dem Apachebenutzer muss der Zugriff auf dieses Verzeichnis erlaubt werden.

chown www-data:www-data /daten/svn

Jetzt wird ein Repository erstellt:

cd /daten/svn ; svnadmin create meinCode meinCode

Jetzt werden noch Berechtigungen auf ein paar Unterverzeichnisse erstellt:

chown -R www-data:www-data meinCode/{db,locks,conf}

Jetzt wird der Inhalt der Datei /etc/apache2/mods-enabled/dav_svn.conf gelöscht und dann wie folgt konfiguriert:

dav_svn.conf
<Location /svn/meinCode>
  DAV svn
  SVNPath /daten/svn_repos/meinCode
  SVNPathAuthz off
  AuthType Basic
  AuthPAM_Enabled on
  AuthName "Subversion Repository meinCode erfordert eine Anmeldung"
  AuthUserFile /dev/null
  AuthPAM_FallThrough On
  AuthBasicAuthoritative Off
  AuthzSVNAccessFile /etc/apache2/dav_svn.authz
  AuthGroup_Enabled Off
  Require valid-user
</Location>
CustomLog svn.log "%t %u %{SVN-ACTION}e" env=SVN-ACTION

Jetzt wird die Datei /etc/apache2/dav_svn.authz erstellt.
In ihr werden die Schreib/Leserechte auf die einzelnen Verzeichnisse über Gruppen festgelegt:

dav_svn.authz
[groups]
 
Admin = root,und,alle,domänenaccounts,die,SVN,administrieren,sollen
GruppeRW = alle,domänenaccounts,die,Schreib,rechte,haben,sollen
GruppeR =  alle,domänenaccounts,die,Lese,rechte,haben,sollen
testgruppe = doedel,maja,willi,pitti,platsch
testgrp_pj1 = maja,willi,pitti
 
[meinCode:/]
@GruppeR = r
@GruppeRW = rw
@testgruppe = r
 
[meinCode:/nearshore]
@GruppeR = rw
@testgruppe = rw
 
[meinCode:/testverz]
@GruppeR = rw
@testgruppe = rw
 
# hier nur Mitgliedern der Gruppe testgrp_pj1 Zugriff gestatten und keine Vererbung von oben zulassen, deshalb die anderen Gruppen leer
[meinCode:/testverz/projekt1]
@GruppeR =
@testgruppe =
@testgrp_pj1 = rw

Jetzt muss der Apachedienst neu gestartet werden:

/etc/init.d/apache2 restart

Jetzt füllen wir das Repo erstmals mit unseren Daten:

svn import /wo/meine/daten/liegen/meinCode http://localhost/svn/meinCode -m "mein erster Datenimport für MeinCode"

Danach sollte der Zugriff über die Webseite http://meinServer/svn/meinCode nach Anmeldung mit dem Domänenaccount möglich sein.
Bei allen Eingaben ist auf Groß/KleinSchreibung zu achten.
Ende

SVN-Log-Dateien anzeigen:

svn log http://localhost/svn/reponame

SVN-Liste anzeigen:

svn list http://localhost/svn/reponame

eine ASCI-Datei aus dem SVN-Repo anzeigen:

svn cat http://localhost/svn/reponame/dateiname

Ein Repo hinter einem Proxyserver auschecken:

Bitte editieren Sie die Datei ~/.subversion/servers wie folgt:

http-proxy-host = proxysrv
http-proxy-port = 8080
http-proxy-username = domaenenuser
http-proxy-password = dasDomänenpasswort

anschließend versuchen Sie, das repo erneut auszuchecken:

svn checkout http://meinServer/svn/reponame reponame

oder

svn co http://meinServer/svn/reponame reponame --username doedel --password geheim

eine Datei zufügen:

cd reponame
touch dateiname
echo "irgendwelcher Inhalt"> dateiname
svn add dateiname
svn commit

eine Dateien editieren und zurück speichern:

cd reponame
mcedit dateiname
svn commit

ein Repo kopieren:

su svn
# touch meinrepo/db/fsfs.conf
svnadmin hotcopy meinrepo meinrepo2

Ein Repo auf einen anderen Server verschieben

zuerst muss das Zielrepo auf dem Zielserver normal erstellt und konfiguriert (wie oben dargestellt) werden.
Der neue Reponame ist frei wählbar.
Dann wird auf dem Quellserver als root ein Dump des Repos( Bsp. myRepo ) erstellt, gezippt und per scp o.ä. auf den neuen Server verschoben.
Vorher wird noch das Repo für das Schreiben gesperrt.

cd /daten/svn/
svnadmin dump myrepo >myrepo.bckp
gzip myrepo.bckp
scp myrepo.bckp.gz root@zielserver:/daten/svn/
rm myrepo.bckp.gz

Jetzt wird auf dem ZielServer der Dump in das neue Repo zurückgespielt und die Rechte angepasst.

gunzip myrepo.bckp.gz
svnadmin load zielrepo < myrepo.bckp
chown -R www-data:www-data zielrepo
chmod -R o-rwx zielrepo
rm myrepo.bckp

Danach sollte das Repo auf dem neuen Server erreichbar sein.

Erlaube einer Gruppe Repos mit dem svnadmin als Benutzer ''www-data'' zu verwalten:

apt-get install sudo
echo "%meineGruppe   ALL = (www-data)NOPASSWD: /usr/bin/svnadmin" >>/etc/sudoers

Danach kann ein Mitglied von „meineGruppe“ z.B. Dumps als www-data erstellen oder einspielen.
Das geht auch mit AD-Gruppen.

sudo -u www-data svnadmin dump myrepo >/backup/myrepo.bckp



zurück