This text is a work in progress—highly subject to change—and may not accurately describe any released version of the Apache™ Subversion® software. Bookmarking or otherwise referring others to this page is probably not such a smart idea. Please visit http://www.svnbook.com/ for stable versions of this book.

Nom

svn copy (cp) — Copier un ou plusieurs fichiers ou répertoires dans une copie de travail ou dans le dépôt.

Synopsis

svn copy SRC[@REV]... DST

Description

Copier un ou plusieurs fichiers ou répertoires dans une copie de travail ou dans le dépôt. Lors de la copie de plusieurs sources, elles seront ajoutées en tant que fils de DST, qui doit être un répertoire. SRC et DST peuvent être dans la copie de travail(WC) ou une URL :

WC → WC

Copier et prévoir pour ajout un élément (avec reprise de l'historique).

WC → URL

Propager immédiatement une copie de WC vers URL.

URL → WC

Extraire l'URL dans WC et le prévoir pour ajout.

URL → URL

Copier complètement côté serveur. Utilisé habituellement pour créer des branches ou des étiquettes.

S'il n'y pas de révision pivot (c-à-d. @REV) spécifiée, la révision BASE est utilisée par défaut pour les fichiers copiés depuis la copie de travail et la révision HEAD est utilisée par défaut pour les fichiers copiés depuis une URL.

[Note] Note

Vous ne pouvez copier que des fichiers provenant d'un même dépôt. Subversion n'est pas capable d'effectuer des copies inter-dépôts.

Options

Exemples

Copier un élément dans la copie de travail (la copie est prévue pour ajout ; rien n'est écrit dans le dépôt avant que vous n'effectuyez une propagation) :

$ svn copy machin.txt bidule.txt
A         bidule.txt
$ svn status
A  +   bidule.txt

Copier plusieurs fichiers de la copie de travail dans un sous-répertoire :

$ svn cp bat.c truc.c qux.c src
A         src/bat.c
A         src/truc.c
A         src/qux.c

Copier la révision 8 de bat.c dans la copie de travail sous un autre nom :

$ svn cp -r 8 bat.c un-vieux-bat.c
A         un-vieux-bat.c

Copier un élément de la copie de travail vers une URL dans le dépôt (ceci provoque immédiatement une propagation, c'est pourquoi vous devez fournir une entrée dans le journal de propagation) :

$ svn copy proche.txt file:///var/svn/depot/test/tres-loin.txt -m "Copie distante."
Révision 8 propagée.

Copier un élément du dépôt vers la copie de travail (ceci ne fait que prévoir la copie — rien ne se passe sur le dépôt tant que vous ne faites pas de propagation) :

$ svn copy file:///var/svn/depot/test/tres-loin -r 6 près-d-ici
A         près-d-ici
[Astuce] Astuce

C'est la méthode recommandée pour ressuciter un fichier disparu dans le dépôt !

Et enfin, copier entre deux URL :

$ svn copy file:///var/svn/depot/test/tres-loin \
           file:///var/svn/depot/test/là-bas -m "copie distante."
Révision 9 propagée.
$ svn copy file:///var/svn/depot/test/trunk \
           file:///var/svn/depot/test/tags/0.6.32-pre-officielle \
           -m "création d'une étiquette"
Révision 12 propagée.
[Astuce] Astuce

C'est la méthode la plus facile pour « étiqueter » une révision dans le dépôt — faites juste svn copy de cette révision (généralement, c'est HEAD) vers votre répertoire tags.

Et ne vous inquietez pas si vous avez oublié de créer votre étiquette — vous pouvez toujours indiquer une vieille révision et étiqueter quand bon vous semble :

$ svn copy -r 11 file:///var/svn/depot/test/trunk \
           file:///var/svn/depot/test/tags/0.6.32-pre-officielle \
           -m "Oublié de créer l'étiquette à la révision 11"
Révision 13 propagée.