Dieser Text befindet sich gegenwärtig in Bearbeitung, unterliegt ständigen Änderungen und kann dadurch nicht stets akkurat irgendeine freigegebene Version der Software Apache™ Subversion® beschreiben. Das Speichern dieser Seite als Lesezeichen oder andere auf diese Seite zu verweisen, ist keine so gute Idee. Besuchen Sie http://www.svnbook.com/, um stabile Versionen dieses Buchs zu erhalten.
svn checkout (co) — Auschecken einer Arbeitskopie aus einem Projektarchiv.
svn checkout URL[@REV]... [PATH]
Checkt eine Arbeitskopie aus einem Projektarchiv aus.
Wird PATH
ausgelassen, wird der
Basisname des URL als Ziel verwendet. Werden mehrere URLs
angegeben, wird jeder in ein Unterverzeichnis von
PATH
ausgecheckt, wobei der
Name des Unterverzeichnisses dem Basisnamen des URL
entspricht.
Eine Arbeitskopie in ein Verzeichnis
mine
auschecken:
$ svn checkout file:///var/svn/repos/test mine A mine/a A mine/b A mine/c A mine/d Ausgecheckt. Revision 20. $ ls mine $
Zwei unterschiedliche Verzeichnisse in zwei getrennte Arbeitskopien auschecken:
$ svn checkout file:///var/svn/repos/test \ file:///var/svn/repos/quiz A test/a A test/b A test/c A test/d Ausgecheckt. Revision 20. A quiz/l A quiz/m Ausgecheckt. Revision 13. $ ls quiz test $
Zwei unterschiedliche Verzeichnisse in zwei getrennte
Arbeitskopien auschecken, jedoch beide in ein Verzeichnis
working-copies
:
$ svn checkout file:///var/svn/repos/test \ file:///var/svn/repos/quiz \ working-copies A working-copies/test/a A working-copies/test/b A working-copies/test/c A working-copies/test/d Ausgecheckt. Revision 20. A working-copies/quiz/l A working-copies/quiz/m Ausgecheckt. Revision 13. $ ls working-copies
Falls Sie das Auschecken unterbrechen (oder das Auschecken durch irgendetwas anderes unterbrochen wird, etwa durch Verlust der Netzverbindung o.ä.), können Sie es erneut durch Eingabe des gleichen Befehls oder durch die Aktualisierung der unvollständigen Arbeitskopie wiederholen:
$ svn checkout file:///var/svn/repos/test mine A mine/a A mine/b ^C svn: E200015: Abbruchsignal empfangen $ svn checkout file:///var/svn/repos/test mine A mine/c ^C svn: E200015: Abbruchsignal empfangen $ svn update mine Updating 'mine': A mine/d Aktualisiert zu Revision 20. $
Falls Sie eine andere als die letzte Revision
auschecken möchten, können Sie dem Befehl svn
checkout die Option --revision
(-r
) mitgeben:
$ svn checkout -r 2 file:///var/svn/repos/test mine A mine/a Ausgecheckt. Revision 2. $
Vor Version 1.7 würde sich Subversion standardmäßig
beschweren, falls Sie versuchen, ein Verzeichnis auf einem
bestehenden Verzeichnis auszuchecken, das Dateien oder
Unterverzeichnisse beinhaltet, die der Checkout selbst
angelegt hätte. Subversion behandelt diese Situation
unterschiedlich, indem es das Auschecken weiterlaufen
lässt, aber Objekte, die im Weg liegen, als Baumkonflikte
markiert. Verwenden Sie die Option
--force
, um diese Schutzmaßnahme zu
umgehen. Wenn Sie mit der Option --force
auschecken, gerät jede unversionierte Dateien im
Checkout-Zielverzeichnisbaum, die normalerweise den
Checkout verhindert hätte, unter Versionskontrolle, jedoch
ändert Subversion ihren Inhalt nicht. Wenn dieser Inhalt
sich vom Inhalt der Datei an dieser Stelle im
Projektarchiv unterscheidet (der als Teil des Checkouts
heruntergeladen wurde), erscheint die Datei nach
vollendetem Checkout als lokal geändert, wobei die
Änderungen der Überführung der versionierten,
ausgecheckten Datei in die unversionierte Datei vor dem
Checkout entsprechen.
$ mkdir project $ mkdir project/lib $ touch project/lib/file.c $ svn checkout file:///var/svn/repos/project/trunk project svn: Verzeichnis »project/lib« konnte nicht hinzugefügt werden: ein nicht versi oniertes Verzeichnis mit demselben Namen existiert bereits $ svn checkout file:///var/svn/repos/project/trunk project --force E project/lib A project/lib/subdir E project/lib/file.c A project/lib/anotherfile.c A project/include/header.h Ausgecheckt, Revision 21. $ svn status wc M project/lib/file.c $ svn diff wc Index: project/lib/file.c =================================================================== --- project/lib/file.c (revision 1) +++ project/lib/file.c (working copy) @@ -3 +0,0 @@ -/* file.c: Code for acting file-ishly. */ -#include <stdio.h> -/* Not feeling particularly creative today. */ $
Wie auch bei anderen Arbeitskopien haben Sie die üblichen Möglichkeiten zur Auswahl: die lokalen „Änderungen“ teilweise oder vollständig rückgängig machen, sie übertragen oder mit Änderungen in Ihrer Arbeitskopie fortfahren.
Besonders nützlich ist diese Funktionalität, um vor
Ort unversionierte Verzeichnisbäume zu importieren. Indem
zunächst der Baum in das Projektarchiv importiert und dann
über den unversionierten Baum mit der Option
--force
ausgecheckt wird, bewirken Sie
hiermit eine Überführung des unversionierten Baums in eine
Arbeitskopie.
$ svn mkdir -m "Create newproject project root." \ file://var/svn/repos/newproject $ svn import -m "Import initial newproject codebase." newproject \ file://var/svn/repos/newproject/trunk Hinzufügen newproject/include Hinzufügen newproject/include/newproject.h Hinzufügen newproject/lib Hinzufügen newproject/lib/helpers.c Hinzufügen newproject/lib/base.c Hinzufügen newproject/notes Hinzufügen newproject/notes/README Revision 22 übertragen. $ svn checkout file://`pwd`/repos-1.6/newproject/trunk newproject --force E newproject/include E newproject/include/newproject.h E newproject/lib E newproject/lib/helpers.c E newproject/lib/base.c E newproject/notes E newproject/notes/README Ausgecheckt. Revision 2. $ svn status newproject $