Name

svn switch — Arbeitskopie auf einen anderen URL aktualisieren.

Aufruf

svn switch URL[@PEGREV] [PATH]
switch --relocate FROM TO [PATH...]

Beschreibung

Die erste Variante dieses Unterbefehls (ohne die Option --relocate) aktualisiert Ihre Arbeitskopie so, dass sie auf einen neuen URL zeigt – normalerweise ein URL, der, allerdings nicht notwendigerweise, einen gemeinsamen Vorgänger mit Ihrer Arbeitskopie hat. Auf diese Weise schaltet Subversion eine Arbeitskopie auf einen neuen Zweig um. Wenn PEGREV angegeben wird, bezeichnet es die Revision, bei der das Ziel zuerst gesucht wird. Siehe „Zweige durchlaufen“ für eine detaillierte Betrachtung des Umschaltens.

Wird die Option --force verwendet, verursachen unversionierte Pfade, die sich beim Versuch umzuschalten im Weg befinden, nicht automatisch einen Fehler, falls durch das Umschalten versucht wird, den selben Pfad anzulegen. Wen der im Weg liegende Pfad den selben Typ (Datei oder Verzeichnis) wie der entsprechende Pfad im Projektarchiv hat, wird er versioniert, der Inhalt bleibt jedoch in der Arbeitskopie unverändert. Das bedeutet, dass die Kindelemente eines sich im Weg befindlichen Verzeichnisses ebenfalls im Weg befinden und versioniert werden können. Alle inhaltlichen Unterschiede von sich im Weg befindlichen Dateien zum Projektarchiv werden als lokale Änderung an der Arbeitskopie betrachtet. Alle Eigenschaften aus dem Projektarchiv werden auf den sich im Weg befindlichen Pfad angewendet.

Wie bei den meisten Unterbefehlen können Sie den Wirkbereich des Umschaltbefehls mit der Option --depth auf einen bestimmten Baum beschränken. Alternativ können Sie die Option --set-depth verwenden, um eine neue Wirktiefe für das Umschaltziel in der Arbeitskopie festzulegen. Momentan kann die Wirktiefe nur erhöht werden; sie können ein Verzeichnis nicht flacher machen.

Die Option --relocate veranlasst svn switch, etwas ganz anderes zu machen: es aktualisiert Ihre Arbeitskopie so, dass es auf das gleiche Verzeichnis im Projektarchiv zeigt, allerdings unter einem anderen Projektarchiv-URL (typischerweise weil ein Administrator das Projektarchiv entweder auf einen anderen Server verschoben oder den URL geändert hat).

Alternativnamen

sw

Änderungen

Arbeitskopie

Projektarchiv-Zugriff

Ja

Optionen

--accept ARG
--depth ARG
--diff3-cmd CMD
--force
--ignore-externals
--quiet (-q)
--relocate
--revision (-r) REV
--set-depth ARG

Beispiele

Falls Sie sich momentan innerhalb des Verzeichnisses vendors befinden, das nach vendors-with-fix abgezweigt wurde, und Sie Ihre Arbeitskopie nun auf diesen Zweig umschalten möchten:

$ svn switch http://svn.red-bean.com/repos/branches/vendors-with-fix .
U  myproj/foo.txt
U  myproj/bar.txt
U  myproj/baz.c
U  myproj/qux.c
Aktualisiert zu Revision 31.

Um zurückzuschalten, brauchen Sie nur den URL des Ortes im Projektarchiv anzugeben, von dem Sie ursprünglich Ihre Arbeitskopie ausgecheckt haben:

$ svn switch http://svn.red-bean.com/repos/trunk/vendors .
U  myproj/foo.txt
U  myproj/bar.txt
U  myproj/baz.c
U  myproj/qux.c
Aktualisiert zu Revision 31.
[Tipp] Tipp

Sie können auch nur einen Teil Ihrer Arbeitskopie auf einen Zweig umschalten, falls Sie nicht Ihre gesamte Arbeitskopie nehmen wollen.

Manchmal kann es vorkommen, dass ein Administrator den Ort (oder den scheinbaren Ort) Ihres Projektarchivs ändert – mit anderen Worten: der Inhalt des Projektarchivs ändert sich nicht, wohl aber der Wurzel-URL des Projektarchivs. So kann sich beispielsweise der Name des Wirtsrechners, das URL-Schema oder irgend ein Teil des URL, der auf das Projektarchiv zeigt, ändern. Statt eine neue Arbeitskopie auszuchecken, können Sie den Befehl svn switch dazu verwenden, die Metadaten im Verwaltungsbereich Ihrer Arbeitskopie überschreiben zu lassen, damit diese auf den neuen Ort des Projektarchivs verweisen. Falls Sie svn switch die Option --relocate mitgeben, nimmt Subversion Verbindung mit dem Projektarchiv auf, um die Gültigkeit der Anfrage zu bestätigen (indem es im Projektarchiv natürlich unter dem neuen URL nachfragt) und anschließend die Metadaten zu überschreiben. Durch diese Operation werden keinerlei Dateiinhalte verändert – es werden lediglich die Metadaten der Arbeitskopie verändert.

$ svn checkout file:///var/svn/repos test
A  test/a
A  test/b
…

$ mv repos newlocation
$ cd test/

$ svn update
svn: Kann keine ra_local-Verbindung zu einer URL aufbauen
svn: Projektarchiv »file:///var/svn/repos« kann nicht geöffnet werden

$ svn switch --relocate file:///var/svn/repos file:///tmp/newlocation .
$ svn update
Revision 3.
[Warnung] Warnung

Seien Sie vorsichtig, wenn Sie die Option --relocate verwenden. Falls Sie sich beim Argument vertippen, kann es dazu führen, dass Sie in der Arbeitskopie unsinnige URLs erzeugen, die Ihren Arbeitsbereich unbrauchbar machen, so dass er nur schwer wiederherzustellen ist. Es ist auch wichtig zu verstehen, wann --relocate zu verwenden ist und wann nicht. Hier ist die Faustregel:

  • Falls die Arbeitskopie ein neues Verzeichnis innerhalb des Projektarchivs repräsentieren soll, verwenden Sie nur svn switch.

  • Falls die Arbeitskopie das gleiche Verzeichnis im Projektarchiv repräsentiert, sich jedoch der Ort des Projektarchivs selbst geändert hat, verwenden Sie svn switch mit der Option --relocate.