svn을 사용하여 파일 이름을 바꾸는 방법은 무엇입니까?


84

내가 시도 svn mv old_file_name new_file_name하면

 svn: Path 'new_file_name' is not a directory

올바른 방법은 무엇입니까? (죄송합니다, 이것은 너무 사소한 것처럼 보이지만 붙어 있습니다).

추신. svn 버전 1.6.11 사용

편집new_file_name 현재 버전 관리중인 파일의 이름을 참조하는 경우에만이 오류가 발생하는 것 같습니다 . 이 경우에는 물론 간단하게

 mv old_file_name new_file_name
 svn delete old_file_name

어쩌면 당신은 전체 저장소 경로를 필요로 file://...하거나 svn://...또는 http://...파일에.
John Alexiou 2013 년

답변:


113

동작은 대상 파일 이름이 이미 존재하는지 여부에 따라 다릅니다. 일반적으로 안전 메커니즘이며 최소한 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...

new_file이 버전 제어를받지 않는다고 불평했기 때문에 --force를 svn rm new_file_name에 추가해야했습니다.
Matthew Lock

.. 그리고 new_file_name이라는 빈 파일을 만들어야했습니다.
Matthew Lock

4
on 1.8.3 rm은 실제 파일을 제거하고 "svn mv ..."를 실행하는 것만으로도 충분하며 A D를 실행합니다.
Sonic Soul

2
SVN이 얼마나 오래되었고 그것을 사용하여 파일의 이름을 바꾸는 것이 얼마나 어색한 지 재밌습니다.
Ghasan

1
@Ghasan : 질문 제목이 오해의 소지가있을 수 있습니다. 그것은 관하여 삭제 한 파일 및 이름 변경 같은 시간에 다른 파일을. 이 사용 사례는 일반적이지 않고 대부분의 VCS에서 약간 까다 롭습니다. 특히 정보가 기록에 표시되어야하는 경우 더욱 그렇습니다.
nosid

16

TortoiseSVN을 사용하면 Windows에서 쉽게 작동했습니다.

http://tortoisesvn.net/

파일-> TortoiseSVN 메뉴-> Repo-browser-> 저장소의 파일을 마우스 오른쪽 버튼으로 클릭-> 이름 바꾸기-> Enter 누르기-> 확인 누르기

SVN 1.8.8 TortoiseSVN 버전 1.8.5 사용


OP가 Windows에 대해 묻는 것은 아니지만 upvotes는 확장 할 가치가 있습니다. 완전한 데스크톱 통합은 Explorer의 컨텍스트 메뉴에서 간단히 수행 할 수 있음을 의미합니다.
Barton

그러나 이제는 분명히 Linux 질문에 대한 Windows 답변을 게시함으로써이 질문이 여러 번 반대 투표를 받았습니다. (drats는 시간이 편집에 나를 위해 내 원래의 의견을 뛰쳐)
바튼

당시 Windows에서 Cygwin을 사용하고 있었기 때문에 크로스 오버가있었습니다.
storm_m2138

Windows에서 TortoiseSVN을 사용하지 않고는 작동하지 못했습니다. 그래서이 답변에 감사드립니다. 내가 당신을 찬성했습니다. 다른 것을 사용하면 업데이트 할 때마다 되돌릴 수 있습니다. 제 경우 변경 사항은 파일 이름의 대문자였습니다. 필자의 경우 문제는 Windows가 대소 문자를 구분하지 않는다는 사실에서 비롯된 것 같습니다.
Jon

1
이것은 worls하지만 파일의 기록을 잃게됩니다.
FokTheRock

6

이 메시지는 대소 문자를 구분하지 않는 파일 시스템 (예 : Mac)을 사용하고 이름을 대문자로 바꾸려는 경우 (또는 다른 대소 문자 변경) 나타납니다. 이 경우 세 번째, 더미 이름으로 이름을 바꿔야합니다.

svn mv file-name file-name_
svn mv file-name_ FILE_Name
svn commit

0

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

-4

다음 3 단계를 따르십시오.

 - svn rm old_file_name
 - svn add new_file_name
 - svn commit

4
이 파일의 역사를 잃게하기 때문에이 방법은 좋지 않다
user2913094
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.