How to rename a file using svn?

后端 未结 5 2095
-上瘾入骨i
-上瘾入骨i 2020-12-12 20:02

When I try svn mv old_file_name new_file_name, I get

 svn: Path \'new_file_name\' is not a directory

What\'s the correct way?

相关标签:
5条回答
  • 2020-12-12 20:37

    Using TortoiseSVN worked easily on Windows for me.

    http://tortoisesvn.net/

    Right click file -> TortoiseSVN menu -> Repo-browser -> right click file in repository -> rename -> press Enter -> click Ok

    Using SVN 1.8.8 TortoiseSVN version 1.8.5

    0 讨论(0)
  • 2020-12-12 20:39

    The behaviour differs depending on whether the target file name already exists or not. It's usually a safety mechanism, and there are at least 3 different cases:

    Target file does not exist:

    In this case svn mv should work as follows:

    $ 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...
    

    Target file already exists in repository:

    In this case, the target file needs to be removed explicitly, before the source file can be renamed. This can be done in the same transaction as follows:

    $ 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...
    

    In the output of svn stat, the R indicates that the file has been replaced, and that the file has a history.

    Target file already exists locally (unversioned):

    In this case, the content of the local file would be lost. If that's okay, then the file can be removed locally before renaming the existing file.

    $ 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...
    
    0 讨论(0)
  • 2020-12-12 20:44

    It can be if you created new directory at the disk BEFORE create/commit it in the SVN. All that you need is just create it in SVN and do move after:

    $ svn mv etc/nagios/hosts/us0101/cs/us0101ccs001.cfg etc/nagios/hosts/us0101/ccs/
    svn: E155010: Path '/home/dyr/svn/nagioscore/etc/nagios/hosts/us0101/ccs' is not a directory
    
    $ svn status
    ?       etc/nagios/hosts/us0101/ccs
    
    $ rm -rvf etc/nagios/hosts/us0101/ccs
    removed directory 'etc/nagios/hosts/us0101/ccs'
    
    $ svn mkdir etc/nagios/hosts/us0101/ccs
    A         etc/nagios/hosts/us0101/ccs
    
    $ svn move etc/nagios/hosts/us0101/cs/us0101ccs001.cfg etc/nagios/hosts/us0101/ccs/us0101accs001.cfg
    A         etc/nagios/hosts/us0101/ccs/us0101accs001.cfg
    D         etc/nagios/hosts/us0101/cs/us0101ccs001.cfg
    
    $ svn status
    A       etc/nagios/hosts/us0101/ccs
    A  +    etc/nagios/hosts/us0101/ccs/us0101accs001.cfg
            > moved from etc/nagios/hosts/us0101/cs/us0101ccs001.cfg
    D       etc/nagios/hosts/us0101/cs/us0101ccs001.cfg
            > moved to etc/nagios/hosts/us0101/ccs/us0101accs001.cfg
    
    0 讨论(0)
  • 2020-12-12 20:47

    This message will appear if you are using a case-insensitive file system (e.g. on a Mac) and you're trying to capitalize the name (or another change of case). In which case you need to rename to a third, dummy, name:

    svn mv file-name file-name_
    svn mv file-name_ FILE_Name
    svn commit
    
    0 讨论(0)
  • 2020-12-12 21:01

    You can do it by following 3 steps:

     - svn rm old_file_name
     - svn add new_file_name
     - svn commit
    
    0 讨论(0)
提交回复
热议问题