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


답변:


277

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

$ svn rm --keep-local my_important_file

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


4
다른 사람들이 업데이트 한 후에도 여전히 삭제되지 않습니까?
Nyerguds

1
@Nyerguds svn rm이 저장소에서 파일을 제거하기 때문에 맞습니다. 리포지토리에서 파일을 제거하려는 경우 컴퓨터에서 로컬로 파일을 유지하면 위의 플래그를 사용합니다.
Greg Hilston

6
@GregHilston 내가 말했듯이, 실제로 다중 프로그래머 프로젝트에는 도움이되지 않습니다. 어디에서나 파일을 언 버전하는 방법이 있어야합니다. 여기에서 가장 일반적인 경우는 실수로 커밋 된 로컬 설정 파일 (Java 프로젝트에서 매우 흔함)이지만 버전을 변환해도 다른 사용자의 설정 파일을 지우지 않아야합니다.
Nyerguds

5
@GregHilston "실제 다중 프로그래머 프로젝트"는 "다른 사람들의 시스템"에 내포되어있었습니다. 문제는 이것입니다. 다른 사람들이 업데이트하고 설정을 덮어 씁니다. 이것은 일반적으로 너무 문제가되지 않지만 해결하기를 충분히 성가시다. 그러나이 시점에서 설정을 이미 덮어 써서 업데이트시 svn "rm"을 받으면 실제로 시스템에서 잠재적 인 로컬 설정 파일을 제거 하지만 버전을 변경하지 않아도 로컬로 구성 할 수 있습니다. 다시 설정하십시오.
Nyerguds

4
리포지토리에서 이전 파일을 다시로드하면 해당 파일이 이전 버전에서 온 것으로 표시됩니다. 즉, 업데이트하면 해당 파일이 다시 삭제됩니다. 프로젝트의 모든 기계에 수동 개입이 필요하지 않은 명확한 방법은 없습니다.
Nyerguds

13

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

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


-3

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

ls -a .svn

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

rm -r .svn

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

svn status

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

이게 도움이 되길 바란다.


관련 질문? 파일을 제거하고 전체 작업 복사본을 제거하는 것은 완전히 다릅니다.
Melebius
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.