Content
Dateianzeige für subversion (3.4.4)
usr/share/doc/subversion/subversion.txt
Die Versionsverwaltung Subversion
Ab Version 1.6.0 - Stand 2023-08-25 12:31:41
Allgemeines
Eine Versionsverwaltung ist ein Programm, das die Ablage von Dateien in
verschiedenen Versionsstaenden ermoeglicht und jederzeit den Zugriff
auf aeltere Versionen zulaesst. Insbesondere im Bereich der
Software-Entwicklung, aber nicht nur dort, ist eine Versionsverwaltung
daher ein sehr nuetzliches 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
Datenbestaende entfernter Rechner zugreifen.
Wird Subversion als Server eingesetzt, so koennen mehrere
unterschiedliche Datenbestaende verwaltet werden. Jedes dieser
Repositories verfuegt dabei ueber seine eigene Benutzer- und
Kennwortliste. Ist zusaetzlich zu Subversion der Web-Server Apache2 auf
dem selben Rechner installiert, dann ist neben dem Subversion-eigenen
Protokoll (svn://...) zusaetzlich der Zugriff ueber HTTP/WebDAV
(http://...) moeglich.
Voraussetzungen
Um Subversion als Server zu betreiben ist die Installation des xinetd -
Daemons notwendig. Dieser befindet sich im Inet-Paket. Zudem kann als
Ergaenzung der Web-Server Apache2 installiert werden.
Wichtige Hinweise
Subversion verwaltet seine eigenen Benutzerlisten und Kennwoerter, die
nicht notwendigerweise auch Systembenutzer sein muessen. Dazu gibt es
aber zwei wichtige Einschraenkungen zu beachten:
Alle lokalen Anwender, die ueber die Zugriffsmethode ''file://'' auf
ein lokales Repository zugreifen moechten, muessen in der
Benutzergruppe ''svn'' Mitglied sein. Anderenfalls ist das
Zurueckschreiben von Aenderungen nicht moeglich.
Fuer die Zugriffsmethode ''svn+ssh://'' ist auf dem entfernten Rechner
fuer 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 Anmeldeschluessel (Preshared Key)
zu hinterlegen.
Bei der Wahl des Speicherortes fuer Repositories ist zu beachten, dass
diese nur auf lokalen Datentraegern mit ext2 oder ext3 Dateisystemen
liegen duerfen. Niemals sollte ein NFS-Laufwerk als Speicherort
verwendet werden.
Konfiguration
Die Konfiguration kann ueber den Menuepunkt ''Edit Configuration''
geaendert werden. Nach Beendigung des Editors wird die Konfiguration
automatisch auf Fehler ueberprueft. Werden Fehler festgestellt, so
sollten die entsprechenden Eintraege in jedem Fall korrigiert werden.
Server Einstellungen und Zugriffslisten
START_SUBVERSION
Mit diesem globalen Schalter werden alle Server-Funktionen von
Subversion ein- bzw ausgeschaltet.
Gueltige Werte: ''yes'', ''no''
SVN_ENABLE_SVNSERVE
Legt fest, ob der Zugriff auf lokale Repositories ueber den
Subversion Server 'svnserve' moeglich sein soll. Soll Subversion
als Server arbeiten, dann kann diese Option auf ''yes'' gestellt
werden. Eine Alternative dazu ist der Zugriff ueber HTTP/WebDAV.
Gueltige 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 ueber die
Zugriffsmethode HTTP/WebDAV moeglich 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 fuer das jeweilige der
Zugriff zuzulassen ist, damit diese Methode funktioniert.
Gueltige Werte: ''yes'', ''no''
SVN_WEBDAV_AUTH_METHOD
Waehlt die Methode, die zur Anmeldung von Benutzern verwendet
werden soll, sobald ueber HTTP/WebDAV auf ein Repository zuge-
griffen wird.
Falls 'basic' verwendet wird, werden die Anmeldedaten (Benutzer-
name und/oder Kennwort) als einfach kodierte und leicht zu
entschluesselnde Base64-kodierte Zeichenkette ueber das Netz-
werk uebertragen.
Wird statt dessen 'digest' verwendet, werden die Anmeldedaten
durch eine hash-Funktion verschluesselt bevor sie uebertragen
werden. Zudem wird sichergestellt, dass ein Angreifer den Hash-
Wert nicht abfangen und wiederverwenden kann.
Damit stellt 'digest' gegenueber 'basic' eine erheblich sicherere
Authentifizierungsmethode dar und sollte wenn moeglich verwendet
werden. Solange der Client die Methode korrekt unterstuetzt
bemerkt der Anwender keinen Unterschied im Vergleich zu 'basic'.
Gueltige 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 moechte muss Mitglied in einer
Zugriffsliste sein, die wiederum dem Repository zugeordent sein
muss.
Um getrennte Userlisten fuer jedes Repository zu haben, wie es
aus frueheren Versionen dieses Pakets bekannt war, muss eine
einzelne Zugriffsliste fuer jedes Repository angelegt werden.
Diese wird dann dem jeweiligen Repo zugeordnet. Um statt dessen
eine globale Liste von Anwendern zu erhalten, die gleichermassen
auf alle Repositories zugreifen duerfen, kann eine einzelne
Zugriffsliste angelegt werden, die dann allen Repositories
zugewiesen wird. Da es moeglich ist, einem Repository mehrere
Zugriffsliste zuzuordnen, koennen beide Zugriffsmodelle (global
und lokal) kombiniert werden.
Beispiel: ''3''
SVN_ACL_x_NAME
Ein eindeutiger Name fuer die Zugriffsliste. Dieser Name wird
verwendet, um die Zugriffsliste bei der Zuordnung zu einem
Repository eindeutig zu identifizieren. Gueltige Werte fuer ACL
Namen bestehen aus Buchstaben, Zahlen und Unterstrichen. Die
Gross-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 (temporaer) 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). Anschliessend wird die
Laenge der Liste um ein Element reduziert.
Gueltige 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''
Repository Einstellungen
SVN_REPOS_N
Legt die Anzahl der Repositories auf diesem Server fest.
Bitte beachten: Beim Zugriff ueber 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 ueber 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.
Gueltige Werte: ''yes'', ''no''
SVN_REPOS_x_WEBNAME
Definiert den Namen (Alias) fuer den Zugriff ueber 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.
Gueltige Werte: ''yes'', ''no''
SVN_REPOS_x_ANON_ACCESS
Regelt den Zugriff fuer anonyme Benutzer auf das Repository.
Gueltige Werte: ''none'', ''read'', ''write''
SVN_REPOS_x_AUTH_ACCESS
Regelt den Zugriff fuer angemeldete Benutzer auf das Repository.
Dabei ist zu beachten, das angemeldete Benutzer ueber WebDAV
immer volle Zugriffsrechte haben, unabhaengig vom Wert dieser
Option.
Gueltige Werte: ''none'', ''read'', ''write''
SVN_REPOS_x_ACL
Liste von ACL Namen durch Leerzeichen getrennt, die gueltige
Zugriffslisten identifizieren. Wenn sich in der Aufzaehlung
ungueltige Namen befinden, wird dies spaeter angezeigt, wenn die
Konfiguration aktualisiert wird.
Es ist allerdings zu beachten, dass ACL Namen nicht nach
Gross-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 uebergangen.
Gueltige Werte: ''yes'', ''no''
SVN_REPOS_x_DIR_PERMISSIONS
Wenn diese Option auf ''yes'' gesetzt wird, koennen Rechte auf
Verzeichnisebene innerhalb des Repositories definiert werden. Im
Falle von ''no'' gelten lediglich die global eingestellten
Zugriffsbeschraenkungen.
Siehe dazu auch das Kapitel ''Zugriffssteuerung auf
Verzeichnisebene''
Gueltige Werte: ''yes'', ''no''
SVN_REPOS_x_DIR_PERM_N
Anzahl der Verzeichnisse innerhalb des Repositories, fuer 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 hoeheren
Verzeichnisebene auf alle Unterverzeichnisse uebertragen werden,
solange keine weitere Angabe dies explizit ueberschreibt.
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 Ausdruecken, die Anwendernamen Zugriffsrechte zuweisen.
Mit einem vorangestellten @ bezieht sich der Anwendername auf
eine ACL-Liste. Ebenfalls kann der Asterisk als Platzhalter fuer
alle Anwender verwendet werden. Gueltige Werte fuer
Zugriffsrechte sind ''r'', ''rw'' und ''''.
Siehe dazu auch das Kapitel ''Zugriffssteuerung auf
Verzeichnisebene''
Beispiel: ''user1=r user2=rw user3=''
Einstellungen zur Datensicherung
SVN_BACKUP_TIMER
Mit dieser Einsellung kann festgelegt werden, wann (zu welchem Zeit-
punkt) eine Datensicherung durchgefuehrt werden soll.
Zur Ausfuehrung von Backups zu bestimmten Zeitpunkten, werden systemd
Timer verwendet. Systemd-Timer sind sehr flexibel, was sich auch in
der Syntax der Zeitangaben wiederspiegelt. Um die Komplexitaet ueber-
schaubar zu halten, werden hier lediglich Kalenderereignisse unter-
stuetzt.
Allgemein wird ein Kalenderereignis gemaes dem nachfolgenden Schema
beschrieben:
DayOfWeek Year-Month-Day Hour:Minute:Second
Fuer Datenfelder innerhalb des Schemas, die nicht beachtet werden
sollen, kann der Asterisk als Platzhalter verwendet werden. Werte-
bereiche koennen mit zwei Punkten zwischen dem unteren und dem oberen
Grenzwert angegeben werden. Eine Reihe von Einzelwerten wird dagegen
durch Kommas getrennt.
Beispiele gueltiger Eintraege sind:
DayOfWeek Year-Month-Day Hour:Minute:Second
Mon,Tue *-*-01..04 12:00:00
Sat *-*-1..7 18:00:00
*-*-* 04:00:00
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
ausgefuehrt. Dies kann verwendet werden, um beispielsweise das
Sicherungsmedium in das Dateisystem einzubinden. Soll kein
Befehl ausgefuehrt 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 ausgefuehrt. Dies kann verwendet werden, um
beispielsweise das Sicherungsmedium vom Dateisystem zu trennen.
Soll kein Befehl ausgefuehrt 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 Empfaenger. 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 Paketmenue
Das Subversion Hauptmenue
Das Subversion Hauptmenue ist ueber den Menuepunkt ''Service
administration'' ueber 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
Ermoeglicht eine Versionsverwaltung der Konfigurationsdatei
* Administration tools
Untermenue zu weiteren Funktionen.
Subversion Administration Tools
* Backup and restore
Hier koennen Repositories manuell gesichert und wiederhergestellt
werden.
* Upgrade existing repository
Repositories, die von einer aelteren Version von Subversion
uebernommen wurden, koennen hierueber in das aktuelle Format
konvertiert werden. Erst nach der Konvertierung stehen alle
Funktionen von Subversion zur Verfuegung. Jedoch ist anschliessend
kein Downgrade mehr moeglich.
* Remove existing repository
Ueber diese Funktion koennen nicht mehr benoetigte Repositories von
der Festplatte und aus der Konfiguration auf bequeme Weise entfernt
werden.
Subversion Backup and Restore
* 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.
Zugriffssteuerung auf Verzeichnisebene
Neben der globalen Zugriffskontrolle, die Benutzern einmalig Lese- oder
Schreibrechte auf das gesamte Repository einraeumt, ist eine weitere
Zugriffssteuerung verfuegbar, die die Vergabe individueller Rechte auf
Verzeichnisebene innerhalb des Repositories ermoeglicht. 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 ueber
WebDAV oder oder ueber den svnserve-Dienst erfolgt. Wird statt dessen
ueber die Zugriffsmethode ''file://'' auf ein Repository zugegriffen
gelten die Rechte auf Verzeichnisebene nicht.
In der eisfair-Konfiguration wird zunaechst das Verzeichnis angegeben,
auf das Rechte vergeben werden sollen. Dann wird eine Liste von
Anwendern genannt, denen ueber den Zuweisungsoperator entweder
Leserechte (r) oder Schreibrechte (rw) eingeraeumt werden. Wird hinter
dem Gleichheitszeichen nichts weiter angegeben, bedeutet dies den
Rechteentzug fuer 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 unveraenderter Form
fuer alle Unterverzeichnisse gelten, solange sie nicht explizit durch
eine weitere Regel ueberschrieben werden. Wurden keine Angaben gemacht,
hat dagegen kein Anwender irgendein Recht zum Zugriff auf die
Repository-Dateien. Aus diesem Grund kann es sinnvoll sein, zunaechst
fuer die Wurzel des gesamten Verzeichnisbaums ein Leserecht fuer alle
Anwender einzurichten und dieses bei Bedarf fuer einzelne
Unterverzeichnisse und Anwender einzuschraenken. Der Asterisk kann
dabei als Platzhalter fuer 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) koennen verwendet werden um eine
Gruppe von Anwendern gleichermassen anzusprechen. Dabei wird der
ACL-Name mit einem fuehrenden ''@'' 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 erwaehnen 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 fuer jede Operation eine Authentifizierung erforderlich - wodurch
auf Verzeichnisebene sowohl die Lese- als auch die Schreibrechte
effektiv beeinfluss werden koennen. Wurde der Wert dagegen auf ''read''
gesetzt, werden Einschraenkungen von Leserechten auf der
Verzeichnisebene nicht wirksam.
Subversion als Client
Lokale Arbeitskopien
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 Aenderungen kann man sich wie folgt ansehen:
svn status
und zwischenzeitliche Aenderungen auf dem Server mit:
svn status -u
Um lokale Aenderungen ins Repository zurueckzuschreiben, benutzt man:
svn commit -m ''set comment'' *
Hinzufuegen von Dateien/Verzeichnissen
Alle Arten von Dateien und Verzeichnissen werden bei Subversion mit dem
gleichen Befehl hinzugefuegt:
svn add
Sogenannte Binaerdateien werden dabei automatisch erkannt.
__________________________________________________________________
Daniel Vogel 2012-07-31