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.
Sie können neue Dateien auf zweierlei Weisen in das Subversion-Projektarchiv bekommen: svn import und svn add. Wir werden svn import jetzt und svn add später in diesem Kapitel besprechen, wenn wir einen typischen Tag mit Subversion durchnehmen.
Mit dem svn import-Befehl kann ein unversionierter Verzeichnisbaum schnell in ein Projektarchiv kopiert werden, wobei benötigte Zwischenverzeichnisse nach Bedarf angelegt werden. svn import erfordert keine Arbeitskopie und pflegt Ihre Dateien sofort in das Projektarchiv ein. Typischerweise verwenden Sie diesen Befehl, wenn bereits ein Verzeichnisbaum besteht, den Sie aber in einem Subversion-Projektarchiv pflegen möchten. Zum Beispiel:
$ svn import /path/to/mytree \ http://svn.example.com/svn/repo/some/project \ Hinzufügen mytree/foo.c Hinzufügen mytree/bar.c Hinzufügen mytree/subdir Hinzufügen mytree/subdir/quux.h Revision 1 übertragen.
Im vorstehenden Beispiel wurde der Inhalt des
Verzeichnisses mytree
in das
Verzeichnis some/project
des
Projektarchivs abgelegt. Beachten Sie, dass Sie dieses neue
Verzeichnis nicht erst anlegen mussten – svn
import erledigt das für Sie. Unmittelbar nach der
Übergabe können Sie Ihre Daten im Projektarchiv sehen:
$ svn list http://svn.example.com/svn/repo/some/project bar.c foo.c subdir/ $
Beachten Sie, dass nach dem Import das ursprüngliche Verzeichnis nicht in eine Arbeitskopie umgewandelt wird. Um auf diesen Daten auf eine versionierte Art und Weise arbeiten zu können, müssen Sie noch eine Arbeitskopie aus diesem Baum erzeugen.
Subversion bietet äußerste Flexibilität, was die Anordnung Ihrer Daten betrifft. Da es einfach Verzeichnisse und Dateien versioniert und keinem dieser Objekte eine bestimmte Bedeutung zuschreibt, können Sie die Daten in Ihrem Projektarchiv auf beliebige Weise anordnen. Leider bedeutet diese Flexibilität auch, dass Sie sich „ohne Karte leicht verirren“ können, wenn Sie versuchen, sich in verschiedenen Subversion-Projektarchiven zurechtzufinden, die eine komplett unterschiedliche und unvorhersehbare Anordnung der in ihnen vorhandenen Daten haben.
Um dieser Verwirrung entgegenzuwirken, empfehlen wir
Ihnen, dass Sie einer Konvention zur Gestaltung des
Projektarchivs (bereits vor langer Zeit eingeführt, während der
Entstehung der Subversion-Projektes) folgen, in der eine
handvoll strategisch benannter Verzeichnisse des
Subversion-Projektarchivs eine nützliche Aussage über die sich
darin befindlichen Daten machen. Die meisten Projekte besitzen
eine erkennbare „Hauptlinie“ oder
Trunk der Entwicklung, einige
„Zweige“ (engl. branches),
die abweichende Kopien von Entwicklungslinien darstellen und
einige Tags, die benannte stabile
Momentaufnahmen einer bestimmten Entwicklungslinie sind. Also
empfehlen wir zunächst, dass jedes Projekt eine erkennbare
Projektwurzel im Projektarchiv hat, ein
Verzeichnis unter dem sich die gesamte versionierte
Information des Projektes befindet, und zwar nur dieses
Projektes. Zweitens schlagen wir vor, dass jede Projektwurzel
ein Unterverzeichnis trunk
für die
Hauptentwicklungslinie hat, ein Unterverzeichnis
branches
, in dem bestimmte Zweige (oder
Sammlungen von Zweigen) erstellt werden und ein
Unterverzeichnis tags
, in dem bestimmte
Tags (oder Sammlungen von Tags) angelegt werden.
Selbstverständlich kann die Wurzel des Projektarchivs auch als
Projektwurzel dienen, falls das Projektarchiv nur ein einziges
Projekt beheimatet.
Hier sind ein paar Beispiele:
$ svn list file:///var/svn/single-project-repo trunk/ branches/ tags/ $ svn list file:///var/svn/multi-project-repo project-A/ project-B/ $ svn list file:///var/svn/multi-project-repo/project-A trunk/ branches/ tags/ $
Wir werden in Kapitel 4, Verzweigen und Zusammenführen viel mehr über Tags und Zweige reden. Details und Ratschläge zum Einrichten von Projektarchiven bei mehreren Projekten finden Sie in „Aufbau des Projektarchivs“. Schließlich erörtern wir Projektwurzeln näher in „Planung der Organisation Ihres Projektarchivs“.
Subversion gibt sich alle Mühe, nicht die Art der Daten einzuschränken, die Sie unter Versionskontrolle setzen können. Der Inhalt von Dateien und Werte von Eigenschaften werden als binäre Daten gespeichert und übermittelt, und „Datei-Inhalts-Typ“ sagt Ihnen, wie Sie Subversion darauf hinweisen, dass „Text“-Operationen für eine bestimmte Datei keinen Sinn ergeben. Trotzdem gibt es einige wenige Stellen, an denen Subversion Einschränkungen für gespeicherte Informationen vorsieht.
Subversion behandelt intern bestimmte Dateneinheiten – z.B. Namen von Eigenschaften, Pfadnamen und Protokollmitteilungen – als UTF-8-kodiertes Unicode. Das heißt aber nicht, dass all Ihre Interaktionen mit Subversion in UTF-8 erfolgen müssen. Im Allgemeinen werden Subversion-Clients die Umwandlungen zwischen UTF-8 und dem auf Ihrem Computer verwendeten Kodiersystem großzügig und transparent vornehmen, sofern eine solche Umwandlung sinnvollerweise durchgeführt werden kann (was bei den meisten gebräuchlichsten Kodierungen heutzutage der Fall ist).
Darüber hinaus werden Pfadnamen sowohl bei
WebDAV-Übertragungen als auch in einigen der Steuerdateien von
Subversion als XML-Attributwerte verwendet. Das bedeutet, dass
Pfadnamen nur aus zulässigen XML (1.0) Zeichen bestehen
dürfen. Subversion verbietet ebenfalls
TAB
-, CR
- und
LF
-Zeichen in Pfadnamen, um zu verhindern,
das Pfade in Vergleichen oder bei Befehlsausgaben, wie
svn log oder svn status
zerrissen werden.
Obwohl es sich anhört, als müsse man sich eine Menge merken, sind diese Einschränkungen selten ein Problem. Solange Ihre Locale-Einstellungen kompatibel zu UTF-8 sind und Sie keine Kontrollzeichen in den Pfadnamen verwenden, sollten Sie keine Probleme habe, mit Subversion zu kommunizieren. Der Kommandozeilen-Client bietet Ihnen noch ein wenig Extrahilfe – um „korrekte“ Versionen für den internen Gebrauch zu erzeugen, maskiert er bei Bedarf automatisch illegale Zeichen in URL-Pfaden, die Sie eingeben.