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.