Unterabschnitte
Ab Version 1.6.0 - Stand 24.01.2019
Eine Versionsverwaltung ist ein Programm, das die Ablage von Dateien in
verschiedenen Versionsständen ermöglicht und jederzeit den Zugriff auf
ältere Versionen zulässt. Insbesondere im Bereich der Software-Entwicklung,
aber nicht nur dort, ist eine Versionsverwaltung daher ein sehr
nützliches Hilfsmittel.
Subversion ist der Nachfolger des bekannten CVS Tools. In ihm wurden viele
der von dort bekannten Nachteile behoben.
Im vorliegenden Eisfair-Paket sind sowohl die Client-, als auch die
Serverkomponenten von Subversion enthalten. Damit kann man auf einfache Weise
sowohl einen eigenen Subversion-Server realisieren, als auch auf Datenbestände
entfernter Rechner zugreifen.
Wird Subversion als Server eingesetzt, so können mehrere unterschiedliche
Datenbestände verwaltet werden. Jedes dieser Repositories verfügt dabei
über seine eigene Benutzer- und Kennwortliste.
Ist zusätzlich zu Subversion der Web-Server Apache2 auf dem selben Rechner installiert,
dann ist neben dem Subversion-eigenen Protokoll (svn://...) zusätzlich
der Zugriff über HTTP/WebDAV (http://...) möglich.
Um Subversion als Server zu betreiben ist die Installation des xinetd -
Daemons notwendig. Dieser befindet sich im Inet-Paket. Zudem kann als
Ergänzung der Web-Server Apache2 installiert werden.
Subversion verwaltet seine eigenen Benutzerlisten und Kennwörter, die
nicht notwendigerweise auch Systembenutzer sein müssen. Dazu gibt es aber
zwei wichtige Einschränkungen zu beachten:
Alle lokalen Anwender, die über die Zugriffsmethode ”file://” auf ein
lokales Repository zugreifen möchten, müssen in der Benutzergruppe
”svn” Mitglied sein. Anderenfalls ist das Zurückschreiben von Änderungen
nicht möglich.
Für die Zugriffsmethode ”svn+ssh://” ist auf dem entfernten Rechner für
den jeweiligen Anwender ein ssh Zugang erforderlich, was i.d.R ein mit
dem Benutzernamen identisches Anmeldekonto voraussetzt. Damit nicht
bei jedem Zugriff ein Kennwort eingegeben werden muss, empfiehlt es sich
zudem, auf dem Zielsystem einen Anmeldeschlüssel (Preshared Key) zu
hinterlegen.
Bei der Wahl des Speicherortes für Repositories ist zu beachten, dass diese
nur auf lokalen Datenträgern mit ext2 oder ext3 Dateisystemen liegen dürfen.
Niemals sollte ein NFS-Laufwerk als Speicherort verwendet werden.
Die Konfiguration kann über den Menüpunkt ”Edit Configuration” geändert
werden. Nach Beendigung des Editors wird die Konfiguration automatisch auf
Fehler überprüft. Werden Fehler festgestellt, so sollten die entsprechenden
Einträge in jedem Fall korrigiert werden.
-
- START_SUBVERSION
-
Mit diesem globalen Schalter werden alle Server-Funktionen von Subversion
ein- bzw ausgeschaltet.
Gültige Werte: ”yes”, ”no”
- SVN_ENABLE_SVNSERVE
-
Legt fest, ob der Zugriff auf lokale Repositories über den Subversion
Server 'svnserve' möglich sein soll. Soll Subversion als Server arbeiten,
dann kann diese Option auf ”yes” gestellt werden. Eine Alternative
dazu ist der Zugriff über HTTP/WebDAV.
Gültige Werte: ”yes”, ”no”
- SVN_SVNSERVE_ROOT_DIR
-
Mit diesem optionalen Parameter kann ein absoluter Pfad als
Wurzelverzeichnis fuer svnserve angegeben werden, der allen Repositories
gemein sein muss, die mit svnserve angesprochen werden sollen.
Wird der Wert angegeben, dann ist in der URL beim Zugriff auf
eines der Repositories lediglich der Pfad anzugeben der relativ
zum Wurzelverzeichnis liegt. Anderenfalls ist eine absolute
Pfadangabe erforderlich.
Beispiel: ”/var/lib”
- SVN_ENABLE_WEBDAV
-
Legt fest, ob der Zugriff auf lokale Repositories über die
Zugriffsmethode HTTP/WebDAV möglich sein soll oder nicht.
Es ist dabei zu beachten, dass einerseits der Web-Server
Apache auf dem Server installiert sein muss und andererseits
mit der Option SVN_REPOS_x_WEBDAV für das jeweilige der
Zugriff zuzulassen ist, damit diese Methode funktioniert.
Gültige Werte: ”yes”, ”no”
- SVN_WEBDAV_AUTH_METHOD
-
Wählt die Methode, die zur Anmeldung von Benutzern verwendet
werden soll, sobald über HTTP/WebDAV auf ein Repository zugegriffen
wird.
Falls ”basic” verwendet wird, werden die Anmeldedaten (Benutzername
und/oder Kennwort) als einfach kodierte und leicht zu entschlüsselnde
Base64-kodierte Zeichenkette über das Netzwerk übertragen.
Wird statt dessen ”digest” verwendet, werden die Anmeldedaten
durch eine hash-Funktion verschlüsselt bevor sie übertragen
werden. Zudem wird sichergestellt, dass ein Angreifer den Hash-Wert
nicht abfangen und wiederverwenden kann.
Damit stellt ”digest” gegenüber ”basic” eine erheblich sicherere
Authentifizierungsmethode dar und sollte wenn möglich verwendet
werden. Solange der Client die Methode korrekt unterstützt
bemerkt der Anwender keinen Unterschied im Vergleich zu ”basic”.
Gültige Werte: ”basic”, ”digest”
- SVN_ACL_N
-
Anzahl der Zugriffslisten, die definiert werden sollen. Unter eisfair
werden Subversion User in Zugriffslisten verwaltet, die den einzelnen
Repositories zugeordnet werden. Ein User der auf ein Repository zu
greifen möchte muss Mitglied in einer Zugriffsliste sein, die wiederum
dem Repository zugeordent sein muss.
Um getrennte Userlisten für jedes Repository zu haben, wie es aus
früheren Versionen dieses Pakets bekannt war, muss eine einzelne
Zugriffsliste für jedes Repository angelegt werden. Diese wird dann
dem jeweiligen Repo zugeordnet. Um statt dessen eine globale Liste
von Anwendern zu erhalten, die gleichermaßen auf alle Repositories
zugreifen dürfen, kann eine einzelne Zugriffsliste angelegt werden,
die dann allen Repositories zugewiesen wird.
Da es möglich ist, einem Repository mehrere Zugriffsliste zuzuordnen,
können beide Zugriffsmodelle (global und lokal) kombiniert werden.
Beispiel: ”3”
- SVN_ACL_x_NAME
-
Ein eindeutiger Name für die Zugriffsliste. Dieser Name wird verwendet,
um die Zugriffsliste bei der Zuordnung zu einem Repository
eindeutig zu identifizieren. Gültige Werte für ACL Namen bestehen
aus Buchstaben, Zahlen und Unterstrichen. Die Groß-Kleinschreibung
der Namen spielt keine Rolle.
Beispiel: ”DEVELOPERS”
- SVN_ACL_x_USER_N
-
Anzahl der Anwender, die in der aktuellen Zugriffsliste (x) angelegt
werden sollen.
Beispiel: ”10”
- SVN_ACL_x_USER_x_ACTIVE
-
Wenn dieser Wert auf ”yes” steht, dann ist der jeweilige Anwender
aktiv (Standard). Um den User (temporär) aus der aktuellen Liste zu
entfernen, kann der Wert auf ”no” gesetzt werden. In diesem Fall
wird der Anwernder ignoriert, wenn die Benutzerdatenbanken
zusammengestellt werden.
Um den Anwender dauerhaft aus der Liste zu entfernen, wird er an
das Ende der Liste verschoben (F3). Anschließend wird die Länge
der Liste um ein Element reduziert.
Gültige Werte: ”yes”, ”no”
- SVN_ACL_x_USER_x_NAME
-
Login Name des Anwenders.
Beispiel: ”hans”
- SVN_ACL_x_USER_x_PASSWD
-
Kennwort des Anwenders (wird im ECE maskiert dargestellt).
Beispiel: ”geheim”
-
- SVN_REPOS_N
-
Legt die Anzahl der Repositories auf diesem Server fest.
Bitte beachten: Beim Zugriff über den Subversion Server ”svnserve” wird
die URL bei nur einem Repository aus dem Namen des Servers ohne den absoluten
Pfad zum Repository gebildet. Bei mehreren Repositories dagegen muss
der absolute Pfad hinter dem Servernamen angegeben werden. Beispiele:
svn://svn.myhome.local = URL bei einem Repository
svn://svn.myhome.local/var/lib/svn1 = URL bei mehreren Repositories
Beispiel: ”2”
- SVN_REPOS_x_DIR
-
Basisverzeichnis des entsprechenden Subversion Repositories. Wenn das
Verzeichnis nicht existiert, so wird es automatisch erstellt.
Existiert nur ein Repository, so braucht dieser Pfad bei externem
Zugriff nicht mit angegeben werden.
Beispiel: ”/var/lib/svn”
- SVN_REPOS_x_WEBDAV
-
Legt fest, ob der Zugriff über HTTP/WebDAV auf dieses Repository
erlaubt sein soll oder nicht. Wenn diese Option auf den Wert ”yes”
gestellt wird, dann erscheint das Repository unter der URL:
http://yourserver/svn/$SVN_REPOS_x_WEBNAME
Diese Einstellung ist jedoch wirkungslos, solange der Web-Server
'apache2' nicht auf diesem Rechner installiert ist.
Gültige Werte: ”yes”, ”no”
- SVN_REPOS_x_WEBNAME
-
Definiert den Namen (Alias) für den Zugriff über HTTP/WebDAV auf dieses Repository.
Wenn SVN_REPOS_x_WEBDAV auf den Wert ”yes” gestellt ist, dann erscheint das
Repository unter der URL:
http://yourserver/svn/$SVN_REPOS_x_WEBNAME
Diese Einstellung ist jedoch wirkungslos, solange der Web-Server
'apache2' nicht auf diesem Rechner installiert ist.
Gültige Werte: ”yes”, ”no”
- SVN_REPOS_x_ANON_ACCESS
-
Regelt den Zugriff für anonyme Benutzer auf das Repository.
Gültige Werte: ”none”, ”read”, ”write”
- SVN_REPOS_x_AUTH_ACCESS
-
Regelt den Zugriff für angemeldete Benutzer auf das Repository.
Dabei ist zu beachten, das angemeldete Benutzer über WebDAV immer
volle Zugriffsrechte haben, unabhängig vom Wert dieser Option.
Gültige Werte: ”none”, ”read”, ”write”
- SVN_REPOS_x_ACL
-
Liste von ACL Namen durch Leerzeichen getrennt, die gültige Zugriffslisten
identifizieren. Wenn sich in der Aufzählung ungültige Namen
befinden, wird dies später angezeigt, wenn die Konfiguration aktualisiert
wird.
Es ist allerdings zu beachten, dass ACL Namen nicht nach
Groß-Kleinschreibung unterschieden werden. Das bedeutet, dass ”Gobal”,
”GLOBAL” und ”global” alle die selbe Zugriffsliste angeben.
Beispiel: ”DEVELOPERS ADMINS”
- SVN_REPOS_x_BACKUP
-
Wenn dieses Repository automatisch gesichert werden soll, wird dieser
Wert auf ”yes” gesetzt. Anderenfalls wird das Repo bei der Sicherung
übergangen.
Gültige Werte: ”yes”, ”no”
- SVN_REPOS_x_DIR_PERMISSIONS
-
Wenn diese Option auf ”yes” gesetzt wird, können Rechte auf
Verzeichnisebene innerhalb des Repositories definiert werden. Im Falle
von ”no” gelten lediglich die global eingestellten
Zugriffsbeschränkungen.
Siehe dazu auch das Kapitel ”Zugriffssteuerung auf Verzeichnisebene”
Gültige Werte: ”yes”, ”no”
- SVN_REPOS_x_DIR_PERM_N
-
Anzahl der Verzeichnisse innerhalb des Repositories, für welche
Zugriffsberechtigungen angegeben werden sollen.
Siehe dazu auch das Kapitel ”Zugriffssteuerung auf Verzeichnisebene”
Beispiel: ”2”
- SVN_REPOS_x_DIR_x_PATH
-
Pfad innerhalb der Verzeichnishierarchie des Repositories. Zu beachten
ist, dass Zugriffsrechte einer höheren Verzeichnisebene auf alle
Unterverzeichnisse übertragen werden, solange keine weitere Angabe
dies explizit überschreibt. Ebenfalls zu beachten ist, dass
das abschliessende Backslash-Zeichen im Verzeichnisnamen wegzulassen
ist.
Siehe dazu auch das Kapitel ”Zugriffssteuerung auf Verzeichnisebene”
Beispiel: ”/my/repository/path”
- SVN_REPOS_x_DIR_x_PERM
-
Liste der Zugriffsberechtigungen bestehend aus einem oder mehreren
Ausdrücken, die Anwendernamen Zugriffsrechte zuweisen.
Mit einem vorangestellten @ bezieht sich der Anwendername auf eine ACL-Liste.
Ebenfalls kann der Asterisk als Platzhalter für alle Anwender
verwendet werden.
Gültige Werte für Zugriffsrechte sind ”r”, ”rw” und ””.
Siehe dazu auch das Kapitel ”Zugriffssteuerung auf Verzeichnisebene”
Beispiel: ”user1=r user2=rw user3=”
-
- SVN_BACKUP_SCHEDULE
-
Zeitvorgabe für den CRON-Dienst. Hier wird angegeben, wann die
automatische Sicherung durchgeführt werden soll. Die 5 Werte stehen für:
Minute, Stunde, Tag, Monat, Wochentag.
Beispiel:
”30 0 * * *” –> täglich um 0:30 Uhr
”0 1 */2 * *” –> Jeden zweiten Tag um 1:00 Uhr
- SVN_BACKUP_TARGET
-
Das Verzeichnis, in das die Sicherungsdateien abgelegt werden sollen.
Standard: ”/var/lib/svn_backup”
- SVN_BACKUP_MAXFILES
-
Gibt an, wieviele Kopien von Sicherungsdateien aufgehoben werden sollen.
Beispiel: ”4”
- SVN_BACKUP_MOUNT
-
Bevor die Sicherung beginnt, wird das hier angegebene Kommando ausgeführt.
Dies kann verwendet werden, um beispielsweise das Sicherungsmedium
in das Dateisystem einzubinden.
Soll kein Befehl ausgeführt werden bleibt das Feld leer.
Beispiel: ”mount -t udffs /dev/sr0 /mnt”
- SVN_BACKUP_UMOUNT
-
Nachdem die Sicherung beendet wurde, wird das hier angegebene Kommando
ausgeführt.
Dies kann verwendet werden, um beispielsweise das Sicherungsmedium
vom Dateisystem zu trennen.
Soll kein Befehl ausgeführt werden bleibt das Feld leer.
Beispiel: ”umount /mnt”
- SVN_BACKUP_NOTIFY
-
Wird hier eine e-mail Adresse angegeben, erfolgt im Falle von Fehlern
bei der Datensicherung eine Benachrichtigung an den hier angegebenen
Empfänger. Soll keine Benachrichtigung erfolgen bleibt das feld leer.
Hinweis: Die Benachrichtigung funktioniert nur dann, wenn das E-mail
Paket installiert ist.
Beispiel: ”admin@localhost”
Das Subversion Hauptmenü ist über den Menüpunkt ”Service administration”
über den Befehl ”setup” zu erreichen. Es ist wie folgt aufgebaut:
- View documentation
Zeigt die Dokumentation an.
- Edit configuration
Damit kann die Konfigurationsdatei des Subversion-Pakets bearbeitet werden.
- Advanced configuration file handling
Ermöglicht eine Versionsverwaltung der Konfigurationsdatei
- Administration tools
Untermenü zu weiteren Funktionen.
- Backup and restore
Hier können Repositories manuell gesichert und wiederhergestellt
werden.
- Upgrade existing repository
Repositories, die von einer älteren Version von Subversion übernommen
wurden, können hierueber in das aktuelle Format konvertiert werden. Erst
nach der Konvertierung stehen alle Funktionen von Subversion zur Verfügung.
Jedoch ist anschliessend kein Downgrade mehr moeglich.
- Remove existing repository
Über diese Funktion können nicht mehr benötigte Repositories von
der Festplatte und aus der Konfiguration auf bequeme Weise
entfernt werden.
- Backup repository
Ein Repository manuell in das in der Konfiguration angegebene Backup-
Verzeichnis sichern.
- Restore database
Ein Repository aus einer Sicherungsdatei wiederherstellen.
- List backup files
Die Sicherungsdateien auflisten, die im Backup-Verzeichnis liegen.
Neben der globalen Zugriffskontrolle, die Benutzern einmalig Lese- oder
Schreibrechte auf das gesamte Repository einräumt, ist eine weitere
Zugriffssteuerung verfügbar, die die Vergabe individueller Rechte auf
Verzeichnisebene innerhalb des Repositories ermöglicht. Dieses Hilfsmittel
ist optional und muss in der Konfiguration aktiviert werden damit es wirksam
wird.
Zu beachten ist, dass die Zugriffskontrolle auf Verzeichnisebene nur dann
wirksam ist, wenn der Zugriff auf das Repository entweder über WebDAV oder
oder über den svnserve-Dienst erfolgt. Wird statt dessen über die
Zugriffsmethode ”file://” auf ein Repository zugegriffen gelten die Rechte
auf Verzeichnisebene nicht.
In der eisfair-Konfiguration wird zunächst das Verzeichnis angegeben, auf das
Rechte vergeben werden sollen. Dann wird eine Liste von Anwendern genannt,
denen über den Zuweisungsoperator entweder Leserechte (r) oder
Schreibrechte (rw) eingeräumt werden. Wird hinter dem Gleichheitszeichen
nichts weiter angegeben, bedeutet dies den Rechteentzug für den
entsprechenden Anwender. Beispiel:
SVN_REPOS_x_DIR_x_PATH=”/my/repository/path”
SVN_REPOS_x_DIR_x_PERM=”user1=r user2=rw user3=”
Zu beachten ist, dass einmal vergebene Rechte in unveränderter Form für
alle Unterverzeichnisse gelten, solange sie nicht explizit durch eine
weitere Regel überschrieben werden. Wurden keine Angaben gemacht, hat
dagegen kein Anwender irgendein Recht zum Zugriff auf die
Repository-Dateien. Aus diesem Grund kann es sinnvoll sein, zunächst für
die Wurzel des gesamten Verzeichnisbaums ein Leserecht für alle Anwender
einzurichten und dieses bei Bedarf für einzelne Unterverzeichnisse und
Anwender einzuschränken. Der Asterisk kann dabei als Platzhalter für alle
Anwender verwendet werden. Beispiel:
SVN_REPOS_1_DIR_1_PATH=”/”
SVN_REPOS_1_DIR_1_PERM=”*=r”
SVN_REPOS_2_DIR_2_PATH=”/a/secret/directory”
SVN_REPOS_2_DIR_2_PERM=”user1=”
Die globalen Anwenderlisten (ACLs) können verwendet werden um eine Gruppe
von Anwendern gleichermassen anzusprechen. Dabei wird der ACL-Name mit einem
führenden ”@” versehen um ihn als Gruppe zu kennzeichnen. Beispiel:
SVN_REPOS_x_DIR_x_PATH=”/my/repository/path”
SVN_REPOS_x_DIR_x_PERM=”@GLOBAL=rw”
Zu erwähnen ist, dass der Wert der Option
”SVN_REPOS_x_ANON_ACCESS” einen signifikaten Einfluss auf die Funktion
der Zugriffsrechte auf Verzeichnisbene hat. Solange eine Operation als
anonymer Nutzer vorgenommen werden kann greifen die Rechte nicht. Erst wenn
eine Operation einen authentifizierten Benutzer erfordert, kann an diesen
Benutzer eine Rechtevergabe erfolgen. Ist der Wert der Option ”none” ist
für jede Operation eine Authentifizierung erforderlich - wodurch auf
Verzeichnisebene sowohl die Lese- als auch die Schreibrechte effektiv
beeinfluss werden können. Wurde der Wert dagegen auf ”read” gesetzt,
werden Einschränkungen von Leserechten auf der Verzeichnisebene nicht
wirksam.
Um mit der Arbeit zu beginnen, erstellen wir uns eine Arbeitskopie, indem
wir die Dateien aus dem Repository auschecken:
svn checkout file:///var/svn
svn checkout svn://user@server
svn checkout http://server/svn/repo1
Werden mehrer Repositories verwendet, so muss der gesamte Pfad angegeben
werden:
svn checkout svn://user@server/var/svn
svn checkout svn://user@server/var/svn2
Lokale Änderungen kann man sich wie folgt ansehen:
svn status
und zwischenzeitliche Änderungen auf dem Server mit:
svn status -u
Um lokale Änderungen ins Repository zurückzuschreiben, benutzt man:
svn commit -m ”set comment” *
Alle Arten von Dateien und Verzeichnissen werden bei Subversion mit dem
gleichen Befehl hinzugefügt:
svn add <objekt>
Sogenannte Binärdateien werden dabei automatisch erkannt.