Manuals

Externe Objekte

Manchmal ist es nützlich, eine Arbeitskopie zu haben, die aus mehreren Projekten besteht. Zum Beispiel kann es vorkommen, dass Sie Unterordner haben wollen, die von verschiedenen anderen Stellen des Projektarchivs kommen oder vielleicht sogar aus verschiedenen Projektarchiven. Wenn Sie wollen, dass jeder Benutzer die gleiche Struktur der Arbeitskopie hat, können Sie mit Hilfe der Eigenschaft svn:externals die gewünschten Ressourcen an den benötigten Stellen in der Arbeitskopie einbinden.

Externe Ordner

Nehmen wir an, Sie erstellen eine Arbeitskopie von /projekt1 in D:\dev\projekt1. Markieren Sie den Ordner D:\dev\projekt1, machen Sie einen Rechtsklick und wählen Sie Windows MenüEigenschaften aus dem Kontextmenü. Der Windows-Eigenschaftendialog erscheint, auf dessen Subversion-Tab können Sie Eigenschaften anschauen, verändern oder setzen. Klicken Sie auf Eigenschaften.... Im TortoiseSVN-Eigenschaftendialog machen Sie entweder einen Doppelklick auf svn:externals, wenn der Eintrag existiert oder klicken Sie auf Neu... und wählen Sie externals aus dem Menü. Dann füllen Sie den Dialog mit den benötigten Informationen aus.

Achtung

Sonderzeichen in URLs müssen korrekt ersetzt werden, damit sie funktionieren, Leerzeichen z. B. durch %20.

Wenn der lokale Pfad Leerzeichen oder andere Sonderzeichen enthalten soll, können Sie ihn in doppelte Anführungszeichen setzen oder im Unix-Stil jedem Sonderzeichen einen \ (umgekehrter Schrägstrich) voranstellen. Dies bedeutet auch, dass Sie den normalen Schrägstrich / als Pfadtrennzeichen verwenden müssen. Beachten Sie, dass dieses Verhalten mit Subversion 1.6 eingeführt wurde und mit älteren Clients nicht funktioniert.

Explizite Revisionsnummern nutzen

Sie sollten in Erwägung ziehen, in allen Externals-Definitionen explizite Revisionsnummern anzugeben. Dies bedeutet, dass Sie entscheiden können, wann welcher Stand der externen Informationen herangezogen wird. Neben dem sofort zu erkennenden Aspekt, dass Sie nicht mehr von Änderungen in externen Bibliotheken überrascht werden können, über die Sie keine Kontrolle haben, bietet die Verwendung expliziter Revisionsnummern den Vorteil, dass auch die externen Verweise entsprechend zurückdatiert werden, wenn Sie Ihre Arbeitskopie zurückdatieren. Andernfalls enthalten die externen Verweise die HEAD-Revision. Für ein Softwareprojekt kann das den Unterschied zwischen einem erfolgreichen und einem fehlgeschlagenen Erzeugen eines älteren Projektstandes ausmachen.

Der Bearbeiten-Dialog für svn:externals-Eigenschaften erlaubt Ihnen, die externen Verweise zu definieren und sie automatisch an die HEAD-Revision zu binden.

Wenn das externe Projekt im selben Projektarchiv befindet, werden alle Änderungen in diesem externen Projekt im Übertragen-Dialog aufgelistet und gemeinsam mit dem Hauptprojekt übertragen.

Wenn sich ein externes Projekt in einem anderen Projektarchiv befindet, werden Sie zwar über Änderungen im externen Projekt informiert, Sie müssen diese jedoch separat übertragen.

Wenn Sie absolute URLs in Ihren svn:externals-Verweisen verwenden und Sie Ihre Arbeitskopie umplatzieren, weil sich z. B. die URL des Projektarchivs ändert, ändern sich die Verweise und funktionieren unter Umständen nicht mehr.

Um solche Probleme zu vermeiden, unterstützen Subversion-Clients ab Version 1.5 relative externe URLs. Es stehen vier verschiedene Methoden zur Verfügung, um externe URLs festzulegen. In den folgenden Beispielen nehmen wir zwei Projektarchive an: Eines in http://example.com/svn/repos-1 und ein weiteres in http://example.com/svn/repos-2. Wir haben http://example.com/svn/repos-1/projekt/trunk in C:\Projekt ausgecheckt und die Eigenschaft svn:externals ist auf trunk gesetzt.

Relativ zum Elternverzeichnis

Diese URLs beginnen stets mit der Zeichenkette ../, zum Beispiel

../../grafik/foo  gemeinsam/foo-grafik

. Dadurch wird http://example.com/svn/repos-1/grafik/foo in C:\Projekt\gemeinsam\foo-grafik extrahiert.

Beachten Sie, dass die URL relativ zu der URL des Verzeichnisses mit der Eigenschaft svn:externals ist und nicht zu dem Verzeichnis, in dem der externe Verweis auf die Festplatte gespeichert wird.

