%
% Achtung: Dateien muessen mit latin1-Encoding gespeichert werden!
% Attention: Files must be saved using latin1 encoding!
%

\chapter{Die Versionsverwaltung Subversion} 
\emph{Ab Version 1.6.0 - Stand 24.01.2019} 
 
\section{Allgemeines}
Eine Versionsverwaltung ist ein Programm, das die Ablage von Dateien in
verschiedenen Versionsst"anden erm"oglicht und jederzeit den Zugriff auf
"altere Versionen zul"asst. Insbesondere im Bereich der Software-Entwicklung,
aber nicht nur dort, ist eine Versionsverwaltung daher ein sehr 
n"utzliches 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"ande 
entfernter Rechner zugreifen.

Wird Subversion als Server eingesetzt, so k"onnen mehrere unterschiedliche
Datenbest"ande verwaltet werden. Jedes dieser Repositories verf"ugt dabei
"uber seine eigene Benutzer- und Kennwortliste.
Ist zus"atzlich zu Subversion der Web-Server Apache2 auf dem selben Rechner installiert, 
dann ist neben dem Subversion-eigenen Protokoll (svn://...) zus"atzlich 
der Zugriff "uber HTTP/WebDAV (http://...) m"oglich.

\section{Voraussetzungen}
Um Subversion als Server zu betreiben ist die Installation des xinetd -
Daemons notwendig. Dieser befindet sich im Inet-Paket. Zudem kann als
Erg"anzung der Web-Server Apache2 installiert werden.

\section{Wichtige Hinweise}
Subversion verwaltet seine eigenen Benutzerlisten und Kennw"orter, die  
nicht notwendigerweise auch Systembenutzer sein m"ussen. Dazu gibt es aber 
zwei wichtige Einschr"ankungen zu beachten:

Alle lokalen Anwender, die "uber die Zugriffsmethode ''file://'' auf ein
lokales Repository zugreifen m"ochten, m"ussen in der Benutzergruppe
''svn'' Mitglied sein. Anderenfalls ist das Zur"uckschreiben von "Anderungen
nicht m"oglich.

F"ur die Zugriffsmethode ''svn+ssh://'' ist auf dem entfernten Rechner f"ur
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"ussel (Preshared Key) zu
hinterlegen.

Bei der Wahl des Speicherortes f"ur Repositories ist zu beachten, dass diese
nur auf lokalen Datentr"agern mit ext2 oder ext3 Dateisystemen liegen d"urfen. 
Niemals sollte ein NFS-Laufwerk als Speicherort verwendet werden.

\section{Konfiguration}
Die Konfiguration kann "uber den Men"upunkt ''Edit Configuration'' ge"andert
werden. Nach Beendigung des Editors wird die Konfiguration automatisch auf
Fehler "uberpr"uft. Werden Fehler festgestellt, so sollten die entsprechenden
Eintr"age in jedem Fall korrigiert werden.

\subsection{Server Einstellungen und Zugriffslisten}

\begin{description}
\config{START\_SUBVERSION}{START\_SUBVERSION}{STARTSUBVERSION}
    Mit diesem globalen Schalter werden alle Server-Funktionen von Subversion 
    ein- bzw ausgeschaltet.

    G"ultige Werte: \emph{''yes'', ''no''}

\config{SVN\_ENABLE\_SVNSERVE}{SVN\_ENABLE\_SVNSERVE}{SVNENABLESVNSERVE} 
    Legt fest, ob der Zugriff auf lokale Repositories "uber den Subversion 
    Server 'svnserve' m"oglich sein soll. Soll Subversion als Server arbeiten,
    dann kann diese Option auf ''yes'' gestellt werden. Eine Alternative
    dazu ist der Zugriff "uber HTTP/WebDAV.

    G"ultige Werte: \emph{''yes'', ''no''}

\config{SVN\_SVNSERVE\_ROOT\_DIR}{SVN\_SVNSERVE\_ROOT\_DIR}{SVNSVNSERVEROOTDIR}
    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: \emph{''/var/lib''}

\config{SVN\_ENABLE\_WEBDAV}{SVN\_ENABLE\_WEBDAV}{SVNENABLEWEBDAV}
    Legt fest, ob der Zugriff auf lokale Repositories "uber die
    Zugriffsmethode HTTP/WebDAV m"oglich 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"ur das jeweilige der
    Zugriff zuzulassen ist, damit diese Methode funktioniert.

    G"ultige Werte: \emph{''yes'', ''no''}

\config{SVN\_WEBDAV\_AUTH\_METHOD}{SVN\_WEBDAV\_AUTH\_METHOD}{SVNWEBDAVAUTHMETHOD}
    W"ahlt die Methode, die zur Anmeldung von Benutzern verwendet
    werden soll, sobald "uber 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"usselnde 
    Base64-kodierte Zeichenkette "uber das Netzwerk "ubertragen.

    Wird statt dessen ''digest'' verwendet, werden die Anmeldedaten
    durch eine hash-Funktion verschl"usselt bevor sie "ubertragen
    werden. Zudem wird sichergestellt, dass ein Angreifer den Hash-Wert 
    nicht abfangen und wiederverwenden kann.

    Damit stellt ''digest'' gegen"uber ''basic'' eine erheblich sicherere
    Authentifizierungsmethode dar und sollte wenn m"oglich verwendet
    werden. Solange der Client die Methode korrekt unterst"utzt
    bemerkt der Anwender keinen Unterschied im Vergleich zu ''basic''.

    G"ultige Werte: \emph{''basic'', ''digest''}

\config{SVN\_ACL\_N}{SVN\_ACL\_N}{SVNACLN}
    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"ochte muss Mitglied in einer Zugriffsliste sein, die wiederum 
    dem Repository zugeordent sein muss.

    Um getrennte Userlisten f"ur jedes Repository zu haben, wie es aus
    fr"uheren Versionen dieses Pakets bekannt war, muss eine einzelne
    Zugriffsliste f"ur jedes Repository angelegt werden. Diese wird dann
    dem jeweiligen Repo zugeordnet. Um statt dessen eine globale Liste
    von Anwendern zu erhalten, die gleicherma"sen auf alle Repositories
    zugreifen d"urfen, kann eine einzelne Zugriffsliste angelegt werden,
    die dann allen Repositories zugewiesen wird.
    Da es m"oglich ist, einem Repository mehrere Zugriffsliste zuzuordnen, 
    k"onnen beide Zugriffsmodelle (global und lokal) kombiniert werden.

    Beispiel: \emph{''3''}

\config{SVN\_ACL\_x\_NAME}{SVN\_ACL\_x\_NAME}{SVNACLxNAME}
    Ein eindeutiger Name f"ur die Zugriffsliste. Dieser Name wird verwendet, 
    um die Zugriffsliste bei der Zuordnung zu einem Repository
    eindeutig zu identifizieren. G"ultige Werte f"ur ACL Namen bestehen
    aus Buchstaben, Zahlen und Unterstrichen. Die Gro"s-Kleinschreibung
    der Namen spielt keine Rolle.

    Beispiel: \emph{''DEVELOPERS''}

\config{SVN\_ACL\_x\_USER\_N}{SVN\_ACL\_x\_USER\_N}{SVNACLxUSERN}
    Anzahl der Anwender, die in der aktuellen Zugriffsliste (x) angelegt
    werden sollen.

    Beispiel: \emph{''10''}

\config{SVN\_ACL\_x\_USER\_x\_ACTIVE}{SVN\_ACL\_x\_USER\_x\_ACTIVE}{SVNACLxUSERxACTIVE}
    Wenn dieser Wert auf ''yes'' steht, dann ist der jeweilige Anwender
    aktiv (Standard). Um den User (tempor"ar) 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"send wird die L"ange
    der Liste um ein Element reduziert.

    G"ultige Werte: \emph{''yes'', ''no''}

\config{SVN\_ACL\_x\_USER\_x\_NAME}{SVN\_ACL\_x\_USER\_x\_NAME}{SVNACLxUSERxNAME}
    Login Name des Anwenders.

    Beispiel: \emph{''hans''}

\config{SVN\_ACL\_x\_USER\_x\_PASSWD}{SVN\_ACL\_x\_USER\_x\_PASSWD}{SVNACLxUSERxPASSWD}
    Kennwort des Anwenders (wird im ECE maskiert dargestellt).

    Beispiel: \emph{''geheim''}
\end{description}

\subsection{Repository Einstellungen}

\begin{description}
\config{SVN\_REPOS\_N}{SVN\_REPOS\_N}{SVNREPOSN}
    Legt die Anzahl der Repositories auf diesem Server fest.

    Bitte beachten: Beim Zugriff "uber 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: \emph{''2''}
 
\config{SVN\_REPOS\_x\_DIR}{SVN\_REPOS\_x\_DIR}{SVNREPOSxDIR}
    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: \emph{''/var/lib/svn''}
 
\config{SVN\_REPOS\_x\_WEBDAV}{SVN\_REPOS\_x\_WEBDAV}{SVNREPOSxWEBDAV}
    Legt fest, ob der Zugriff "uber 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://\emph{yourserver}/svn/\emph{\$SVN\_REPOS\_x\_WEBNAME}

    Diese Einstellung ist jedoch wirkungslos, solange der Web-Server
    'apache2' nicht auf diesem Rechner installiert ist.

    G"ultige Werte: \emph{''yes'', ''no''}

\config{SVN\_REPOS\_x\_WEBNAME}{SVN\_REPOS\_x\_WEBNAME}{SVNREPOSxWEBNAME}
    Definiert den Namen (Alias) f"ur den Zugriff "uber HTTP/WebDAV auf dieses Repository.
    Wenn SVN\_REPOS\_x\_WEBDAV auf den Wert ''yes'' gestellt ist, dann erscheint das 
    Repository unter der URL:

    http://\emph{yourserver}/svn/\emph{\$SVN\_REPOS\_x\_WEBNAME}

    Diese Einstellung ist jedoch wirkungslos, solange der Web-Server
    'apache2' nicht auf diesem Rechner installiert ist.

    G"ultige Werte: \emph{''yes'', ''no''}
    
\config{SVN\_REPOS\_x\_ANON\_ACCESS}{SVN\_REPOS\_x\_ANON\_ACCESS}{SVNREPOSxANONACCESS}
    Regelt den Zugriff f"ur anonyme Benutzer auf das Repository.

    G"ultige Werte: \emph{''none'', ''read'', ''write''}

\config{SVN\_REPOS\_x\_AUTH\_ACCESS}{SVN\_REPOS\_x\_AUTH\_ACCESS}{SVNREPOSxAUTHACCESS}
    Regelt den Zugriff f"ur angemeldete Benutzer auf das Repository.
    Dabei ist zu beachten, das angemeldete Benutzer "uber WebDAV immer
    volle Zugriffsrechte haben, unabh"angig vom Wert dieser Option.

    G"ultige Werte: \emph{''none'', ''read'', ''write''}

\config{SVN\_REPOS\_x\_ACL}{SVN\_REPOS\_x\_ACL}{SVNREPOSxACL}
    Liste von ACL Namen durch Leerzeichen getrennt, die g"ultige Zugriffslisten 
    identifizieren. Wenn sich in der Aufz"ahlung ung"ultige Namen
    befinden, wird dies sp"ater angezeigt, wenn die Konfiguration aktualisiert 
    wird.

    Es ist allerdings zu beachten, dass ACL Namen nicht nach 
    Gro"s-Kleinschreibung unterschieden werden. Das bedeutet, dass ''Gobal'',
    ''GLOBAL'' und ''global'' alle die selbe Zugriffsliste angeben.

    Beispiel: \emph{''DEVELOPERS ADMINS''}

\config{SVN\_REPOS\_x\_BACKUP}{SVN\_REPOS\_x\_BACKUP}{SVNREPOSxBACKUP}
    Wenn dieses Repository automatisch gesichert werden soll, wird dieser
    Wert auf ''yes'' gesetzt. Anderenfalls wird das Repo bei der Sicherung
    "ubergangen.

    G"ultige Werte: \emph{''yes'', ''no''}

\config{SVN\_REPOS\_x\_DIR\_PERMISSIONS}{SVN\_REPOS\_x\_DIR\_PERMISSIONS}{SVNREPOSxDIRPERMISSIONS}
    Wenn diese Option auf ''yes'' gesetzt wird, k"onnen Rechte auf
    Verzeichnisebene innerhalb des Repositories definiert werden. Im Falle
    von ''no'' gelten lediglich die global eingestellten
    Zugriffsbeschr"ankungen.

    Siehe dazu auch das Kapitel ''Zugriffssteuerung auf Verzeichnisebene''

    G"ultige Werte: \emph{''yes'', ''no''}

\config{SVN\_REPOS\_x\_DIR\_PERM\_N}{SVN\_REPOS\_x\_DIR\_PERM\_N}{SVNREPOSxDIRPERMN}
    Anzahl der Verzeichnisse innerhalb des Repositories, f"ur welche
    Zugriffsberechtigungen angegeben werden sollen.

    Siehe dazu auch das Kapitel ''Zugriffssteuerung auf Verzeichnisebene''

    Beispiel: \emph{''2''}

\config{SVN\_REPOS\_x\_DIR\_x\_PATH}{SVN\_REPOS\_x\_DIR\_x\_PATH}{SVNREPOSxDIRxPATH}
    Pfad innerhalb der Verzeichnishierarchie des Repositories. Zu beachten
    ist, dass Zugriffsrechte einer h"oheren Verzeichnisebene auf alle
    Unterverzeichnisse "ubertragen werden, solange keine weitere Angabe
    dies explizit "uberschreibt. Ebenfalls zu beachten ist, dass
    das abschliessende Backslash-Zeichen im Verzeichnisnamen wegzulassen
    ist.

    Siehe dazu auch das Kapitel ''Zugriffssteuerung auf Verzeichnisebene''

    Beispiel: \emph{''/my/repository/path''}

\config{SVN\_REPOS\_x\_DIR\_x\_PERM}{SVN\_REPOS\_x\_DIR\_x\_PERM}{SVNREPOSxDIRxPERM}
    Liste der Zugriffsberechtigungen bestehend aus einem oder mehreren
    Ausdr"ucken, die Anwendernamen Zugriffsrechte zuweisen. 
    Mit einem vorangestellten @ bezieht sich der Anwendername auf eine ACL-Liste.
    Ebenfalls kann der Asterisk als Platzhalter f"ur alle Anwender
    verwendet werden.
    G"ultige Werte f"ur Zugriffsrechte sind ''r'', ''rw'' und ''''. 

    Siehe dazu auch das Kapitel ''Zugriffssteuerung auf Verzeichnisebene''

    Beispiel: \emph{''user1=r user2=rw user3=''}

\end{description}


\subsection{Einstellungen zur Datensicherung}

\begin{description}
\config{SVN\_BACKUP\_SCHEDULE}{SVN\_BACKUP\_SCHEDULE}{SVNBACKUPSCHEDULE} 
    Zeitvorgabe f"ur den CRON-Dienst. Hier wird angegeben, wann die
    automatische Sicherung durchgef"uhrt werden soll. Die 5 Werte stehen f"ur:
    Minute, Stunde, Tag, Monat, Wochentag.

    Beispiel:  \\
    \emph{''30 0 * * *''}  -->  t"aglich um 0:30 Uhr \\
    \emph{''0  1 */2 * *''} --> Jeden zweiten Tag um 1:00 Uhr

\config{SVN\_BACKUP\_TARGET}{SVN\_BACKUP\_TARGET}{SVNBACKUPTARGET} 
    Das Verzeichnis, in das die Sicherungsdateien abgelegt werden sollen.

    Standard: \emph{''/var/lib/svn\_backup''}

\config{SVN\_BACKUP\_MAXFILES}{SVN\_BACKUP\_MAXFILES}{SVNBACKUPMAXFILES} 
    Gibt an, wieviele Kopien von Sicherungsdateien aufgehoben werden sollen.

    Beispiel: \emph{''4''}

\config{SVN\_BACKUP\_MOUNT}{SVN\_BACKUP\_MOUNT}{SVNBACKUPMOUNT} 
    Bevor die Sicherung beginnt, wird das hier angegebene Kommando ausgef"uhrt. 
    Dies kann verwendet werden, um beispielsweise das Sicherungsmedium 
    in das Dateisystem einzubinden.
    Soll kein Befehl ausgef"uhrt werden bleibt das Feld leer.

    Beispiel: \emph{''mount -t udffs /dev/sr0 /mnt''}

\config{SVN\_BACKUP\_UMOUNT}{SVN\_BACKUP\_UMOUNT}{SVNBACKUPUMOUNT} 
    Nachdem die Sicherung beendet wurde, wird das hier angegebene Kommando 
    ausgef"uhrt. 
    Dies kann verwendet werden, um beispielsweise das Sicherungsmedium 
    vom Dateisystem zu trennen.
    Soll kein Befehl ausgef"uhrt werden bleibt das Feld leer.

    Beispiel: \emph{''umount /mnt''}

\config{SVN\_BACKUP\_NOTIFY}{SVN\_BACKUP\_NOTIFY}{SVNBACKUPNOTIFY} 
    Wird hier eine e-mail Adresse angegeben, erfolgt im Falle von Fehlern
    bei der Datensicherung eine Benachrichtigung an den hier angegebenen
    Empf"anger. Soll keine Benachrichtigung erfolgen bleibt das feld leer.
    
    Hinweis: Die Benachrichtigung funktioniert nur dann, wenn das E-mail
    Paket installiert ist.

    Beispiel: \emph{''admin@localhost''}
\end{description}


\section{Das Paketmen"u}

\subsection{Das Subversion Hauptmen"u}
Das Subversion Hauptmen"u ist "uber den Men"upunkt ''Service administration''
"uber den Befehl ''setup'' zu erreichen. Es ist wie folgt aufgebaut:

\begin{itemize}
\item View documentation\\
  Zeigt die Dokumentation an.
\item Edit configuration\\
  Damit kann die Konfigurationsdatei des Subversion-Pakets bearbeitet werden.
\item Advanced configuration file handling\\
  Erm"oglicht eine Versionsverwaltung der Konfigurationsdatei
\item Administration tools\\
  Untermen"u zu weiteren Funktionen.
\end{itemize}

\subsection{Subversion Administration Tools}
\begin{itemize}
\item Backup and restore\\
  Hier k"onnen Repositories manuell gesichert und wiederhergestellt
  werden.
\item Upgrade existing repository\\
  Repositories, die von einer "alteren Version von Subversion "ubernommen
  wurden, k"onnen hierueber in das aktuelle Format konvertiert werden. Erst
  nach der Konvertierung stehen alle Funktionen von Subversion zur Verf"ugung. 
  Jedoch ist anschliessend kein Downgrade mehr moeglich.
\item Remove existing repository\\
  "Uber diese Funktion k"onnen nicht mehr ben"otigte Repositories von
  der Festplatte und aus der Konfiguration auf bequeme Weise
  entfernt werden.
\end{itemize}

\subsection{Subversion Backup and Restore}
\begin{itemize}
\item Backup repository\\
  Ein Repository manuell in das in der Konfiguration angegebene Backup-
  Verzeichnis sichern.
\item Restore database\\
  Ein Repository aus einer Sicherungsdatei wiederherstellen.
\item List backup files\\
  Die Sicherungsdateien auflisten, die im Backup-Verzeichnis liegen.
\end{itemize}

\section{Zugriffssteuerung auf Verzeichnisebene}
Neben der globalen Zugriffskontrolle, die Benutzern einmalig Lese- oder
Schreibrechte auf das gesamte Repository einr"aumt, ist eine weitere
Zugriffssteuerung verf"ugbar, die die Vergabe individueller Rechte auf
Verzeichnisebene innerhalb des Repositories erm"oglicht. 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 "uber WebDAV oder
oder "uber den svnserve-Dienst erfolgt. Wird statt dessen "uber die
Zugriffsmethode ''file://'' auf ein Repository zugegriffen gelten die Rechte
auf Verzeichnisebene nicht.

In der eisfair-Konfiguration wird zun"achst das Verzeichnis angegeben, auf das
Rechte vergeben werden sollen. Dann wird eine Liste von Anwendern genannt,
denen "uber den Zuweisungsoperator entweder Leserechte (r) oder
Schreibrechte (rw) einger"aumt werden. Wird hinter dem Gleichheitszeichen
nichts weiter angegeben, bedeutet dies den Rechteentzug f"ur 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"anderter Form f"ur
alle Unterverzeichnisse gelten, solange sie nicht explizit durch eine
weitere Regel "uberschrieben 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"achst f"ur
die Wurzel des gesamten Verzeichnisbaums ein Leserecht f"ur alle Anwender
einzurichten und dieses bei Bedarf f"ur einzelne Unterverzeichnisse und
Anwender einzuschr"anken. Der Asterisk kann dabei als Platzhalter f"ur 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"onnen verwendet werden um eine Gruppe
von Anwendern gleichermassen anzusprechen. Dabei wird der ACL-Name mit einem
f"uhrenden ''@'' 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"ahnen 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"ur jede Operation eine Authentifizierung erforderlich - wodurch auf
Verzeichnisebene sowohl die Lese- als auch die Schreibrechte effektiv
beeinfluss werden k"onnen. Wurde der Wert dagegen auf ''read'' gesetzt,
werden Einschr"ankungen von Leserechten auf der Verzeichnisebene nicht
wirksam.


\section{Subversion als Client}

\subsection{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 "Anderungen kann man sich wie folgt ansehen:

    svn status

und zwischenzeitliche "Anderungen auf dem Server mit:

    svn status -u

Um lokale "Anderungen ins Repository zur"uckzuschreiben, benutzt man:

    svn commit -m ''set comment'' *

\subsection{Hinzuf"ugen von Dateien/Verzeichnissen}
Alle Arten von Dateien und Verzeichnissen werden bei Subversion mit dem
gleichen Befehl hinzugef"ugt:

    svn add <objekt>

Sogenannte Bin"ardateien werden dabei automatisch erkannt.

