"이전 작업이 완료되지 않았습니다"로 인해 Subversion이 중단 되었습니까?


229

Subversion 저장소를 업데이트하려고하면 정리를 실행해야합니다. 정리를 실행하면 파일이 없다는 메시지가 나타납니다. (오늘 아침 내 집 PC에서 커밋하지 못한 파일의 대규모 디렉토리를 삭제했지만 직장에서 동일한 파일 세트를 커밋하면 이제 내 홈 저장소가 파열됩니다.) 따라서 정리는 다음과 같이 말합니다.

정리가 blablabla를 처리하지 못했습니다. 파일을 설정할 수 없습니다. blablabla 읽기-쓰기 : 시스템이 지정된 파일을 찾을 수 없습니다.

업데이트하면 다음과 같이 표시됩니다.

명령 : 업데이트 오류 : 이전 작업이 완료되지 않았습니다. 'cleanup'이 중단 된 경우 실행 오류 : 'Cleanup'명령을 실행하십시오. 완료! :

이 문제를 어떻게 해결할 수 있습니까?


(모든 SVN 정보를 삭제하고 다시 체크 아웃하는 것 제외)
coderama

3
그 성가신 오류는 내가 svn을 싫어하는 이유입니다. 이 문제가 발생할 때마다 루트 폴더 또는 부모 폴더에서 정리가 작동하지 않기 때문에 다시 체크 아웃해야합니다. 그러나 가장 큰 문제는 그 당시 오버레이 아이콘을 표시하지 않기 때문에 체크 아웃하기 전에 백업으로 변경된 파일을 알 수 없다는 것입니다.
phuclv

@ sigurd-v의 게시물은 저와 다른 많은 사람들을 도운 질문에 대한 실제 답변입니다. stackoverflow.com/a/22717607/5613292
Mehdi Javan

답변:


102

나는 비슷한 상황에 있었다. 작업 공간의 루트에서 정리를 실행 해 보셨습니까? 때로는 문제가있는 하위 디렉토리의 정리가 작동하지 않으며 작업 공간의 루트에서 정리하는 것이 효과적이라는 것을 알고 있습니다.

어딘가에 자식 디렉토리를 삭제했기 때문에 여전히 실패하면. 루트가 아닌 것으로 가정하여 하위 디렉토리에서 1 레벨 이상을 삭제하고 업데이트 및 정리를 다시 시도하십시오.

정리 시도가 어떤 수준에서도 성공하지 못하면 불행히도 새 작업 복사본을 체크 아웃합니다.


4
아이의 디렉토리에서 청소를 위해! 그것은 나를 위해 작동합니다!
Franva

1
당신이 이것을 읽고 있다면 당신은 곤경에 처해 있습니다 :) 나는 Git과 같은 혼란에 빠지지 않았습니다 (지금까지). Svn이 알려 주면 디렉토리에서 청소 / 되돌리기 / 청소 등을 끝냈습니다.
aliopi

2
@ sigurd-v의 게시물은 저와 다른 많은 사람들을 도운 질문에 대한 실제 답변입니다. stackoverflow.com/a/22717607/5613292
Mehdi Javan

Windows FileExplorer (Turtoise 포함)에서 정리를 실행했는데 문제가있는 파일이 무엇인지 알려주는 좀 더 정교한 오류가 발생했습니다 .SVN은 그 파일, darm * .cache 파일을 잃어 버렸습니다. 그래서 다른 .cache를 가져갔습니다. 누락 된 파일을 대체하도록 이름을 바꾸고 정리를 실행하십시오.이 도둑은 오류가 없습니다.
Jhollman

331

종종 새로운 체크 아웃이나 복사가 필요하지 않습니다.

난 그냥이 (도움으로 "이전 작업이 완료되지 않았습니다"라는 오류와 관련된 유사한 문제를 해결 한 링크 )

명령 / 작업을 처리하는 동안 svn이 때때로 멈추는 것처럼 보입니다. 이러한 모든 조작은 데이터베이스 파일 wc.db의 .svn 폴더에 저장됩니다.

내 체크 아웃 디렉토리에 SQLite 를 다운로드 하고 실행하여

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

보류중인 모든 작업의 ​​목록을 얻을 수 있습니다. 이러한 작업은 오류가 "완료되지 않은"것으로 언급되는 작업입니다.

실행하여

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

이전 작업이 모두 작업 대기열에서 삭제되고 오류가 사라집니다. 새로운 체크 아웃 또는 아무것도 필요하지 않습니다


5
위의 솔루션을 시도하기 전에 항상 정리를 실행해야합니다. 이것은 새로운 작업 복사본을 체크 아웃하지 않고 붙어있는 SVN 저장소를 시작하고 실행하려는 경우 작동합니다.
Sigurd V

