[svn] 파일을 삭제하지 않고 버전 관리에서 파일을 제거하는 방법은 무엇입니까?

를 실행 svn rm file하면 파일이 로컬 작업 복사본에서 제거됩니다.

내가 지금하는 일은 :

$ cp file file2
$ svn rm file
$ svn ci
$ mv file2 file

svn을 사용할 때 로컬 파일을 삭제하지 않으려면 어떻게해야 svn rm합니까?



답변

당신은 원하는 --keep-local명령 줄 옵션을 선택합니다. 파일 시스템에서 파일을 제거하지 않고 버전 제어에서 파일을 제거합니다.

$ svn rm --keep-local my_important_file

참고 :--keep-local 만이 영향을 svn rm당신의 사본의를. 변경 사항으로 인해 로컬 사본과 저장소간에 충돌이없는 경우 다른 사용자는 파일의 로컬 사본을 삭제했을 수 있습니다. 원하는 결과가 아닐 수 있습니다. 아래의 의견을 참조하십시오.


답변

SVN에서 로컬로 파일을 삭제하지 않고 파일을 제거하는 것은 일반적인 문제입니다. 대표적인 예로 Eclipse 프로젝트의 .classpath 파일이 있습니다. 이 구성 파일을 SVN에 두는 것은 프로젝트에 사용 된 모든 머신이 동일한 Eclipse 및 Java 설치를 갖는 한 놀라운 일입니다. 이 조건을 위반하면 커밋이 다른 Eclipse 프로젝트를 중단하기 시작합니다. 이것은 ist를 삭제하지 않고 SVN에서 파일을 제거해야 할 시점입니다.

svn rm --keep-local .classpath

한 기계에서 특정 시점에 완벽하게 작업합니다.

문제는 다른 컴퓨터가 해당 파일을 잃어 버리거나 (업데이트 할 때) 부활 (커밋 할 때) 될 수 있다는 것입니다. SVN의 결함은 --keep-local저장소에서 처리 하거나 다른 작업 사본으로 전파하지 않아야합니다. 따라서 커밋이나 업데이트 전에 최상의 명령을 실행해야합니다.

물론 이것은 최대 90 % 작동합니다. 삭제 및 버전 변경은 갑자기 발생합니다. 내 솔루션은 모든 기계를 가지고 있고 직접 또는 간접적으로 액세스 할 수있는 것입니다.

svn rm --keep-local .classpath
copy .classpath .classpath-nameOfTheMachine
svn add .classpath-nameOfTheMachine

이것은 “솔루션”이라고하기 어려운 것입니다. 그럼에도 불구하고 항상 이후의 사고를 신속하게 수리 할 수있었습니다.


답변

이 정확한 질문에 대한 답변은 없지만 관련 질문에 대한 답변이 있는데, 로컬로 삭제하지 않고 디렉토리의 모든 파일 (예 : 특정 파일이 아닌)을 버전 관리에서 제거하는 방법입니다. 이 솔루션은 Scientific Linux 구현에서 제공됩니다.

ls -a .svn

제어 데이터를 저장하는 svn 디렉토리를 보여 주어야합니다. 간단히:

rm -r .svn

이 디렉토리를 제거합니다. 그런 다음 다음을 입력하십시오.

svn status

더 이상 버전 제어를받지 않으므로 ‘경고 :이 디렉토리는 작업중인 사본이 아닙니다’오류가 발생합니다.

이게 도움이 되길 바란다.


답변