名前

svn copy — 作業コピーやリポジトリ中の、ファイルやディレクトリをコピーします。

書式

svn copy SRC[@REV]... DST

説明

作業コピーやリポジトリ中の複数のファイルをコピーします。コピー元が複数ある場合、DST 以下に追加します。SRCDST は、作業コピー (WC) 上のパスでも、URLでもかまいません。

WC → WC

追加用に項目をコピーし、追加準備をします (履歴含む)。

WC → URL

WC のコピーを、直接 URL にコミットします。

URL → WC

URL を WC にチェックアウトし、追加準備をします。

URL → URL

完全なサーバ上でのコピーです。通常ブランチやタグに利用します。

複数のコピー元をコピーする際、DST 以下に追加されます。DST はディレクトリでなくてはなりません。

peg リビジョン (例: @REV) を指定しないと、デフォルトでは、作業コピーからコピーする場合は、BASE リビジョンを用い、URL からコピーする場合は HEAD リビジョンを用います。

注記

ファイルはひとつのリポジトリ内でのみコピーできます。 Subversion はリポジトリ間コピーをサポートしていません。

別名

cp

変更対象

コピー先が URL の場合はリポジトリ。コピー先が作業コピーのパスの場合は作業コピー。

リポジトリアクセス

はい、コピー元またはコピー先がリポジトリであるか、コピー元リビジョン番号を参照する必要がある場合には発生します。

オプション

--editor-cmd EDITOR
--encoding ENC
--file (-F) FILE
--force-log
--message (-m) TEXT
--parents
--quiet (-q)
--revision (-r) REV
--with-revprop ARG

作業コピー中の項目をコピーします (コピー準備のみ—次のコミットまでリポジトリには何も起こりません)。

$ svn copy foo.txt bar.txt
A         bar.txt
$ svn status
A  +   bar.txt

作業コピー内の、複数のファイルをサブディレクトリにコピーします。

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

bat.c のリビジョン 8 を、作業コピーに別の名前でコピーします。

$ svn cp -r 8 bat.c ya-old-bat.c
A         ya-old-bat.c

リポジトリ内の URL に、作業コピー内の項目をコピーします (同時にコミットされるので、コミットメッセージを指定する必要あります)。

$ svn copy near.txt file:///var/svn/repos/test/far-away.txt -m "Remote copy."

リビジョン 8 をコミットしました。

リポジトリの項目を作業コピーにコピーします (コピー準備のみ—次のコミットまでリポジトリには何も起こりません)。

$ svn copy file:///var/svn/repos/test/far-away -r 6 near-here
A         near-here

ティップ

これはリポジトリ中の死んだファイルを復活させるのにおすすめの方法です!

そして最後に、二つの URL の間でコピーします。

$ svn copy file:///var/svn/repos/test/far-away \
           file:///var/svn/repos/test/over-there -m "remote copy."

リビジョン 9 をコミットしました。
$ svn copy file:///var/svn/repos/test/trunk \
           file:///var/svn/repos/test/tags/0.6.32-prerelease -m "tag tree"

リビジョン 12 をコミットしました。

ティップ

リポジトリ中のリビジョンにtagをつける一番簡単な方法は……そのリビジョン (通常 HEAD) を tags ディレクトリに、単に svn copy することです。

タグの付け忘れを心配する必要はありません— いつでも古いリビジョンを指定してタグ付けできます。

$ svn copy -r 11 file:///var/svn/repos/test/trunk \
           file:///var/svn/repos/test/tags/0.6.32-prerelease \
           -m "Forgot to tag at rev 11"

リビジョン 13 をコミットしました。