Dieser Text befindet sich gegenwärtig in Bearbeitung, unterliegt ständigen Änderungen und kann dadurch nicht stets akkurat irgendeine freigegebene Version der Software Apache™ Subversion® beschreiben. Das Speichern dieser Seite als Lesezeichen oder andere auf diese Seite zu verweisen, ist keine so gute Idee. Besuchen Sie http://www.svnbook.com/, um stabile Versionen dieses Buchs zu erhalten.

Versionskontrolle mit Subversion [ENTWURF]

Für Subversion 1.8

(Übersetzt aus Revision6066)

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
I. Subversion kennenlernen
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
Ererbte Eigenschaften
Automatisches Setzen von Eigenschaften
Reservierte Subversion-Eigenschaften
Versionierte Eigenschaften
Unversionierte 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
Arbeit ohne Arbeitskopie
Operationen mit einem Kommandozeilen-Client aus der Ferne
Die Verwendung von svnmucc
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
Teilbaum-Merges und -Mergeinfo
Reintegration eines Zweigs
Mergeinfo und Vorschauen
Änderungen rückgängig machen
Zurückholen gelöschter Objekte
Fortgeschrittenes Zusammenführen
Rosinenpicken
Merge-Syntax: Die vollständige Offenlegung
Mergen ohne Mergeinfo
Mehr über Konflikte beim Zusammenführen
Änderungen blockieren
Protokolle und Anmerkungen, die Zusammenführungen anzeigen
Die Abstammung berücksichtigen oder ignorieren
Zusammenführen und Verschieben
Ahnungslose Clients vom Mergen abhalten
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
Lieferanten-Zweige aus fremden Projektarchiven
Lieferanten-Zweige aus gespiegelten Quellen
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
Controlling Access to Your Repository
Anlegen und konfigurieren Ihres Projektarchivs
Anlegen des Projektarchivs
Erstellen von Projektarchiv-Hooks
Konfiguration der Umgebung von Hook-Skripten
Häufige Anwendungen für Hook-Skripte
Finding hook scripts or rolling your own
FSFS Konfiguration
Projektarchiv-Wartung
Der Werkzeugkasten eines Administrators
svnadmin
svnlook
svndumpfilter
svnrdump
svnsync
fsfs-reshard.py
Berichtigung des Protokolleintrags
Plattenplatzverwaltung
Wie Subversion Plattenplatz spart
Entfernen unvollendeter Transaktionen
FSFS Filtersystem packen
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 xinetd
svnserve über einen Tunnel
svnserve als ein Dienst unter Windows
svnserve als ein launchd-Job
Integrierte Authentifikation und Autorisierung
Erstellen einer Passwortdatei und festlegen der Authentifikationsumgebung (Realm)
Setzen von Zugriffsbeschränkungen
svnserve mit SASL verwenden
Authentifikation mit SASL
SASL Verschlüsselung
Tunneln über SSH
SSH-Konfigurationstricks
Erstmalige Einrichtung
Steuerung des aufgerufenen Befehls
svnserve Konfigurations-Referenz
Allgemeine Konfiguration
Cyrus SASL Konfiguration
httpd, der Apache HTTP-Server
Voraussetzungen
Grundlegende Konfiguration von Apache
Authentifikationsoptionen
Einfache Authentifikation
Digest Authentifikation
Autorisierungs-Optionen
Pauschale Zugriffskontrolle
Verzeichnisweise Zugriffskontrolle
Unterbinden pfad-basierter Prüfungen
Im Projektarchiv versionierte Zugriffs-Dateien
Schutz des Netzwerkverkehrs durch SSL
Konfiguration von Subversion-Server SSL-Zertifikaten
Subversion-Client SSL-Zertifikat-Verwaltung
Auf Leistung abstimmen
KeepAlive
Massen-Aktualisierungen
Extra Schmankerl
Stöbern im Projektarchiv
Protokollierung von Apache
Proxy mit Weiterleitung beim Schreiben
Andere Funktionen von Apache
Subversion Apache HTTP-Server Konfigurations~Referenz
mod_dav_svn Konfigurations-Direktiven
mod_authz_svn Konfigurations-Direktiven
Pfad-basierte Autorisierung
Loslegen mit pfad-basierter Zugriffskontrolle
Zugriffskontroll-Gruppen
Anwendernamen-Aliase
Fortgeschrittene Zugriffskontroll-Funktionen
Einige Fallstricke bei der Zugriffskontrolle
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-Konfigurations-Bereich
Aufbau des Konfigurations-Bereichs
Konfiguration und die Windows-Registrierungsdatenbank
Laufzeit-Konfigurations-Optionen
Allgemeine Konfiguration
Serverspezifische Konfiguration
Lokalisierung
Locales verstehen
Wie Subversion Locales verwendet
Verwendung externer Editoren
Verwenden externer Werkzeuge zum Vergleichen und Zusammenführen
Externes diff
Externes diff3
Externes 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
II. Subversion Befehls-Referenz
I. svn Referenz – Subversion-Kommandozeilen-Client
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
II. svnadmin Referenz – Subversion Projektarchiv-Verwaltung
svnadmin crashtest
svnadmin create
svnadmin deltify
svnadmin dump
svnadmin freeze
svnadmin help (h, ?)
svnadmin hotcopy
svnadmin list-dblogs
svnadmin list-unused-dblogs
svnadmin load
svnadmin lock
svnadmin lslocks
svnadmin lstxns
svnadmin pack
svnadmin recover
svnadmin rmlocks
svnadmin rmtxns
svnadmin setlog
svnadmin setrevprop
svnadmin setuuid
svnadmin unlock
svnadmin upgrade
svnadmin verify
III. svnlook Referenz – Subversion Projektarchiv-Untersuchung
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
IV. svnserve-Referenz – Maßgeschneiderter Subversion-Server
svnserve
V. svnversion-Referenz – Subversion Arbeitskkopie-Versions-Information
svnversion
VI. svnsync-Referenz – Subversion Projektarchiv-Spiegelung
svnsync copy-revprops
svnsync help
svnsync info
svnsync initialize (init)
svnsync synchronize (sync)
VII. svnrdump-Referenz – Datenmigration von entfernten Subversion Projektarchiven
svnrdump dump
svnrdump help
svnrdump load
VIII. svndumpfilter-Referenz – Filterung der Subversion-Historie
svndumpfilter exclude
svndumpfilter include
svndumpfilter help
IX. svnmucc-Referenz – Subversion Multi-URL-Kommando Client
svnmucc
X. Subversion Projektarchiv-Hook-Referenz
start-commit
pre-commit
post-commit
pre-revprop-change
post-revprop-change
pre-lock
post-lock
pre-unlock
post-unlock
III. Anhänge
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. Das veraltete Berkeley DB Filesystem
Die Konfiguration Ihrer Berkeley-DB-Umgebung
Einschränkungen von Berkeley DB
Architektonische Einschränkungen
Einsatz auf Netz-Freigaben
Fehlertoleranz und die Notwendigkeit zur Wiederherstellung
Wartung von Berkeley-DB-Projektarchiven
Wiederherstellung von Berkeley DB
Entfernen unbenutzter Protokolldateien von Berkeley DB
Dienstprogramme von Berkeley DB
E. 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
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. hooks-env (maßgeschneiderte Umgebungskonfiguration für Hook-Skripte)
5.2. start-commit Hook, um Merge-Tracking Unterstützung zu erzwingen
5.3. txn-info.sh (ausstehende Transaktionen anzeigen)
5.4. pre-revprop-change-Hook-Skript des Spiegel-Projektarchivs
5.5. start-commit-Hook-Skript des Spiegel-Projektarchivs
6.1. Eine Beispieldefinition für einen svnserve launchd Job
6.2. Eine Beispielkonfiguration für anonymen Zugriff
6.3. Eine Beispielkonfiguration für authentifizierten Zugriff
6.4. Eine Beispielkonfiguration für gemischten authentifizierten/anonymen Zugriff
6.5. Abstellen aller Pfadüberprüfungen
6.6. Einzelne im Projektarchiv versionierte Zugriffs-Datei
6.7. Verwendung von im Projektarchiv versionierten authz-Dateien pro Projektarchiv
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