작업 폴더에 많은 변경 사항이 있으며 업데이트를 시도하는 데 문제가 있습니다.
이제 ‘svn cleanup’을 발행하면 다음과 같은 결과가 나타납니다.
>svn cleanup .
svn: In directory '.'
svn: Error processing command 'modify-wcprop' in '.'
svn: 'MemPoolTests.cpp' is not under version control
MemPoolTests.cpp는 다른 개발자가 추가 한 업데이트로 업데이트 된 새로운 파일입니다. 이전에 작업 폴더에 없었습니다.
리포지토리의 새로운 복사본을 체크 아웃 하지 않고 시도하고 앞으로 나아갈 수있는 일이 있습니까?
설명 : 디렉토리를 방해하지 않고 새 사본을 가져 오는 방법에 대한 제안에 감사드립니다. 나는 그것이 옵션이라는 것을 알고 있지만, 여러 디렉토리에 중첩 된 많은 변경 사항이 있기 때문에 피하고 싶은 것입니다 (이것은 가지 였어야합니다 …)
SVN이 파일을 강제로 알려진 상태로 되 돌리는 데 어려움을 겪고있는 정리 작업을보다 적극적으로 수행하기를 바라고 있습니다.
답변
모든 것을 시작할 때 옵션이 아닙니다 …
.svn
디렉토리 에서 로그 파일을 삭제하고 (또한 문제가되는 파일을에서 삭제함 .svn/props-base
) 정리를 수행하고 업데이트를 다시 시작했습니다.
답변
SVN 1.7에서는 상황이 변경되었으며 .svn 디렉토리에서 로그 파일을 삭제하는 일반적인 솔루션은 데이터베이스 작업 복사 구현으로 이동할 수 없습니다.
내가 한 것처럼 보이는 것은 다음과 같습니다.
- 작업 사본의 .svn 디렉토리를 삭제하십시오.
- 새로운 임시 디렉토리에서 새 체크 아웃을 시작하십시오.
- 결제를 취소합니다 (모든 항목이 풀릴 때까지 기다리지 않음).
- 이 취소 된 체크 아웃에서 정리를 실행하십시오.
- 이제 깨끗한 데이터베이스를 가진 새로운 .svn 디렉토리가 있습니다 (파일은 거의 없거나 거의 없지만)
- 이 .svn을 오래된 손상된 작업 디렉토리에 복사하십시오.
- svn update를 실행하면 이전 작업 디렉토리와 함께 새로운 부분 .svn 디렉토리를 가져와야합니다.
그것은 모두 조금 혼란스럽고 현명한 프로세스입니다. 본질적으로 우리가하는 일은 손상된 .svn을 삭제 한 다음 동일한 체크 아웃 경로에 대해 새로운 .svn을 만드는 것입니다. 그런 다음이 새로운 .svn을 이전 작업 디렉토리로 옮기고 repo로 업데이트합니다.
방금 TSVN 에서이 작업을 수행했으며 정상적으로 작동하며 전체 체크 아웃 및 다운로드가 필요하지 않은 것 같습니다.
-조디
답변
보세요
위 링크에서 수정 된 사항 요약 (Anuj Varma에게 감사)
http://www.sqlite.org/download.html 에서 sqlite 명령 행 쉘 (sqlite-tools-win32)을 설치 하십시오.
sqlite3 .svn/wc.db "select * from work_queue"
SELECT에 작업 대기열의 일부로 문제가있는 폴더 / 파일이 표시되어야합니다. 해야 할 일은 작업 대기열에서이 항목을 삭제하는 것입니다.
sqlite3 .svn/wc.db "delete from work_queue"
그게 다야. 이제 정리를 다시 실행할 수 있으며 제대로 작동합니다. 또는 정리를 실행하라는 메시지가 표시되기 전에 (새 파일 추가 등) 진행중인 작업으로 바로 진행할 수 있습니다.
답변
다른 모든 것이 실패하면 :
- 새 폴더로 체크인하십시오.
- 수정 된 파일을 복사하십시오.
- 다시 체크인하십시오.
- 오래된 폴더를 삭제하고 새 폴더를 사용하기 전에 어딘가에 보관하십시오 (아무도 + 편집증이 좋습니다).
답변
답변
이 답변은 1.7 이전 버전에만 적용됩니다 (@ ŁukaszBachman 덕분에) .
Subversion은 폴더 당 정보를 .svn에 저장하므로 하위 폴더를 다루는 경우 전체 저장소를 체크 아웃 할 필요가 없습니다.
cd dir_above_borked
mv borked_dir borked_dir.bak
svn update borked_dir
이것은 당신에게 borked 폴더의 좋은 사본을 줄 것이지만, 당신은 여전히 borked_dir.bak에 변경 사항을 백업합니다. Windows / TortoiseSVN에도 동일한 원칙이 적용됩니다.
격리 된 폴더에 변경 사항이있는 경우
svn checkout -N borked_dir # Non-recursive, but deprecated
또는
svn checkout --depth=files borked_dir
# 'depth' is new territory to me, but do 'svn help checkout'
답변
$ ls -la .svn
$ rm -f .svn/lock
그때
$ svn update
그것이 도움이되기를 바랍니다.