7
sqlite.exe를 다운로드하고 삭제를 실행하는 것이 실제로 체크 아웃하고 병합하는 것보다 빠릅니다. 훌륭한 답변
Jeffrey Knight

12
나는 또한 이것 후에 "고정 된"을 얻었지만 "svn cleanup"으로 그것을
Jeffrey Knight

1
나는 이것을 debian에서 실행하고 apt-get install sqlite3을 사용하여 설치 한 다음 .exe없이 위 명령을 실행할 수있다
Richard Merchant

3
'잠금'메시지도 받았지만 '잠금 해제'라고 표시된 상자를 확인하는 '정리'명령을 실행하여 작동했습니다.
McCoy

114

콘솔 svn cleanup을 실행 하면 같은 문제가 해결되었습니다.


20
콘솔 명령 svn cleanup은 Tortoise Explorer 플러그인을 사용하는 것보다 자세한 정보를 제공하므로 이와 같은 상황에서 매우 유용합니다.
Brandon S

7
콘솔 명령을 실행하면 실제로 문제를 해결하기에 충분한 정보가 제공됩니다. 이것은 훨씬 더 나은 대답입니다.
DDS

1
글쎄, 난 가장 최상위 폴더를 선택하고 사용 svn cleanup감사합니다
deadfish

나는 종종 부모 디렉토리를 탐색하고 정리하는 데 성공했지만 시간이 많이 걸리고 '매직'입니다. 이것이 자세한 오류, +1을 반환한다는 것을 알지 못했습니다.
Phil Cooper

를 실행할 때 svn cleanup콘솔이 상승되어 있는지 확인하십시오. 나는 이것을 처음에는하지 않았고 red-write: Access is denied오류가 발생했습니다.
Tony

26

방금 비슷한 문제가있었습니다. Process Explorer를 실행하면 SVN이 삭제하려고 시도한 폴더에 다른 프로그램 (메모장 ++)에 파일 핸들이 있음을 알 수있었습니다. Notepad ++를 닫으면 "Clean Up"을 성공적으로 실행할 수있었습니다.


그것은 질문에 언급 된 문제를 일으킬 수 있습니다. 그러나 나는 이미 일어난 경우 그것을 청산 할 수 없습니다.
Gangnus

19

이미 SVN에있는 jar를 추가 한 후이 문제에 직면했으며 동일한 이름으로 새 버전을 추가했습니다.

이클립스에서 나는 이것을 시도했다.

  1. 폴더> 팀> 새로 고침 / 정리를 마우스 오른쪽 단추로 클릭하십시오.
  2. 내 응용 프로그램을 정리, 빌드 및 새로 고칩니다.
  3. Eclipse를 다시 시작하십시오.

위의 단계를 사용하여 동기화 할 수 있습니다.


1
나를 위해 일했다. 세 번째 단계는 필수가 아닙니다 (Eclipse를 다시 시작하십시오).
jpmottin

이것도 나에게 효과가 있었다. 나는 많은 것을 시도했지만 효과가 없었다. 비주얼 스튜디오를 닫고 정리 작업을 수행했습니다. 감사합니다
AhammadaliPK

18

나는 가장 많이 투표 된 답변을 여기에서 시도했고 다른 몇 가지는 아무 소용이 없었습니다. 내 WORK_QUEUE테이블이 비어 있었고, 난 더 높은 폴더에 정리를 시도 할 수 없습니다. 어떤 일이 있었다 (이 거북이 SVN 경유) 다음;

  • 폴더를 마우스 오른쪽 버튼으로 클릭하십시오
  • TortoiseSVN-> 정리 ...로 이동하십시오.
  • 옵션 Break Locks이 선택되어 있는지 확인하고 확인을 클릭하십시오.

정리 작업이 성공적으로 완료되었으며 계속 진행할 수 있습니다. sqlite3 또는 기타 복잡한 솔루션을 다운로드 할 필요가 없습니다.


2
브레이크 락은 내가 생각한 것을하지 않습니다. 시스템에서 사용하는 로컬 잠금 만 해제합니다. 다른 사람이 설정 한 잠금은 없습니다.
Brian Carlton

1
sqlite3은 때때로 내 문제를 해결했지만 그 방법은 기억하기가 너무 어려워서 정리가 실패했습니다. 이 방법은 저를 구했습니다.
sc

9

파일이 열려있는 동안 정리를 실행하려고하면 문제가 발생했습니다. 응용 프로그램 (Visual Studio)을 닫 자마자 정리하고 실행했습니다.


1
진실. 파일이 사용 중이 아니거나 Windows의 관리자와 같은 다른 사용자로 체크 아웃되지 않았는지 확인하십시오.
froggythefrog

6

거북이 SVN을 사용합니다. 정리 실패시 정리 옵션 확인

잠금 해제 옵션을 확인하십시오 .

