ターゲットファイル名が既に存在するかどうかによって動作が異なります。これは通常、安全メカニズムであり、少なくとも3つの異なるケースがあります。
ターゲットファイルが存在しません:
この場合svn mv
、次のように機能するはずです。
$ svn mv old_file_name new_file_name
A new_file_name
D old_file_name
$ svn stat
A + new_file_name
> moved from old_file_name
D old_file_name
> moved to new_file_name
$ svn commit
Adding new_file_name
Deleting old_file_name
Committing transaction...
ターゲットファイルはすでにリポジトリに存在します:
この場合、ソースファイルの名前を変更する前に、ターゲットファイルを明示的に削除する必要があります。これは、次のように同じトランザクションで実行できます。
$ svn mv old_file_name new_file_name
svn: E155010: Path 'new_file_name' is not a directory
$ svn rm new_file_name
D new_file_name
$ svn mv old_file_name new_file_name
A new_file_name
D old_file_name
$ svn stat
R + new_file_name
> moved from old_file_name
D old_file_name
> moved to new_file_name
$ svn commit
Replacing new_file_name
Deleting old_file_name
Committing transaction...
の出力でsvn stat
は、R
ファイルが置き換えられたこと、およびファイルに履歴があることを示します。
ターゲットファイルはすでにローカルに存在します(バージョン管理されていません):
この場合、ローカルファイルの内容は失われます。それで問題がなければ、既存のファイルの名前を変更する前に、ファイルをローカルで削除できます。
$ svn mv old_file_name new_file_name
svn: E155010: Path 'new_file_name' is not a directory
$ rm new_file_name
$ svn mv old_file_name new_file_name
A new_file_name
D old_file_name
$ svn stat
A + new_file_name
> moved from old_file_name
D old_file_name
> moved to new_file_name
$ svn commit
Adding new_file_name
Deleting old_file_name
Committing transaction...
file://...
またはsvn://...
またはhttp://...
ファイルに。