Как переименовать файл с помощью svn?
когда я пытаюсь svn mv old_file_name new_file_name
, Я
svn: Path 'new_file_name' is not a directory
Как правильно? (извините, это кажется таким тривиальным, но я застрял).
PS. использование svn версии 1.6.11
EDIT кажется, я получаю эту ошибку, только если new_file_name
- это имя файла, который в настоящее время находится под контролем версий. В этом случае, конечно, я могу просто
mv old_file_name new_file_name
svn delete old_file_name
5 ответов:
поведение отличается в зависимости от того, существует ли уже имя целевого файла или нет. Это обычно механизм безопасности, и есть по крайней мере 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...
использование TortoiseSVN легко работало на Windows для меня.
щелкните правой кнопкой мыши файл - > меню TortoiseSVN - > РЕПО-браузер - > щелкните правой кнопкой мыши файл в репозитории - > переименовать - > нажмите Enter - > нажмите Ok
использование SVN 1.8.8 TortoiseSVN версия 1.8.5
это сообщение появится, если вы используете файловую систему без учета регистра (например, на Mac), и вы пытаетесь прописать имя (или другое изменение регистра). В этом случае вам нужно переименовать в третье, фиктивное, имя:
svn mv file-name file-name_ svn mv file-name_ FILE_Name svn commit
это может быть, если вы создали новый каталог на диске перед созданием/фиксацией его в SVN. Все, что вам нужно, это просто создать его в SVN и двигаться после:
$ 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