정리 단계

  • 탐색 폴더의 마우스 왼쪽 버튼
  • 'Tortoise SVN'-> 'Clean up ...'메뉴를 선택하십시오.
  • ' Break Locks '를 체크하고 '확인'을 누르십시오

그것은 이미 대답했지만 때로는 사진이 도움이됩니다.

여기에 이미지 설명을 입력하십시오


4

나는 같은 문제를 겪었고, 내 경우에는 svn 거북이를 내 응용 프로그램과 함께 사용하고있었습니다. 루트 모드에서 cmd 쉘을 사용하여 svn cleanup을 적용한 다음 svn update ...를 적용했습니다. 그런 다음 응용 프로그램 모드로 돌아와 완벽하게 작동합니다!


2

.svn 폴더를 다른 위치로 제거하고 동일한 루트 폴더에 다시 배치하려고했습니다. SVN을 업데이트하려고하면 업데이트되었습니다. 정확히 어떻게 작동했는지 모르겠습니다.


2

나는 같은 문제가 있었고 어떻게 든 c : \ 레벨에 숨겨진 .svn 파일이 있다는 것을 알았습니다. 이 숨겨진 폴더 (.svn)를 삭제하면 모든 것이 정상적으로 작동합니다. 루트 드라이브에 실수로 작업 디렉토리를 작성 했어야합니다.


2

내 경우에는 문제를 일으킨 꿀꺽 꿀꺽 시계가 작동했습니다. 그것을 중지 한 후 정리 명령을 실행할 수 있습니다.


이것은 원치 않는 JVM을 죽이고 진행하는 데 도움이되었습니다.
접시

2

안녕하세요 Visual Studio를 닫고 CleanUp을 다시 시도한 후 제 경우에는 좋은 시간이 있습니다.


2

나는 또한 내가 시도한 것과 같은 문제를 고수했다.

1. svn ie TSVNCache.exe 및 TortoiseProc와 관련된 프로세스를 종료하십시오. 명령 프롬프트 "svn cleanup"을 사용한 3.cleanup

마지막으로 데스크톱을 다시 시작하면 나에게 도움이되었습니다. 그래서 시스템을 다시 시작하면 나에게 도움이되었습니다.


1

기본 폴더에서 svn을 삭제하고 다른 폴더에서 실행 가능한 다른 사본으로 바꾼 다음 업데이트하십시오. svn 폴더는 일반적으로 숨겨진 폴더입니다. 따라서 위의 단계를 수행하기 전에 폴더 숨기기를 해제하십시오.


1

나를 위해 일한 해결 방법 :

  1. 디렉토리의 내용을 잘라 다른 폴더에 복사하십시오.
  2. 빈 폴더의 명령 줄에서 정리를 실행하십시오.
  3. 파일을 원래 폴더로 다시 복사하십시오.

완료했지만 왜 이런 일이 발생했는지 설명 할 수 없습니다. 파일을 제거하지 않으면 정리 명령에서 해당 파일을 읽거나 쓸 수 없다고 말합니다.


1

나는 똑같은 문제가 있었고 나를 위해 일한 것 :

  1. 폴더와 파일을 다른 위치로 복사하고 폴더로 말합니다 (최근에 파일을 변경했는데 약정이 실패하여 문제가 해결되었습니다)
  2. 새로운 작업 사본을 확인하십시오
  3. 변경된 파일을 폴더에서 작업 사본으로 복사하고 기존 파일을 대체하십시오. 커밋 / 업데이트가 작동합니다

1

" '/Users/Code/UnitTest.cpp'파일의 perms를 변경할 수 없습니다 : 해당 파일이나 디렉토리가 없습니다"와 같은 오류가 발생했습니다. 서브 버전은 더 이상 존재하지 않는 파일에 대해 혼동됩니다. "echo ABCD >> /Users/Code/UnitTest.cpp"와 같은 작업을 수행하여 파일의 복사본을 만든 다음 정리했습니다. 효과가있었습니다.


1

필자의 경우 IDE 내에서 커밋하려고 할 때 오류가 발생했습니다. 탐색기에서 TortoiseSVN으로 동일한 디렉토리 커밋을 실행하면 작업이 성공했습니다.


1

외부 장치를 사용할 때 이런 일이 발생했으며 그 중 하나가 손상되었습니다. 해당 폴더로 이동하여 정리를 수행해야했습니다. 그런 다음 전체 작업 복사본을 정리했습니다.

예 : external을 사용하여 ^/widgets/foo common/foo-widget먼저 폴더 정리를 수행하십시오 common/foo-widget.


1

