Hành vi khác nhau tùy thuộc vào việc tên tệp đích đã tồn tại hay chưa. Đó thường là một cơ chế an toàn và có ít nhất 3 trường hợp khác nhau:
Tệp đích không tồn tại:
Trong trường hợp này svn mv
sẽ hoạt động như sau:
$ 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...
Tệp đích đã tồn tại trong kho:
Trong trường hợp này, tệp đích cần được xóa một cách rõ ràng, trước khi có thể đổi tên tệp nguồn. Điều này có thể được thực hiện trong cùng một giao dịch như sau:
$ 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...
Trong đầu ra của svn stat
, R
biểu thị rằng tệp đã được thay thế và tệp có lịch sử.
Tệp đích đã tồn tại cục bộ (chưa được phiên bản):
Trong trường hợp này, nội dung của tệp cục bộ sẽ bị mất. Nếu điều đó ổn, thì tệp có thể được xóa cục bộ trước khi đổi tên tệp hiện có.
$ 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://...
hoặcsvn://...
hoặchttp://...
tới tệp.