Vorwort
If C gives you enough rope to hang yourself, think
of Subversion as a sort of rope storage facility.
—Brian W. Fitzpatrick
In der Welt von Open-Source Software war das Concurrent
Versions System (CVS) lange Zeit das Werkzeug der Wahl
zur Versionkontrolle. Und das mit Recht. CVS selbst ist
freie Software und seine nicht restriktive Handhabung und
die Unterstützung von Netzwerkoperationen, die es Dutzenden
von Programmierern erlaubt, ihre Arbeit zu teilen, passt sehr
gut in das gemeinschaftliche Wesen der Open-Source Welt.
CVS und sein semi-chaotisches Entwicklungsmodell ist
zu einem Grundstein der Open-Source Kultur geworden.
Aber wie bei vielen Werkzeugen zeigt sich auch bei CVS
langsam sein Alter. Subversion ist ein ziemlich neues
Versionskontrollsystem, entwickelt als Nachfolger von CVS.
Die Designer setzten darauf die Herzen der CVS-Benutzer
auf zwei Wegen zu gewinnen: Einmal durch die Erstellung
eines Open-Source Systems mit einem Design ähnlich wie bei
CVS und zum anderen mit dem Versuch, die meisten der bei CVS
festzustellenden Probleme zu lösen. Wenn das Ergebnis auch
nicht notwendigerweise der große Wurf im Version Control
Design ist, so ist Subversion dennoch sehr leistungsfähig,
sehr nützlich und sehr flexibel ist.
Das vorliegende Buch dokumentiert die Version 1.0.1 des
Subversion Versions Kontrollsystems. Wir haben den Versuch
unternommen sehr gründlich in unserer Betrachtung
zu sein. Wie auch immer, Subversion hat eine wachsende
und motivierte Entwicklergemeinde, daher ist bereits eine
Reihe von Features und Verbesserungen für zukünftige Versionen
von Subversion geplant, wodurch sich einige der in diesem
Buch beschriebenen Kommandos und spezifischen Anmerkungen
ändern können.
Die Zielgruppe
Das Buch ist für Computer erfahrene Leute geschrieben,
die ihre Daten mithilfe von Subversion verwalten möchten.
Weil Subversion auf einer Anzahl unterschiedlicher Betriebssysteme
läuft, ist das primäre Interface die Kommandozeile.
Genau dieses Kommandozeilen Werkzeug (svn) ist es ,
dessen Benutzung und Anwendung in diesem Buch beschrieben ist.
Der Einfachheit halber setzen die Beispiele in diesem Buch voraus,
dass der Leser ein Unix-ähnliches Betriebssystem benutzt und
einigermaßen vertraut mit Unix und Kommandozeilen Interfaces ist.
Nichtsdestoweniger läuft das svn
Programm auch auf Nicht-Unix-Plattformen wie Microsoft Windows.
Mit einigen wenigen Ausnahmen, wie z.B. der Verwendung von
Back-Slashes (\) anstatt
Forward-Slashes (/) als Verzeichnisunterteilungen
laufen die Eingaben in das Tool und auch die Ausgaben im Betrieb
unter Windows identisch zu dem Unix-Gegenschtück. Dennoch dürften
Windows Anwender mehr Erfolg haben, wenn die Beispiele in der Cygwin Unix
Emulation laufen gelassen werden.
Die meisten Leser sind vermutlich Programmierer oder
Systemadministratoren, die Änderungen eines Quellcodes verfolgen
möchten. Das ist die gebräuchlichste Anwendung für Subversion
und somit auch das dem Buch zu Grunde liegende Szenario aller
im Buch genannten Beispiele. Aber Subversion kann bei der Verwaltung
von Änderungen in allen möglichen Bereichen verwendet werden:
bei Bildern, Musik, Datenbanken, Dokumentationen usw. Aus der Sicht
von Subversion sind Daten einfach Daten.
Das vorliegende Buch ist unter der Prämisse geschrieben worden,
dass der Leser nie zuvor ein Versionskontrollsystem verwendet hat.
Wie haben aber versucht es für CVS Anwender leicht zu machen in Subversion
einzusteigen. Spezielle Randbemerkungen gehen von Zeit zu Zeit auf CVS ein,
und ein gesonderter Anhang fasst die meisten Unterschiede zwischen CVS und
Subversion zusammen.
Wie soll das Buch gelesen werden?
Das Buch hat die Zielsetzung für Leute mit unterschiedlichstem
Hintergrund nützlich zu sein — angefangen bei Leuten ohne vorherige
Erfahrungen im Bereich Versionskontrolle bis hin zu geübten Systemadministratoren.
Basierend auf Ihrem eigenen Erfahrungen sind bestimmte Kapitel
mehr oder weniger interessant für Sie. Im folgenden stellen wir eine Art von
Leselisten für die unterschiedlichen Lesertypen zusammen.
Erfahrende Systemadministratoren
Wir gehen davon aus, dass Sie vermutlich
CVS vorher schon verwendet haben und darauf
brennen einen Subversion Server so schnell wie möglich
zum Laufen zu bekommen. Kapitel 5 und 6 zeigen
Ihnen wie ein erstes Repository erzeugt wird und wie
es über das Netzwerk zur Verfügung gestellt wird.
Nachdem das erledigt ist, ist Kapitel 3 und der Anhang
A der schnellste Weg um die Anwendung des Subversion
Client zu lernen in Anlehnung an Ihre CVS Erfahrungen.
Neue Benutzer
Ihr Systemadministrator hat wahrscheinlich Subversion
schon installiert und Sie möchten lernen wie der Subversion
Client verwendet wird. Wenn Sie noch nie ein Versionskontrollsystem
verwendet haben (wie z.B. CVS), dann sind die Kapitel 2 und 3 eine
unbedingt erforderliche Einführung. Wenn Sie aber schon Erfahrungen
bei der Anwendung von CVS gesammelt haben, sind Kapitel 3 und der
Anhang A der beste Startpunkt.
Erfahrene Anwender
Egal, ob Sie ein Systemadministrator oder Anwender sind,
schließlich wird Ihr Projekt wachsen. Nun möchten Sie auch
weitergehende Dinge mit Subversion ausführen, wie z.B. die
Verwendung von Branches oder die Durchführung
von Mergings (Kapitel 4), die Verwendung der Subversion
Property Unterstützung, die Konfiguration von Laufzeit Optionen (Kapitel 7)
und andere Dinge. Kapitel 4 und 7 sind fürs Erste nicht unbedingt
erforderlich, sollten aber auf jeden Fall gelesen werden, wenn Sie
die Grundlagen gemeistert haben.
Entwickler
Vermutlich sind Sie bereits mit Subversion vertraut
und möchten nun Erweiterungen anbringen oder neue Software
auf der vorhandenen API aufsetzen, dann ist Kapitel 8 genau
das Richtige für Sie.
Das Buch endet mit Referenzlisten, Kapitel 9 ist eine Liste
aller Subversion Kommandos und die Anhänge behandeln noch eine
Reihe nützlicher Themen. Das sind die Kapitel, die Sie wahrscheinlich
auch dann immer wieder zur Hand nehmen, wenn Sie das Buch gelesen haben.
Konventionen innerhalb des Buches
Dieser Abschnitt behandelt die verschiedenen Konventionen
die innerhalb des Buches Anwendung finden.
Typographische Konventionen
Konstante breite Constant width
Anwendung für Kommandos, Ausgaben von Kommandos und Schaltern ??? Used for commands, command output, and switches
Konstante Breite Kursiv Constant width italic
????? Used for replaceable items in code and text
Kursiv Italic
Dateien und Verzeichnisnamen... Used for file and directory names
Icons
This icon designates a note relating to the surrounding
text.
This icon designates a helpful tip relating to the surrounding
text.
This icon designates a warning relating to the surrounding
text.
Beachten Sie bitte, dass die Quellcode Beispiele nichts anderes
sind als eben — Beispiele. Sie mögen zwar mit der richtigen
Compilereinstellung kompilierbar sein, aber sie sollen lediglich
die gerade geschilderten Probleme veranschaulichen und dienen nicht
notwendigerweise auch als Beispiel guten Programmierstils.
Aufbau des Buches
Hier ist eine Liste der nachfolgenden Kapitel und deren Inhalt:
Kapitel 1, Einführung
Behandelt die Geschichte von Subversion, seine
Features, den Aufbau, die Komponenten und die Installationsmethoden.
Kapitel 2, Grundlegende Konzepte
Erklärt die Grundlagen der Versionskontrolle und unterschiedliche
Versionierungsmodelle, außerdem werden die Repository Struktur von Subversion,
Arbeitskopien und Revisions behandelt.
Kapitel 3, Angeleitete Führung
Führt durch einen Tag im Leben eines Subversion-Anwenders.
Es erklärt die Anwendung von Subversion bei der Erfassung, der
Änderung und der Übermittlung von Daten.
Kapitel 4, Branching und Merging
Hier werden Branches, Mergings und Tagging diskutiert,
außerdem die besten Verfahren zum Branching und Merging,
allgemeine Anwendungsfälle, die Rücknahme von Änderungen
und wie man einfach von einem auf den anderen Branch wechseln kann.
Kapitel 5, Repository Administration
Erläutert die Grundlangen der Subversion Repositories,
wie die Erzeugung, Konfiguration und die Pflege des Repositories
und die Anwendug der Werkzeuge mit denen all das gemacht wird.
Kapitel 6, Server Konfiguration
Erklärt wie ein Subversion Server zu konfigurieren ist und
die drei unterschiedlichen Wege, um auf ein Subversion
Repository zu zugreifen: HTTP
svn und das local Protokoll.
für den Zugriff. Es werden auch die Bereiche authentifizierung,
autorization und anonymer zugriff erläutert.
Explains how to configure your Subversion server and
the three ways to access your repository:
HTTP, the svn
protocol, and local access. It also covers the details
of authentication, authorization and anonymous
access.
Kapitel 7 Chapter 7, Fortgeschritten Bereiche Advanced Topics
Erkundet die Subversion Client Konfigurationsdateien,
Datei- und Verzeichnis Eigenschaften (properties), wie
Dateien in der Arbeitskopie ignoriert werden können
wie externe Verzeichnisbäume in die Arbeitskopie eingebracht werden
und zu guter letzt, wie Vendor Branches gehandhabt werden.
Explores the Subversion client configuration files,
file and directory properties, how to
ignore files in your working copy,
how to include external trees in your working copy, and
lastly, how to handle vendor branches.
Kapitel 8 Chapter 8, Entwickler Informationen Developer Information
Beschreibt die Internas von Subversions, das Subversion Dateisystem,
die Arbeitskopie, Administrativen Dateien aus der Sicht des Programmieres.
Demonstriert wie öffentliche API's dazu verwendet werden können
ein Programm zu schreiben, dass Subversion nutzt, und sehr wichtig
wie bei der Entwicklung von Subversion mitgearbeitet werden kann.
Describes the internals of Subversion, the
Subversion filesystem, and the working copy
administrative areas from a programmer's point of view.
Demonstrates how to use the public APIs to write a
program that uses Subversion, and most importantly, how
to contribute to the development of Subversion.
Kapitel 9 Chapter 9, Referenz zu Subversion Subversion Complete
Reference
Erläutert ausführlich jedes Sub-Komnando von
svn, svnadmin
und svnlook mit vielen Beispielen für die Ganze Familie...???
Explains in great detail every subcommand of
svn, svnadmin, and
svnlook with plenty of examples for
the whole family!
Anhang A Appendix A, Subversion für CVS Benutzer Subversion for CVS
Users
Deckt die Ähnlichkeiten und
Unterschiede zwischen Subversion und CVS ab,
mit einer Menge von Hinweisen wie die über Jahre
angeeigneten schlechten Angewohnheiten abgelegt werden können.
Inklusive der Beschreibungen der Revision Nummern von Subversion,
Versionierte Verzeichnisse, offline Operationen
unterschied update und status
Branches, Tags, Metadaten, Konfliktbewältigung und autorisierung..?
...
Covers the similarities and differences between
Subversion and CVS, with numerous suggestions on how to
break all the bad habits you picked up from years of
using CVS. Included are descriptions of Subversion
revision numbers, versioned directories, offline
operations, update
vs. status, branches, tags, metadata,
conflict resolution, and authentication.
Anhang B Appendix B, Fehlersuche Troubleshooting
.... algemeiner Aufgaben und Problem in der Verwendung
und Compilierung von Subversion.
Addresses common problems and difficulties using and
building Subversion.
Anhang C Appendix C, WebDAV und Autoversionierung??? WebDAV and
Autoversioning
Beschreibt die Details von WebDAV und DeltaV und wie
ein Subversion Repository als lese/schreib DAV Share gemountet
werden kann.
Describes the details of WebDAV and DeltaV, and how
you can configure your Subversion repository to be
mounted read/write as a DAV share.
Anhang D Appendix D, Werkzeuge von Dritt Herstellern Third Party Tools
Hier werden Werkzeuge besprochen die Subversion unterstützen oder
Verwenden inklusive von alternativen Client Programmen,
Repository Browser Werkzeugen usw.
Discusses tools that support or use Subversion,
including alternative client programs, repository
browser tools, and so on.
Dieses Buch ist Frei .... This Book is Free
Das Buch fing als ein klein bischen Dokumentation an,
dass durch die Entwickler des Subversion Projektes
geschrieben wurde. verschmolzen/vereinigt ???
Als ein solches Werk hat es die gleiche Freie, Open-Source Lizenz
wie Subversion selbst.
In der Tat, das Buch wurde in der Öffentlichkeit geschrieben
als Teil des Subversion Projektes.
Das bedeutet zwei Dinge:
This book started out as bits of documentation written by
Subversion project developers, which were then coalesced into a
single work and rewritten. As such, it has always had the same
free, open-source license as Subversion itself. In fact, the
book was written in the public eye, as a part of Subversion.
This means two things:
Sie werden immer die aktuellste Version des Buches
im Subversion eigenen Source Tree finden.
You will always find the latest version of this book in
Subversion's own source tree.
Sie können das Buch verteilen und Änderungen an
diesem Buch vornehmen. Wie auch immer Sie möchten
es ist unter freier Lizenz. Selbstverständlich??
eher ihre eigen private Version diese Buches zu verteilen
würden wir es eher begrüßen, dass Sie uns Feedback
und Änderungen zukommen lassen um es in die Subversion
Entwickler Gemeinde einzubringen.
Teilnahme an der Gemeinde.
You can distribute and make changes to this book however
you wish—it's under a free license. Of course,
rather than distribute your own private version of this
book, we'd much rather you send feedback and patches to the
Subversion developer community. See to learn about joining this
community.
Sie können Kommentare zur Veröffentlichung und Fragen
an O'Reilly unter der Adresse.....
You can send publishing comments and questions to O'Reilly
here: ###insert boilerplate.
Eine relativ neue Version des Buches kann Online ...
A relatively recent online version of this book can be found
at http://svnbook.red-bean.com.
Danksagungen ...Acknowledgments
Das Buch wäre nicht möglich gewesen (noch sehr Nützlich)
wenn Subverison nicht existiert hätte.
Dafür möchte der Autor Brina Behlendorf und CollabNet danken
für die Vision und ergeiziges Projekt zu gründen.
Jim Blandy für den Ursprünglichen Subversion Namen und Design;
Wir lieben Dich Jim;
Karl Fogel dafür dass er ein so guter Freund und ein großer
Gemeinschaftsführer??, in der Reihenfolge.
Danke dafür, dass Du selbst zu überarbeitet warst um das Buch
selbst zu schreiben.
This book would not be possible (nor very useful) if
Subversion did not exist. For that, the authors would like to
thank Brian Behlendorf and CollabNet for the vision to fund such
a risky and ambitious new Open Source project; Jim Blandy for
the original Subversion name and design—we love you, Jim;
Karl Fogel for being such a good friend and a great community
leader, in that order.Oh, and thanks, Karl, for
being too overworked to write this book yourself.
Thanks to O'Reilly and our editors, Linda Mui and Tatiana
Diaz for their patience and support.
Abschliessen danken wir einer ungezählten Menge von Menschen
die zu diesem Buch mit Korrekturlesen, Vorschlägen,
und Korrekturen .....
Finally, we thank the countless people who contributed to
this book with informal reviews, suggestions, and fixes: While
this is undoubtedly not a complete list, this book would be
incomplete and incorrect without the help of: Jani Averbach,
Ryan Barrett, Francois Beausoleil, Jennifer Bevan, Matt Blais,
Zack Brown, Martin Buchholz, Brane Cibej, John R. Daily, Peter
Davis, Olivier Davy, Robert P. J. Day, Mo DeJong, Brian Denny,
Joe Drew, Nick Duffek, Ben Elliston, Justin Erenkrantz, Shlomi
Fish, Julian Foad, Chris Foote, Martin Furter, Dave Gilbert,
Eric Gillespie, Matthew Gregan, Art Haas, Greg Hudson, Alexis
Huxley, Jens B. Jorgensen, Tez Kamihira, David Kimdon, Mark
Benedetto King, Andreas J. Koenig, Nuutti Kotivuori, Matt Kraai,
Scott Lamb, Vincent Lefevre, Morten Ludvigsen, Paul Lussier,
Bruce A. Mah, Philip Martin, Feliciano Matias, Patrick Mayweg,
Gareth McCaughan, Jon Middleton, Tim Moloney, Mats Nilsson, Joe
Orton, Amy Lyn Pilato, Kevin Pilch-Bisson, Dmitriy Popkov,
Michael Price, Mark Proctor, Steffen Prohaska, Daniel Rall,
Tobias Ringstrom, Garrett Rooney, Joel Rosdahl, Christian Sauer,
Larry Shatzer, Russell Steicke, Sander Striker, Erik Sjoelund,
Johan Sundstroem, John Szakmeister, Mason Thomas, Eric
Wadsworth, Colin Watson, Alex Waugh, Chad Whitacre, Josef Wolf,
Blair Zajac, and the entire Subversion community.
From Ben Collins-Sussman
Thanks to my wife Frances, who, for many months, got to
hear, "But honey, I'm still working on the book", rather than
the usual, "But honey, I'm still doing email." I don't know
where she gets all that patience! She's my perfect
counterbalance.
Thanks to my extended family for their sincere
encouragement, despite having no actual interest in the
subject. (You know, the ones who say, "Ooh, you're writing a
book?", and then when you tell them it's a computer book, sort
of glaze over.)
Thanks to all my close friends, who make me a rich, rich man.
Don't look at me that way—you know who you are.
From Brian W. Fitzpatrick
Huge thanks to my wife Marie for being incredibly
understanding, supportive, and most of all, patient. Thank
you to my brother Eric who first introduced me to UNIX
programming way back when. Thanks to my Mom and Grandmother
for all their support, not to mention enduring a Christmas
holiday where I came home and promptly buried my head in my
laptop to work on the book.
To Mike and Ben: It was a pleasure working with you on the
book. Heck, it's a pleasure working with you at work!
To everyone in the Subversion community and the Apache
Software Foundation, thanks for having me. Not a day goes by
where I don't learn something from at least one of you.
Lastly, thanks to my Grandfather who always told me that
freedom equals responsibility.
I couldn't agree
more.
From C. Michael Pilato
Special thanks to my wife, Amy, for her love and patient
support, for putting up with late nights, and for even
reviewing entire sections of this book—you always go the
extra mile, and do so with incredible grace. Gavin, when
you're old enough to read, I hope you're as proud of your
Daddy as he is of you. Mom and Dad (and the rest of the
family), thanks for your constant support and enthusiasm.
Hats off to Shep Kendall, through whom the world of
computers was first opened to me; Ben Collins-Sussman, my
tour-guide through the open-source world; Karl Fogel—you
are my .emacs; Greg
Stein, for oozing practical programming know-how; Brian
Fitzpatrick—for sharing this writing experience with me.
To the many folks from whom I am constantly picking up new
knowledge—keep dropping it!
Finally, to the One who perfectly demonstrates creative
excellence—thank you.