如何使用svn重命名文件?

Wal*_*ter 77 svn

当我尝试时svn mv old_file_name new_file_name,我明白了

 svn: Path 'new_file_name' is not a directory
Run Code Online (Sandbox Code Playgroud)

什么是正确的方法?(对不起,这看起来很琐碎,但我被困了).

PS.使用svn版本1.6.11

编辑它似乎只有在new_file_name引用当前受版本控制的文件的名称时才会出现此错误.在这种情况下,当然,我可以简单地说

 mv old_file_name new_file_name
 svn delete old_file_name
Run Code Online (Sandbox Code Playgroud)

nos*_*sid 104

根据目标文件名是否已存在,行为会有所不同.它通常是一种安全机制,至少有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...
Run Code Online (Sandbox Code Playgroud)

目标文件已存在于存储库中:

在这种情况下,需要显式删除目标文件,然后才能重命名源文件.这可以在同一个事务中完成,如下所示:

$ 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...
Run Code Online (Sandbox Code Playgroud)

在输出中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...
Run Code Online (Sandbox Code Playgroud)

  • 在1.8.3 rm删除物理文件,只需运行"svn mv ..."就足够了,它执行A D. (4认同)
  • 有趣的是,SVN有多久以及使用它重命名文件有多么尴尬. (2认同)

sto*_*138 16

使用TortoiseSVN可以轻松地在Windows上工作.

http://tortoisesvn.net/

右键单击文件 - > TortoiseSVN菜单 - > Repo-browser - >右键单击存储库中的文件 - >重命名 - >按Enter键 - >单击确定

使用SVN 1.8.8 TortoiseSVN版本1.8.5


sup*_*erk 6

如果您使用不区分大小写的文件系统(例如在 Mac 上)并且您尝试将名称大写(或其他大小写更改),则会出现此消息。在这种情况下,您需要重命名为第三个虚拟名称:

svn mv file-name file-name_
svn mv file-name_ FILE_Name
svn commit
Run Code Online (Sandbox Code Playgroud)