SVN에 커밋하려고 할 때 오늘이 오류를 해결했습니다. 이 오류는 진짜이므로 TortoiseSVN이 커밋하려고 시도한 파일에 액세스 할 수 없습니다. 이 파일은 Windows에서 "관리자 권한으로"프로그램을 실행하는 동안 저장되었습니다. 이것은 파일에 관리자 액세스 권한이 있지만 내 계정 (대화식 사용자로 실행중인 TorSiseSVN)에서는 액세스 할 수 없음을 의미합니다. Windows 계정으로 지정된 파일의 소유권을 확보 한 후 정리를 진행할 수있었습니다.


0

처음에 TortoiseSVN으로 체크인하려고하는 동안이 문제가 발생했습니다. 처음에 TortoiseSVN 정리 및 콘솔 svn 정리 모두 원래 포스터와 유사한 메시지로 실패했습니다.

그러나 우연히 발견 된 내 솔루션은 몇 분 정도 기다려야했습니다. 체크인 당시 TSVNCache가 해당 파일 중 일부를 보류하고 있다고 생각합니다.


0

아래 단계를 따르십시오.

1) 다음을 통해 성공적으로 정리할 수없는 디렉토리로 이동하십시오. svn . (루트 폴더 또는 하위 폴더) .

2) 선택 .svn 디렉토리에서 폴더를 하고 해당 폴더를 잘라서 별도의 드라이브 또는 별도의 위치 (svn 디렉토리 외부)에 붙여 넣습니다.

3) 이제 디렉토리로 돌아가서 마우스 오른쪽 버튼을 클릭하고 선택하십시오. TortoiseSVN -->Repo-browser

4) Checkout 폴더 (새로 체크 아웃하지 않음)

5) 모든 항목의 버전이 다시 지정되고 svn의 내부 문제가 복구되고 문제가 해결됩니다.


전체 체크 아웃 만 수행하십시오. 어떤 도움?
candidJ

0

필자의 경우 백그라운드 Java Virtual Machine 인스턴스가 실행 중이 어서 정리가 완료되었습니다.


0

동료 개발자로부터 .svn 폴더를 가져 와서 .svn 폴더를 이것으로 바꿨습니다. 그것은 나를 위해 일했다. 다른 결과가 무엇인지 모릅니다!


0

이 링크를 사용하여 https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-cleanup.html

튜토리얼에서 상위 6 개 옵션을 확인했습니다. 필사적으로 나는 그 확인란을 사용하여 그것을 시도했고 놀랍게도 효과가있었습니다. 각각의 기능을주의 깊게 읽으십시오. 각각에 대한 설명을 살펴보면 그것들이 나에게 포함되는 것이 안전 해 보였으므로 확인 된 항목 중 하나가 나를 방해하는 문제를 해결하는 것처럼 보였습니다.


0

이것은 SVN 스위치 / 정리를 시도 할 때 파일이 여전히 열려있을 때 발생할 수 있습니다.

새 파일을 만든 지점이 있는데 다른 응용 프로그램에서 열었습니다. 다른 분기로 전환해도 파일이 제거되지 않아 전환에 실패했습니다. 이것은 또한svn cleanup 오류가 발생했지만 Tortoise SVN UI에 이유로 표시되지 않습니다.

svn cleanup루트 폴더의 콘솔 창에서 실행 하면 오류가 명확하게 표시됩니다.file\location\file.ext: The process cannot access the file because it is being used by another process

열려있는 파일 핸들 / 창을 닫고 콘솔 svn cleanup을 실행 하면 정리가 올바르게 작동합니다.

짧은 이야기- svn cleanup콘솔에서 실행 하면 더 자세한 오류를 볼 수 있습니다.


0

Sigurd V의 답변에 더하여 (먼저 시도해야 함) 일부 더 큰 코드베이스에는 '.svn'폴더가 여러 개 있으며 반드시 루트 작업에서 잠금 작업이있는 폴더는 아닙니다.

이 경우 각각을 확인해야합니다. SQLite와 Powershell을 이미 가지고 있다면 문제가되는 디렉토리를 빨리 찾을 수 있습니다.

잠긴 폴더를 찾으려면 다음을 실행하십시오 (교체 path\to\sqlite.exe).

Get-ChildItem -Path . -Filter '.svn' -Recurse -Hidden | foreach { $toFind = $_.FullName + "\wc.db" ; gci $toFind | foreach { echo $_.FullName ; path\to\sqlite.exe $_.FullName "select * from work_queue" } }.

여기에는 .svn 디렉토리 목록과 각각 아래에 현재 작업 목록이 표시됩니다.

완료되지 않은 작업이있는 경우 각 작업마다 (대체 path\to\sqlite.exepath\to\.svn\wc.db) :

path\to\sqlite.exe path\to\.svn\wc.db "delete from work_queue"


0

디렉토리를 svn삭제 / 생성하여이 문제를 포함하여에 대한 몇 가지 문제를 확인했습니다 .svn/tmp. 그런 다음 실행svn cleanup


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.