Поведение различается в зависимости от того, существует ли уже имя целевого файла или нет. Обычно это предохранительный механизм, и существует как минимум 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://...к файлу.