Diese Dokumentation wurde zur Beschreibung der Serie 1.7.x von Apache™ Subversion® erstellt. Falls Sie eine unterschiedliche Version von Subversion einsetzen, sei Ihnen dringend angeraten, bei http://www.svnbook.com/ vorbeizuschauen und stattdessen die zu Ihrer Version von Subversion passende Version dieser Dokumentation heranzzuiehen.

Versionskontrolle mit Subversion

Für Subversion 1.7

(Übersetzt aus der Revision5462)

Ben Collins-Sussman

Brian W. Fitzpatrick

C. Michael Pilato

Dieses Werk steht unter der Lizenz der Creative Commons Attribution License. Um eine Kopie dieser Lizenz einzusehen, gehen Sie zu http://creativecommons.org/licenses/by/2.0/ oder schreiben Sie an Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.


Inhaltsverzeichnis

Geleitwort
Vorwort
Was ist Subversion?
Ist Subversion das richtige Werkzeug?
Die Geschichte von Subversion
Die Architektur von Subversion
Die Komponenten von Subversion
Was gibt es Neues in Subversion
Publikum
Wie dieses Buch zu lesen ist
Aufbau dieses Buchs
Dieses Buch ist frei
Danksagungen
1. Grundlegende Konzepte
Grundlagen der Versionskontrolle
Das Projektarchiv
Die Arbeitskopie
Versionierungsmodelle
Das Problem verteilter Dateizugriffe
Die Sperren-Ändern-Entsperren-Lösung
Die Kopieren-Ändern-Zusammenführen-Lösung
Versionskontrolle nach Art von Subversion
Subversion Projektarchive
Revisionen
Projektarchive adressieren
Subversion-Arbeitskopien
Wie die Arbeitskopie funktioniert
Grundlegende Interaktionen der Arbeitskopie
Arbeitskopien mit gemischten Revisionen
Zusammenfassung
2. Grundlegende Benutzung
Hilfe!
Wie Sie Daten in Ihr Projektarchiv bekommen
Importieren von Dateien und Verzeichnissen
Empfohlene Aufteilung des Projektarchivs
Was steckt in einem Namen?
Erstellen einer Arbeitskopie
Der grundlegende Arbeitszyklus
Aktualisieren Sie Ihre Arbeitskopie
Nehmen Sie Ihre Änderungen vor
Überprüfen Sie Ihre Änderungen
Verschaffen Sie sich einen Überblick über Ihre Änderungen
Untersuchen Sie die Details Ihrer lokalen Änderungen
Beheben Sie Ihre Fehler
Lösen Sie etwaige Konflikte auf
Interaktive Begutachtung der Konflikte
Interaktive Konfliktauflösung
Aufschieben der Konfliktauflösung
Manuelle Konfliktauflösung
Verwerfen Ihrer Änderungen zugunsten einer aktualisierten Revision aus dem Projektarchiv
Die Verwendung von svn revert
Übergeben Ihrer Änderungen
Geschichtsforschung
Detaillierte Untersuchung der Änderungsgeschichte
Untersuchen lokaler Änderungen
Vergleichen der Arbeitskopie mit dem Projektarchiv
Vergleichen von Projektarchiv-Revisionen
Erzeugung einer Liste der Änderungsgeschichte
Stöbern im Projektarchiv
Anzeige von Dateiinhalten
Anzeigen der zeilenweisen Zuordnung von Änderungen
Auflistung versionierter Verzeichnisse
Bereitstellung älterer Projektarchiv-Schnappschüsse
Manchmal müssen Sie einfach nur aufräumen
Entsorgen einer Arbeitskopie
Wiederherstellung nach einer Unterbrechung
Umgang mit Strukturkonflikten
Ein Beispiel für einen Baumkonflikt
Zusammenfassung
3. Fortgeschrittene Themen
Revisionsbezeichner
Revisions-Schlüsselworte
Revisionsdaten
Peg- und operative Revisionen
Eigenschaften
Warum Eigenschaften?
Ändern von Eigenschaften
Eigenschaften und der Arbeitsablauf von Subversion
Automatisches Setzen von Eigenschaften
Datei-Portabilität
Datei-Inhalts-Typ
Ausführbarkeit von Dateien
Zeichenfolgen zur Zeilenende-Kennzeichnung
Ignorieren unversionierter Objekte
Ersetzung von Schlüsselworten
Verzeichnis-Teilbäume
Sperren
Anlegen von Sperren
Entdecken von Sperren
Freigabeerzwingung und Stehlen von Sperren
Kommunikation über Sperren
Externals-Definitionen
Änderungslisten
Erstellen und Bearbeiten von Änderungslisten
Änderungslisten als Befehlsfilter
Einschränkungen von Änderungslisten
Das Netzwerkmodell
Anfragen und Antworten
Client-Zugangsdaten
Zwischenspeichern von Zugangsdaten
Unterbinden der Zwischenspeichrung von Passwörtern
Entfernen zwischengespeicherter Zugangsdaten
Anmeldung über die Kommandozeile
Schlusswort zur Anmeldung
Zusammenfassung
4. Verzweigen und Zusammenführen
Was ist ein Zweig?
Verwenden von Zweigen
Erzeugen eines Zweiges
Arbeiten mit Ihrem Zweig
Die Schlüsselkonzepte des Verzweigens
Grundlegendes Zusammenführen
Änderungsmengen
Einen Zweig synchron halten
Reintegration eines Zweigs
Mergeinfo und Vorschauen
Änderungen rückgängig machen
Zurückholen gelöschter Objekte
Fortgeschrittenes Zusammenführen
Die Rosinen herauspicken
Merge-Syntax: Die vollständige Enthüllung
Mergen ohne Mergeinfo
Mehr über Konflikte beim Zusammenführen
Änderungen blockieren
Einen reintegrierten Zweig am Leben erhalten
Protokolle und Anmerkungen, die Zusammenführungen anzeigen
Die Abstammung berücksichtigen oder ignorieren
Zusammenführen und Verschieben
Abblocken von Clients, die Zusammenführungen nicht ausreichend unterstützen
Das abschließende Wort zum Merge-Tracking
Zweige durchlaufen
Tags
Erzeugen eines einfachen Tags
Erzeugen eines komplexen Tags
Verwaltung von Zweigen
Aufbau des Projektarchivs
Lebensdauer von Daten
Verbreitete Verzweigungsmuster
Release-Zweige
Funktions-Zweige
Lieferanten-Zweige
Allgemeines Vorgehen für die Verwaltung von Lieferanten-Zweigen
svn_load_dirs.pl
Verzweigen oder nicht verzweigen?
Zusammenfassung
5. Verwaltung des Projektarchivs
Das Subversion Projektarchiv, Definition
Strategien für die Verwendung eines Projektarchivs
Planung der Organisation Ihres Projektarchivs
Entscheiden Sie, wo und wie Ihr Projektarchiv untergebracht werden soll
Auswahl der Datenspeicherung
Berkeley DB
FSFS
Anlegen und konfigurieren Ihres Projektarchivs
Anlegen des Projektarchivs
Erstellen von Projektarchiv-Hooks
Konfiguration von Berkeley DB
FSFS Konfiguration
Projektarchiv-Wartung
Der Werkzeugkasten eines Administrators
svnadmin
svnlook
svndumpfilter
svnrdump
svnsync
fsfs-reshard.py
Dienstprogramme von Berkeley DB
Berichtigung des Protokolleintrags
Plattenplatzverwaltung
Wie Subversion Plattenplatz spart
Entfernen unvollendeter Transaktionen
Entfernen unbenutzter Protokolldateien von Berkeley DB
FSFS Filtersystem packen
Wiederherstellung von Berkeley DB
Projektarchiv-Daten woanders hin verschieben
Repository data migration using svnadmin
Projektarchiv-Daten-Migration mit svnrdump
Filtern der Projektarchiv-Historie
Projektarchiv Replikation
Replizierung mit svnsync
Teilweise Replizierung mit svnsync
Ein schneller Trick zur Spiegel-Erstellung
Nachbereitung der Replizierung
Sicherung des Projektarchivs
Verwaltung von Projektarchiv UUIDs
Verschieben und Entfernen von Projektarchiven
Zusammenfassung
6. Konfiguration des Servers
Überblick
Auswahl einer Serverkonfiguration
Der svnserve-Server
svnserve über SSH
Der Apache HTTP Server
Empfehlungen
svnserve, ein maßgefertigter Server
Der Serverstart
svnserve als Unix-Dienst
svnserve über inetd starten
svnserve über einen Tunnel
svnserve als ein Dienst unter Windows
svnserve als ein launchd-Job
Integrierte Authentifizierung und Autorisierung
Erstellen einer Passwortdatei und festlegen der Authentifikationsumgebung (Realm)
Setzen von Zugriffsbeschränkungen
svnserve mit SASL verwenden
Authentifizierung mit SASL
SASL Verschlüsselung
Tunneln über SSH
SSH-Konfigurationstricks
Erstmalige Einrichtung
Steuerung des aufgerufenen Befehls
httpd, der Apache HTTP-Server
Voraussetzungen
Grundlegende Konfiguration von Apache
Authentifikationsoptionen
Einfache Authentifizierung
Digest authentication
Autorisierungsoptionen
Pauschale Zugriffskontrolle
Verzeichnisweise Zugangskontrolle
Abstellen pfadbasierter Prüfungen
Schutz des Netzwerkverkehrs durch SSL
Konfiguration von Subversion Server SSL Zertifikaten
Subversion-Client SSL-Zertifikat-Verwaltung
Extra Schmankerl
Stöbern im Projektarchiv
Protokollierung von Apache
Proxy mit Weiterleitung beim Schreiben
Andere Funktionen von Apache
Pfadbasierte Autorisierung
Protokollierung auf hohem Niveau
Server Optimierung
Datenpufferung
Datenkompression über das Netz
Unterstützung mehrerer Zugriffsmethoden auf das Projektarchiv
7. Subversion an Ihre Bedürfnisse anpassen
Laufzeit-Konfigurationsbereich
Aufbau des Konfigurationsbereichs
Konfiguration und die Windows-Registrierungsdatenbank
Konfigurationsoptionen
Servers
Config
Lokalisierung
Locales verstehen
Wie Subversion Locales verwendet
Verwendung externer Editoren
Verwenden externer Vergleichs- und Zusammenführungsprogramme
Externes diff
Externes diff3
External merge
Zusammenfassung
8. Subversion integrieren
Schichtenmodell der Bibliotheken
Projektarchiv-Schicht
Projektarchiv-Zugriffs-Schicht
Client-Schicht
Benutzung der APIs
Die Bibliothek Apache Portable Runtime
Funktionen und Batons
URL- und Pfadanforderungen
Verwendung anderer Sprachen als C und C++
Beispielcode
Zusammenfassung
9. Die vollständige Subversion Referenz
svn – Subversion-Kommandozeilen-Client
svn-Optionen
svn-Unterbefehle
svn add
svn blame (praise, annotate, ann)
svn cat
svn changelist (cl)
svn checkout (co)
svn cleanup
svn commit (ci)
svn copy (cp)
svn delete (del, remove, rm)
svn diff (di)
svn export
svn help (h, ?)
svn import
svn info
svn list (ls)
svn lock
svn log
svn merge
svn mergeinfo
svn mkdir
svn move (mv)
svn patch
svn propdel (pdel, pd)
svn propedit (pedit, pe)
svn propget (pget, pg)
svn proplist (plist, pl)
svn propset (pset, ps)
svn relocate
svn resolve
svn resolved
svn revert
svn status (stat, st)
svn switch (sw)
svn unlock
svn update (up)
svn upgrade
svnadmin – Subversion Projektarchiv-Verwaltung
svnadmin-Optionen
svnadmin-Unterbefehle
svnadmin crashtest
svnadmin create
svnadmin deltify
svnadmin dump
svnadmin help (h, ?)
svnadmin hotcopy
svnadmin list-dblogs
svnadmin list-unused-dblogs
svnadmin load
svnadmin lslocks
svnadmin lstxns
svnadmin pack
svnadmin recover
svnadmin rmlocks
svnadmin rmtxns
svnadmin setlog
svnadmin setrevprop
svnadmin setuuid
svnadmin upgrade
svnadmin verify
svnlook – Subversion Projektarchiv-Untersuchung
svnlook Optionen
svnlook Unterbefehle
svnlook author
svnlook cat
svnlook changed
svnlook date
svnlook diff
svnlook dirs-changed
svnlook filesize
svnlook help (h, ?)
svnlook history
svnlook info
svnlook lock
svnlook log
svnlook propget (pget, pg)
svnlook proplist (plist, pl)
svnlook tree
svnlook uuid
svnlook youngest
svnsync – Subversion Projektarchiv-Spiegelung
svnsync Optionen
svnsync-Unterbefehle
svnsync copy-revprops
svnsync help
svnsync info
svnsync initialize (init)
svnsync synchronize (sync)
svnrdump – Datenmigration von entfernten Subversion Projektarchiven
svnrdump Optionen
svnrdump Unterbefehle
svnrdump dump
svnrdump help
svnrdump load
svnserve – Maßgeschneideter Subversion-Server
svnserve-Optionen
svndumpfilter—Subversion History Filtering
svndumpfilter-Optionen
svndumpfilter-Unterbefehle
svndumpfilter exclude
svndumpfilter include
svndumpfilter help
svnversion – Subversion Arbeitskkopie-Versions-Information
svnversion
mod_dav_svn – Subversion Apache HTTP-Server-Modul
mod_dav_svn-Konfigurationsanweisungen
mod_authz_svn – Subversion Apache HTTP-Autorisierungs-Modul
mod_authz_svn-Konfigurationsanweisungen
Subversion-Eigenschaften
Versionierte Eigenschaften
Unversionierte Eigenschaften
Projektarchiv-Hooks
start-commit
pre-commit
post-commit
pre-revprop-change
post-revprop-change
pre-lock
post-lock
pre-unlock
post-unlock
A. Subversion-Einführung für einen schnellen Start
Subversion installieren
Schnellstart-Lehrgang
B. Subversion für CVS-Benutzer
Revisionsnummern sind jetzt anders
Verzeichnisversionen
Mehr Operationen ohne Verbindung
Unterscheidung zwischen Status und Update
Status
Update
Zweige und Tags
Eigenschafts-Metadaten
Konfliktauflösung
Binärdateien und Umwandlung
Versionierte Module
Authentifizierung
Ein Projektarchiv von CVS nach Subversion überführen
C. WebDAV und Autoversionierung
Was ist WebDAV?
Autoversionierung
Interoperabilität von Clients
Eigenständige WebDAV-Anwendungen
Microsoft Office, Dreamweaver, Photoshop
cadaver, DAV Explorer
WebDAV-Erweiterungen von Dateisystem-Browsern
Microsoft Webordner
Nautilus, Konqueror
WebDAV-Dateisystem-Implementation
WebDrive, NetDrive
Mac OS X
Linux davfs2
D. Copyright
Stichwortverzeichnis