Relativ zur Wurzel des Projektarchivs

You can also specify whet

Sie können einfach auf andere Projekte innerhalb desselben SVNParentPath (ein gemeinsames Elternverzeichnis, das mehrere Projektarchive enthält) verweisen. Zum Beispiel:

^/../repos-2/hammers/claw common/claw-hammer

Dadurch wird http://example.com/svn/repos-2/werkzeug/hammer in C:\Projekt\gemeinsam\hammer-werkzeug extrahiert.

Relativ zum Schema

URLs, die mit der Zeichenkette // beginnen, kopieren nur den Schemateil der URL. Das ist dann nützlich, wenn auf denselben Rechnernamen, abhängig vom Netzwerk mit einem anderen Schema, zugegriffen werden muss. So können zum Beispiel Clients im Intranet per http:// zugreifen, während externe Clients svn+ssh:// verwenden müssen. Zum Beispiel:

//example.com/svn/repos-1/grafik/foo  gemeinsam/foo-grafik

Dadurch wird in Abhängigkeit vom Schema, das verwendet wurde, um C:\Projekt auszuchecken, http://example.com/svn/repos-1/grafik/foo oder svn+ssh://example.com/svn/repos-1/grafik/foo extrahiert.

Relativ zum Rechnernamen des Servers

URLs, die mit der Zeichenkette / anfangen, kopieren das Schema und den Rechnernamen der URL, zum Beispiel:

/svn/repos-1/grafik/foo  gemeinsam/foo-grafik

Dadurch wird http://example.com/svn/repos-1/grafik/foo in C:\Projekt\gemeinsam\foo-grafik extrahiert. Wenn Sie jedoch Ihre Arbeitskopie von einem anderen Server in svn+ssh://spiegel.server.net/svn/repos-1/projekt1/trunk auschecken, wird der externe Verweis von svn+ssh://spiegel.server.net/svn/repos-1/grafik/foo geholt.

Sie können außerdem eine fixe und eine Arbeitsrevision für die URL angeben, falls erforderlich. Um mehr über fixe und Arbeitsrevisionen zu erfahren, lesen Sie bitte das entsprechende Kapitel im Subversion-Buch.

Wichtig

Wenn Sie den Zielordner wie im obenstehenden Beispiel als Unterordner angeben, stellen Sie bitte sicher, dass alle Ordner dazwischen ebenfalls versioniert sind. Im obenstehenden Beispiel muss also der Ordner common versioniert sein.

Der externe Verweis selber wird in den meisten Fällen korrekt funktionieren, auch wenn die dazwischenliegenden Ordner nicht versioniert sind. Es gibt jedoch einige Operationen, die sich dann nicht wie erwartet verhalten. Die überlagerten Symbole im Explorer werden ebenfalls nicht den korrekten Status anzeigen.

Wenn sie mehr Informationen brauchen, wie TortoiseSVN Eigenschaften behandelt, lesen Sie „Projekt-Einstellungen“.

Um sich über verschiedene Methoden zum Zugriff auf gemeinsame Unterprojekte zu informieren, lesen Sie „Ein gemeinsames Unterprojekt einbinden“.

Externe Dateien

Beginnend mit Subversion 1.6 können Sie einzelne externe Dateien unter Verwendung der gleichen Syntax wie für Ordner an Ihre Arbeitskopie binden. Es gibt jedoch ein paar Einschränkungen.

  • Der Pfad zu einem externen Dateiverweis muss ein direktes Kind des Ordners sein, in dem Sie die Eigenschaft svn:externals setzen.

  • Die URL für die externe Datei muss sich in demselben Projektarchiv befinden wie die URL, in die die externe Datei eingebettet wird. Verweise auf externe Dateien zwischen Projektarchiven werden nicht unterstützt.

Eine externe Datei verhält sich in den meisten Fällen wie jede andere versionierte Datei, sie kann aber nicht mit den normalen Befehlen gelöscht oder verschoben werden. Stattdessen muss die Eigenschaft svn:externals verändert werden.

Externals per Ziehen und Ablegen erstellen

Wenn Sie bereits eine Arbeitskopie mit den Dateien oder Ordnern haben, die Sie als Externals in eine andere Arbeitskopie einbinden wollen, können Sie diese einfach per Ziehen und Ablegen im Windows Explorer hinzufügen.

Ziehen Sie einfach das Objekt mit der rechten Maustaste von der einen Arbeitskopie an den Ort, an dem es als External eingebunden werden soll. Ein Kontextmenü erscheint, aus dem Sie die FunktionSVN Als External hier hinzufügen wählen. Dadurch wird die Eigenschaft svn:externals automatisch gesetzt. Alles, was Sie danach tun müssen, ist die geänderte Eigenschaft zu übertragen und Ihre Arbeitskopie zu aktualisieren.

TortoiseSVN homepage