Versionskontrolle mit Subversion

Für Subversion 1.5

(Übersetzt aus der Revision 4919)

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.

(TBA)


Inhaltsverzeichnis

Geleitwort
Vorwort
Publikum
Wie dieses Buch zu lesen ist
Konventionen in diesem Buch
Aufbau dieses Buchs
Dieses Buch ist frei
Danksagungen
Von Ben Collins-Sussman
Von Brian W. Fitzpatrick
Von C. Michael Pilato
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
1. Grundlegende Konzepte
Das Projektarchiv
Versionierungsmodelle
Das Problem verteilter Dateizugriffe
The Lock-Modify-Unlock Solution
Die „Kopieren – Ändern – Zusammenfassen“ - Lösung
Subversion in Action
Subversion-Projektarchiv-URLs
Arbeitskopien
Revisionen
Wie Arbeitskopien das Projektarchiv verfolgen
Arbeitskopien mit gemischten Revisionen
Updates und Commits sind getrennt
Gemischte Revisionen sind normal
Gemischte Revisionen sind nützlich
Gemischte Revisionen haben ihre Grenzen
Zusammenfassung
2. Grundlegende Benutzung
Hilfe!
Wie Sie Daten in Ihr Projektarchiv bekommen
svn import
Empfohlene Projektarchiv Aufteilung
Anfänglicher Checkout
Das Zwischenspeichern des Passwortes abstellen
Authentisierung als ein anderer Anwender
Der grundlegende Arbeitszyklus
Aktualisieren Sie Ihre Arbeitskopie
Nehmen Sie Änderungen an Ihrer Arbeitskopie vor
Untersuchen Sie Ihre Änderungen
Verschaffen Sie sich einen Überblick über Ihre Änderungen
Untersuchen Sie die Details Ihrer lokalen Änderungen
Zurücknehmen von Änderungen in der Arbeitskopie
Konflikte auflösen (Änderungen anderer einarbeiten)
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
Erzeugung einer Liste der Änderungsgeschichte
Detaillierte Untersuchung der Änderungsgeschichte
Untersuchen lokaler Änderungen
Vergleichen der Arbeitskopie mit dem Projektarchiv
Vergleichen von Projektarchiv mit Projektarchiv
Stöbern im Projektarchiv
svn cat
svn list
Bereitstellung älterer Projektarchiv-Schnappschüsse
Manchmal müssen Sie einfach nur aufräumen
Entsorgen einer Arbeitskopie
Wiederherstellung nach einer Unterbrechung
Zusammenfassung
3. Fortgeschrittene Themen
Revisionsbezeichner
Revisions-Schlüsselworte
Revisionsdaten
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
Peg- und operative Revisionen
Änderungslisten
Erstellen und Bearbeiten von Änderungslisten
Änderungslisten als Befehlsfilter
Einschränkungen von Änderungslisten
Das Netzwerkmodell
Anfragen und Antworten
Zwischenspeicherung der Client-Zugangsdaten
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
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
Zusammenführen 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
Abblocken von Clients, die Zusammenführungen nicht ausreichend unterstützen
Das abschließende Wort zur Zusammenführungs-Verfolgung
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
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
Projektarchiv-Wartung
Der Werkzeugkasten eines Administrators
svnadmin
svnlook
svndumpfilter
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
Wiederherstellung von Berkeley DB
Projektarchiv-Daten woandershin verschieben
Filtern der Projektarchiv-Historie
Projektarchiv Replikation
Sicherung des Projektarchivs
Verwaltung von Projektarchiv UUIDs
Verschieben und Entfernen von Projektarchiven
Zusammenfassung
6. Die Administration eines Subversion-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 Dienst unter Windows
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
HTTP Authentifizierung aufsetzen
SSL-Zertifikatsverwaltung
Autorisierungsoptionen
Pauschale Zugriffskontrolle
Verzeichnisweise Zugangskontrolle
Abstellen pfadbasierter Prüfungen
Extra Schmankerl
Stöbern im Projektarchiv
Protokollierung von Apache
Proxy mit Weiterleitung beim Schreiben
Andere Funktionen von Apache
Pfadbasierte Autorisierung
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
Zusammenfassung
8. Subversion integrieren
Schichtenmodell der Bibliotheken
Projektarchiv-Schicht
Projektarchiv-Zugriffs-Schicht
Client-Schicht
Innerhalb des Verwaltungsbereichs für Arbeitskopien
Die Datei entries
Unveränderte Kopien und Eigenschafts-Dateien
Benutzung der APIs
Die Bibliothek Apache Portable Runtime
URL- und Pfadanforderungen
Verwendung anderer Sprachen als C und C++
Beispielcode
Zusammenfassung
9. Die komplette Subversion Referenz
Der Kommandozeilen-Client von Subversion: svn
svn-Optionen
svn-Unterbefehle
svn add
svn blame
svn cat
svn changelist
svn checkout
svn cleanup
svn commit
svn copy
svn delete
svn diff
svn export
svn help
svn import
svn info
svn list
svn lock
svn log
svn merge
svn mergeinfo
svn mkdir
svn move
svn propdel
svn propedit
svn propget
svn proplist
svn propset
svn resolve
svn resolved
svn revert
svn status
svn switch
svn unlock
svn update
svnadmin
svnadmin-Optionen
svnadmin-Unterbefehle
svnadmin crashtest
svnadmin create
svnadmin deltify
svnadmin dump
svnadmin help
svnadmin hotcopy
svnadmin list-dblogs
svnadmin list-unused-dblogs
svnadmin load
svnadmin lslocks
svnadmin lstxns
svnadmin recover
svnadmin rmlocks
svnadmin rmtxns
svnadmin setlog
svnadmin setrevprop
svnadmin setuuid
svnadmin upgrade
svnadmin verify
svnlook
svnlook Optionen
svnlook Unterbefehle
svnlook author
svnlook cat
svnlook changed
svnlook date
svnlook diff
svnlook dirs-changed
svnlook help
svnlook history
svnlook info
svnlook lock
svnlook log
svnlook propget
svnlook proplist
svnlook tree
svnlook uuid
svnlook youngest
svnsync
svnsync Optionen
svnsync-Unterbefehle
svnsync copy-revprops
svnsync help
svnsync initialize
svnsync synchronize
svnserve
svnserve-Optionen
svndumpfilter
svndumpfilter-Optionen
svndumpfilter-Unterbefehle
svndumpfilter exclude
svndumpfilter include
svndumpfilter help
svnversion
svnversion
mod_dav_svn
mod_dav_svn-Konfigurationsanweisungen
mod_authz_svn
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 veranschaulicht diese einfache Möglichkeit
1.4. „Kopieren – Ändern – Zusammenfassen“ - Lösung
1.5. „Kopieren – Ändern – Zusammenfassen“ - Lösung (Fortsetzung)
1.6. Das Dateisystem des Projektarchivs
1.7. Das Projektarchiv
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
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

5.1. txn-info.sh (ausstehende Transaktionen anzeigen)
5.2. pre-revprop-change-Hook-Script des Spiegel-Projektarchivs
5.3. start-commit-Hook-Script des Spiegel-Projektarchivs
6.1. Eine Beispielkonfiguration für anonymen Zugang
6.2. Eine Beispielkonfiguration für authentifizierten Zugang
6.3. Eine Beispielkonfiguration für gemischten authentifizierten/anonymen Zugang
6.4. 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
8.1. Verwendung der Projektarchiv-Schicht
8.2. Verwendung der Projektarchiv-Schicht mit Python
8.3. Status in Python