Sie befinden sich hier: eisfair / Pack-Eis
News News News

Navigation

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