2009-12-11 3 views
12

"svn switch"의 동작에 대한 설명이 필요합니다. SVN 1.6.5 버전을 사용하고 있습니다.'svn switch'는 로컬로 추가 된 파일을 삭제합니까?

설명서를 읽는 것으로부터, 동작을 이해하면 로컬 변경 사항이 유지된다는 것입니다. 따라서 로컬에 추가 된 파일이 svn switch 이후 작업 디렉토리에 계속 존재할 것으로 예상됩니다.

그러나 제 동료와 저는 스위치로 새 파일이 삭제되는 몇 가지 사례를 보았습니다. 불행히도, 우리는 이것을 재현하는 방법을 알 수 없습니다.

svn switch이 로컬로 추가 된 파일을 삭제하는 환경 (기능 또는 알려진 버그)이 있습니까?

답변

11

커밋되지 않은 변경 사항이있을 때 전환하는 것은 좋지 않은 생각입니다. 먼저 svn cp . <branch URL>을 사용하여 로컬 변경 사항을 분기에 적용한 다음 전환하십시오. 매우 다른 상황에 빠질 수있는 까다로운 상황이있을 수 있습니다.

전환하려는 버전에서 로컬로 추가 한 파일이 이미 존재하며 완전히 다른 경우를 상상해보십시오. 또는 전환하려는 버전의 파일과 적절히 병합 할 수없는 파일의 전체 디렉토리를 추가하면 어떻게 될까요? 그 큰 갈등을 정말로 원하니?

svn status으로 표시된 "S"상태입니다. 소스 트리의 다른 부분에는 버전이 다릅니다. SVN이 스위치 중 로컬 변경 사항과 혼동되면 정확하게 발생합니다. 그것은 스위치의 한가운데서 부러지기 시작합니다. 그리고 나서 목에 통증이 있습니다. 여러 번 나에게 일어났다. 그래서 나는 항상 svn sw을 실행하기 전에 내 작업 복사본에 로컬 수정이 없음을 확인합니다.

+0

감사합니다. Ivan. "svn cp를 사용하여 지사에 로컬 변경 사항을 적용하십시오"라고 말하면 아마도 임시 개발자 전용 지사를 사용해야합니까? 즉, 나의 ​​변화가 아직 완전하지 않기 때문에 내가 궁극적으로 전환하고 싶은 것은 아니다. –

+0

예. 그것은 당신의 개인적인 "일을 진행하는"일종의 일종의 일이 될 것입니다. –

+0

전환하려는 이유가 작업을 체크인하기 때문에 저장소에서 프로젝트로의 경로가 변경된 경우 (관리자가 이동했기 때문에) 실제로 작동하지 않습니다. – badbod99

6

로컬로 추가 된 파일이나 버전없는 파일을 삭제해서는 안됩니다. 가장자리의 경우는 스위치로 디렉토리를 이동하거나 제거하는 경우이지만이 경우 트리가 충돌해야합니다.

나무 충돌이있을 수 있다고 생각하면 현재 변경 사항 패치를 저장하는 것입니다. 그렇다면 내 작업 사본을 지우고 필요한 경우 작업을 다시하지 않고 다시 시작할 수 있다는 것을 알고 있습니다.

svn diff > ../somewhere/safe/save.diff 
# Break stuff 
patch -p0 < ../somewhere/safe/save.diff 
+0

그 생각을하지 않았다 :) – Pondidum

+0

감사합니다 앤드류. 나는 과거에 그것을 시도했지만 svn diff의 한계는 새로운 파일 - 수정 된 파일 만 표시하지 않는다는 것입니다. –

+3

파일을'svn add'하면 파일을 체크인하기 전에 diff에 나타납니다. –

0

svn switch의 동작은 svn update 매우 유사하다 : 스위치의 대상이 일부 파일이 작업 복사본에 대한 실종되는 경로 인 경우, 해당 파일이 작업 복사본에서 삭제됩니다.

이반 (Ivan)과 마찬가지로 변경 사항을 적용한 다음 전환해야합니다.