[svn] ‘svn cleanup’이 실패하면 어떻게해야합니까?

작업 폴더에 많은 변경 사항이 있으며 업데이트를 시도하는 데 문제가 있습니다.

이제 ‘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 디렉토리에서 로그 파일을 삭제하는 일반적인 솔루션은 데이터베이스 작업 복사 구현으로 이동할 수 없습니다.

내가 한 것처럼 보이는 것은 다음과 같습니다.

  1. 작업 사본의 .svn 디렉토리를 삭제하십시오.
  2. 새로운 임시 디렉토리에서 새 체크 아웃을 시작하십시오.
  3. 결제를 취소합니다 (모든 항목이 풀릴 때까지 기다리지 않음).
  4. 이 취소 된 체크 아웃에서 정리를 실행하십시오.
  5. 이제 깨끗한 데이터베이스를 가진 새로운 .svn 디렉토리가 있습니다 (파일은 거의 없거나 거의 없지만)
  6. 이 .svn을 오래된 손상된 작업 디렉토리에 복사하십시오.
  7. svn update를 실행하면 이전 작업 디렉토리와 함께 새로운 부분 .svn 디렉토리를 가져와야합니다.

그것은 모두 조금 혼란스럽고 현명한 프로세스입니다. 본질적으로 우리가하는 일은 손상된 .svn을 삭제 한 다음 동일한 체크 아웃 경로에 대해 새로운 .svn을 만드는 것입니다. 그런 다음이 새로운 .svn을 이전 작업 디렉토리로 옮기고 repo로 업데이트합니다.

방금 TSVN 에서이 작업을 수행했으며 정상적으로 작동하며 전체 체크 아웃 및 다운로드가 필요하지 않은 것 같습니다.

-조디


답변

보세요

http://www.anujvarma.com/svn-cleanup-failedprevious-operation-has-not-finished-run-cleanup-if-it-was-interrupted/

위 링크에서 수정 된 사항 요약 (Anuj Varma에게 감사)

  1. http://www.sqlite.org/download.html 에서 sqlite 명령 행 쉘 (sqlite-tools-win32)을 설치 하십시오.

  2. sqlite3 .svn/wc.db "select * from work_queue"

SELECT에 작업 대기열의 일부로 문제가있는 폴더 / 파일이 표시되어야합니다. 해야 할 일은 작업 대기열에서이 항목을 삭제하는 것입니다.

  1. sqlite3 .svn/wc.db "delete from work_queue"

그게 다야. 이제 정리를 다시 실행할 수 있으며 제대로 작동합니다. 또는 정리를 실행하라는 메시지가 표시되기 전에 (새 파일 추가 등) 진행중인 작업으로 바로 진행할 수 있습니다.


답변

다른 모든 것이 실패하면 :

  1. 새 폴더로 체크인하십시오.
  2. 수정 된 파일을 복사하십시오.
  3. 다시 체크인하십시오.
  4. 오래된 폴더를 삭제하고 새 폴더를 사용하기 전에 어딘가에 보관하십시오 (아무도 + 편집증이 좋습니다).

답변

최신 버전 (1.9.5를 사용하고 있음)은 정리 메뉴에서 “Break locks”옵션을 추가하여이 문제를 해결합니다. 정리할 때이 확인란을 선택하십시오.

창 정리


답변

이 답변은 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

그것이 도움이되기를 바랍니다.