Abbildungsverzeichnis

1. Die Architektur von Subversion
1.1. Ein typisches Client/Server System
1.2. Das zu vermeidende Problem
1.3. Die Sperren-Ändern-Entsperren-Lösung
1.4. Kopieren-Ändern-Zusammenführen-Lösung
1.5. Kopieren-Ändern-Zusammenfassen-Lösung (Fortsetzung)
1.6. Änderungen am Baum im Verlauf der Zeit
1.7. Das Dateisystem des Projektarchivs
4.1. Entwicklungszweige
4.2. Projektarchiv-Struktur zu Beginn
4.3. Projektarchiv mit neuer Kopie
4.4. Die Verzweigung der Geschichte einer Datei
8.1. Dateien und Verzeichnisse in zwei Dimensionen
8.2. Versionierung der Zeit – die dritte Dimension!

Tabellenverzeichnis

1.1. Projektarchiv-Zugriffs-URLs
2.1. Häufige Protokollanfragen
4.1. Befehle zum Verzweigen und Zusammenführen
5.1. Vergleich der Projektarchiv-Datenspeicherung
6.1. Vergleich der Serveroptionen für Subversion
C.1. Verbreitete WebDAV-Clients

Liste der Beispiele

4.1. Hook-Skript zum Start der Übertragung als Torwächter für die Merge-Verfolgung
5.1. txn-info.sh (ausstehende Transaktionen anzeigen)
5.2. pre-revprop-change-Hook-Skript des Spiegel-Projektarchivs
5.3. start-commit-Hook-Skript des Spiegel-Projektarchivs
6.1. Eine Beispieldefinition für einen svnserve launchd Job
6.2. Eine Beispielkonfiguration für anonymen Zugang
6.3. Eine Beispielkonfiguration für authentifizierten Zugang
6.4. Eine Beispielkonfiguration für gemischten authentifizierten/anonymen Zugang
6.5. Abstellen aller Pfadüberprüfungen
7.1. Beispieldatei mit Einträgen für die Registrierungsdatenbank (.reg)
7.2. diffwrap.py
7.3. diffwrap.bat
7.4. diff3wrap.py
7.5. diff3wrap.bat
7.6. mergewrap.py
7.7. mergewrap.bat
8.1. Verwendung der Projektarchiv-Schicht
8.2. Verwendung der Projektarchiv-Schicht mit Python
8.3. Status in Python