freies Versionskontrollsystem.
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:
<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:
[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
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.
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