SVN에서 작업 사본 XXX가 잠겨 있고 정리하지 못했습니다.


582

내가 할 때이 오류가 발생합니다 svn update:

작업 복사본 XXXXXXXX 잠김 "정리"명령을 실행하십시오

정리를 실행하면

정리에서 다음 경로를 처리하지 못했습니다 : XXXXXXXX

이 루프에서 벗어나려면 어떻게해야합니까?


5
나도이 메시지를 받았습니다. 제공된 답변은 약간 지루한 것처럼 보였습니다 (특히 가장 투표가 많은 답변). 방금 VS를 닫고 솔루션을 다시 시작했으며 모든 것을 잘 확인할 수있었습니다.
oscilatingcretin

Firefox의 SQLLite Manager를 사용하여 WORK_QUEUE 테이블에서 항목을 삭제하는 eakkas 의견에 따라 문제가 해결되었습니다.
zeppelin

12
간단한 답변이 있습니다. "잠금 해제"옵션을 확인하면 작업 복사본이 정리됩니다.
Farhan

답변:


517

한 가지 방법은 다음과 같습니다.

  1. 편집 한 항목을 다른 위치로 복사하십시오.
  2. 문제 경로가 포함 된 폴더를 삭제하십시오.
  3. Subversion을 통해 포함 폴더를 업데이트하십시오.
  4. 필요에 따라 파일을 다시 복사하거나 변경 사항을 병합하십시오.
  5. 범하다

다른 옵션은 최상위 폴더를 삭제하고 다시 체크 아웃하는 것입니다. 희망적으로 그것은 오지 않습니다.


123
OP의 문제 (및 광산)뿐만 아니라 모든 svn 문제를 해결하는 것처럼 보이는 5 단계를 해결하기 위해이 해결 방법으로 +1하십시오. 이러한 해결 방법이 필요한 경우 Subversion을 -1로
pxl

34
이것은 기술적으로는 효과가 있지만 다운 보트가 필요한 잠금 장치를 제거하는 것과 비교할 때 나쁜 방법입니다.
Jukka Dahlbom

8
"작업 사본이 이미 잠겨 있습니다"
Evgeny

20
BradS의 조언을 고려 해보자. "나를 위해, 트릭은 문제가 발생하기 전에 항상 일했던 폴더가 아니라 작업 복사본의 맨 위에서 'svn cleanup'을 실행하는 것이 었습니다."
Marco

5
Tortoise SVN을 사용하는 사용자는 체크 아웃 디렉토리의 루트 폴더에서 정리를 실행하고 강제 잠금 해제를 수행 할 수 있습니다. 또한 버전이없는 파일을 삭제하도록 요청할 수 있습니다. 그런 다음 업데이트하십시오.
Obaid

476

나를 위해, 트릭은 svn cleanup문제가 발생하기 전에 전체 시간 동안 일했던 폴더가 아닌 작업 복사본의 맨 위에서 실행 하는 것이 었습니다.


일반적으로 작동하지만 더 이상 확실하지 않습니다. SVN 1.7로 업그레이드했기 때문인지 확실하지 않습니다.
Populus

4
서버가 계속 1.6.x 이상인 경우 비록 이것은 클라이언트가 1.7을 실행하는 나를 위해 일한
마크 Hosang에게

1.7에 대해 나를 위해 많은 평가를 받았습니다
scarpacci

1
나는 Intu의 대답에 대한 힌트를 이것과 결합했습니다 : .svn 폴더에 "lock"파일이있는 상위 폴더를 찾은 다음 거기에서 "svn cleanup"을 실행하십시오. 그것은 나를 위해 일했다.
rob74

5
이것은 척의 방법보다 훨씬 빠른 방법으로 저에게 효과적입니다. 이 작업을 먼저 수행하는 것이 좋습니다.
goamn

210

당신의 모습 .svn이라는 폴더에이 파일이있을 것이다 lock. 해당 파일을 삭제하면 업데이트 할 수 있습니다. .svn각 서브 디렉토리의 디렉토리에 더 많은 잠금 파일이있을 수 있습니다 . 또한 삭제해야합니다. 이것은 예를 들어 다음과 같이 명령 줄에서 일괄 처리로 수행 할 수 있습니다.

find . -name 'lock' -exec rm -v {} \;

.svn폴더 에서 파일을 수동으로 편집하고 있습니다 . 그들은 이유가 있습니다. 그 이유는 실수 일 수도 있지만 그렇지 않은 경우 로컬 사본을 손상시킬 수 있습니다.

출처 : http://www.svnforum.org/2017/viewtopic.php?p=6068


8
+1 나는 이것이 현재 가장 높은 투표 응답보다 훨씬 나은 접근법이라고 생각합니다.이 (일반적인!) 문제를 해결하기 위해 먼저 다른 곳에서 파일을 복사 해야하는 것을 싫어합니다. 광산은 다른 사람이 이미 SVN에 추가 한 것과 동일한 이름의 파일을 생성하는 코드 생성 도구로 인해 발생했습니다. 처음 내가 생각 "최대 svn을"하지 않는 내 나쁜 ...
alpian

44
Tortoise / SVN 1.7에서는 더 이상 작동하지 않습니다 (또는 메타 데이터가있는 중앙 집중식 DB가 있으므로 적어도 잠금 파일을 찾을 수 없었습니다).
pesche

10
다음은 현재 디렉토리에서 시작하는 모든 잠금을 재귀 적으로 삭제해야하는 빠른 한 줄짜리입니다.find . | grep ".svn/lock" | xargs rm
Jesse

1
SVN 1.7을 사용하면 @BradS의 답변이 더 효과적입니다. 이 답변은 저에게 효과적이지 않았으며 BradS도 마찬가지였습니다.
Ira Baxter

1
내 경우에는 어디에서나 찾을 수있는 잠금 파일이 없습니다.
Tim MB

106

필자의 경우 WC_LOCK 테이블에서 SQLite ".svn \ wc"파일 잠금 레코드의 레코드를 수동으로 삭제하여 문제를 해결했습니다.

SQLite 편집기로 "WC"파일을 열고 실행했습니다.

delete from WC_LOCK

WC_LOCK에서 제거 된 모든 항목을 보여주는 스크린 샷

eakkas 의 의견에 따라 WORK_QUEUE테이블 에서 모든 항목을 삭제해야 할 수도 있습니다.


1
이것은 Windows의 Subversion 1.7.5에서 효과적이었습니다. sqiteexpert.com/download.html 에서 SQLite Expert 평가판을 다운로드 했습니다 . SQL 탭에서 위의 "delete"sql 문을 실행하십시오.
M Katz

(-) 버튼이 하나의 차이가 나는 붉은 클릭 있다는 것입니다, 훨씬 더
Rohit 스리 바스타

3
무료 DI SQL Spy도 트릭을 수행 할 것입니다 : yunqa.de/delphi/doku.php/products/sqlitespy/index
Ivelin Nikolaev

12
이 너무 나를 위해 일하지만 나는 또한 WORK_QUEUE 테이블의 항목을 제거하는 데 필요한
eakkas

6
WC_LOCK에서 항목을 삭제하여 작동하지 않습니다. WORK_QUEUE 항목의 얼룩 내용을보고 문제 파일인지 확인한 작업-repo 브라우저에서 파일을 제거한 다음 work_queue 항목을 삭제했습니다. 정리를하고 사업을 다시 시작했습니다!
GregM

95

가장 쉬운 방법 :

  1. Project의 Parent directory (Folder) 로 이동하십시오 .
  2. 대가 오른쪽 클릭
  3. 눌러 TortoiseSVN을 누르면 다음 정리 ...
  4. 정리 대화 상자가 자동으로 나타납니다
  5. 선택 Clean up working copy status, Break locks, Fix time stamps, Vacuum pristine copies, Refresh shell overlays,Include externals
  6. 대인 OK

일을 성공적으로 마쳤습니다.

참조 용 스크린 샷을 확인하십시오.

첫 번째 단계:

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

두 번째 단계 : 잠금 잠금 옵션 활성화 (정리 팝업 창의 두 번째 확인란) 여기에 이미지 설명을 입력하십시오

이것이 당신에게 많은 도움이되기를 바랍니다.


10
제 경우에는 "Break lock"옵션이 충분했습니다.이 옵션만으로 시도해보십시오
Donatello

좋은 대답입니다. 나는 이것으로 '대화 실명'의 경우를 가지고 있었고 정리 옵션을 확인하지 않았습니다. 역사적으로 '루팅 및 정리 탐색'은 작동하는 데 사용되었지만 자물쇠를 깨는 것으로 충분했습니다.
Phil Cooper

1
나도 일 했어!
Daniel Silva

내가 자물쇠를 만들지 않았기 때문에 'break locks'가 그렇게 할 것이라고 생각하지 않았습니다. 그러나 분명히이 문제를 일으킨 svn 내부 잠금을 끊습니다. 감사!
basher

나를 위해 작동하지 않았다 😦
Warlike Chimpanzee

48

직장 동료는이 메시지를 지속적으로보고 있으며, SVN에서 SVN 버전 관리에서 디렉토리 삭제 하지 않고 디렉토리 삭제 한 후 버전 제어가 아닌 동일한 이름으로 새 디렉토리를 작성 했기 때문 입니다.

이것이 당신의 문제라면 ... :

디렉토리 교체 방법 / 이유에 따라 여러 가지 방법으로 문제를 해결할 수 있습니다.

어느 쪽이든, 당신은 아마 필요할 것입니다 :

A) 기존 디렉토리의 이름을 임시 이름으로 바꿉니다.

B) SVN 되돌리기는 파일 시스템에서 삭제되었지만 SVN에서는 삭제되지 않은 디렉토리를 복구합니다.

거기에서 당신은

A) 삭제 된 디렉토리에 관련 파일을 복사

B) 당신이 디렉토리에있는 내용의 큰 변화가 있었다 경우, SVN은 원래에 삭제 커밋 및 SVN 다음에 원하는 이름을 새 디렉터리 다시는 얻을에 추가 이름을 변경 할 것을 버전 관리 아래 하나.


1
두 번째 단계 B)는 새 버전으로 유지되는 원래 디렉토리의 항목에 대한 개정 내역을 깨뜨릴 수 있기 때문에 나에게 매우 나쁜 생각입니다.
Dunaril

SVN이 아닌 파일 시스템에서 버전이 지정된 디렉토리를 삭제했을 때 매우 나쁜 상황이 발생했습니다. 위의 답변은 완벽한 복구는 아니지만 복구입니다.
Teemu Leisti

34

나에게 위의 해결책 중 어느 것도 효과가 없었습니다. 자물쇠를 끊어 해결책을 찾았습니다. svn 정리를 수행 할 때 "작업 복사본 상태 정리"와 함께 "Break Locks"를 선택했습니다.

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


Tortoise SVN repo 브라우저에서 잠금을 해제하면 작동했습니다. 체크 아웃 된 폴더의 잠금을 해제해도 아무 작업도 수행되지 않았습니다.
Bhargava Mummadireddy

23

이것은 나를 위해 일했습니다.

  1. 루트 폴더로 이동
  2. 마우스 오른쪽 버튼으로 클릭하고 정리
  3. 사용 가능한 모든 옵션 확인
  4. 확인을 누릅니다

정리 후 최신 버전으로 업데이트 할 수 있습니다.


2
이것은 나에게도 효과적입니다. 정리를 진행하려면 사용 가능한 모든 옵션 (내 버전의 6 개 항목)을 확인해야합니다. [작업 복사본 상태 정리] 및 [외부 포함] 옵션을 선택하면 실패합니다.
Vincent Jia

1
이것은 프로젝트> 팀> 정리를 마우스 오른쪽 버튼으로 클릭하면 나에게 완전히 효과가있었습니다. .svn의 SQL에서 다른 행을 제거 할 필요가 없습니다. 이것만으로도 일을했습니다. 감사!
msqar

이것은 TortoiseSVN 버전 1.7.4에서도 효과적이었습니다. 제시된 기본 확인란을 사용했습니다.
slm

오늘 도움이되었지만 사용 가능한 모든 옵션을 확인할 필요는 없었습니다. 내 변경 사항을 되 돌리는 마지막 3 개는 확인하지 않았으며 어쨌든 효과가있었습니다. 참조 stackoverflow.com/a/35192644/460775
EMBarbosa

1
이것은 나를 위해 일했습니다. 난 그냥 확인 Clean up working copy status하고 Breaks locksInclude externals
Phiber

11

저에게는 실제로 거북이의 잘못이었습니다. 거북이는 방금 "정리할 수없고 정리할 수 없다"고 불평했지만 명령 줄 (svn cleanup)을 실행했을 때 사용중인 일부 파일을 삭제할 수 없다고 명확하게 알려주었습니다. 파일을 열어 둔 Visual Studio를 닫으면 정리가 제대로 작동했습니다.

다른 프로그램도이 문제를 일으키는 리포지토리에 파일을 열어 둘 수 있습니다. xls를 열린 상태로 유지하는 Excel은 다른 경우의 범인이므로 리포지토리의 어떤 항목을 사용하거나 재부팅하여 프로그램을 종료 한 다음 다시 정리하려고 시도하는 경우에도 모든 프로그램을 닫는 것이 좋습니다.


7

외부 폴더를 기존 폴더에 연결하고 싶지 않기 때문에이 문제가 발생했습니다. 대상이 기존 (버전 또는 비 버전) 폴더 인 svn : externals 속성 행을 추가하면 SVN Woring Copy 잠김 오류가 발생합니다. 또한 정리는 모든 것이 괜찮지 만 여전히 업데이트되지 않는다는 것을 알려줍니다.

솔루션 : 저장소에서 트러블 폴더를 삭제하고 svn : externals 특성이 설정된 루트 폴더에서 업데이트하십시오. 폴더가 만들어지고 모두 다시 괜찮습니다.

파일의 svn : externals에 대상 폴더의 버전 제어가 필요하기 때문에이 문제가 발생했습니다. 이것이 다른 리포지토리에서 작동하지 않는 것을 알았을 때 외부 파일에서 외부 폴더로 바꾸고이 혼란에 빠졌습니다.


6

가장 쉬운 방법은 숨겨진 폴더를 표시 한 다음 .SVN 폴더를 여는 것입니다. 이 파일을 삭제하면 "lock"이라는 이름의 0KB 파일이 표시됩니다.


5

SVN 1.7을 사용하여 동일한 문제를 발견했으며 위에서 언급 한 수정 사항이 없습니다.

가장 먼저 편집 한 모든 컨텐츠를 백업하십시오.

몇 시간을 보낸 후 (내 지점의 크기가 6GB 이상이므로 모든 것을 다시 다운로드하지 않았 음) 지점의 .svn 폴더에 "wc"라는 db 파일이 있음을 알았습니다.

모든 db 관리자를 사용하여 db 파일을 열고 (Firefox의 sqlite 관리자 플러그인을 사용함) WC_LOCK 테이블로 이동하십시오. 이 테이블에는 획득 한 잠금에 대한 항목이 있습니다. 테이블에서 레코드를 삭제하면 완료됩니다 :)


이전 답변과 거의 비슷하지만 firefox SQLite 관리자 플러그인을 언급했기 때문에 투표를했습니다.
ehambright

3

이 문제가 발생하면 문제 경로에서 정리 명령을 직접 실행하면 일반적으로 작동하는 것으로 보입니다. 그런 다음 작업 루트에서 정리를 다시 실행하고 다른 디렉토리에 대해 불평합니다. 불만이 멈출 때까지 반복합니다.


1
이전 답변과 마찬가지로 잠금 파일을 찾을 수 없었지만 이것은 나를 위해 일했습니다 :)
serenskye

3

Windows 시스템 인 경우 브라우저를 통해 저장소를보고 파일 이름은 동일하지만 대소 문자가 다른 두 개의 파일을 볼 수 있습니다. Subversion은 대소 문자를 구분하며 Windows는 그렇지 않으므로 Windows가 동일한 파일을 가져오고 있다고 생각할 때 잠금을 얻을 수 있지만 Subversion은 그렇지 않습니다. 저장소에서 중복 파일 이름을 삭제하고 다시 시도하십시오.


3

새 폴더를 만들고 프로젝트를 체크 아웃하고 업데이트 된 파일을 새 폴더에 복사하면됩니다.

새로운 체크 아웃으로 수정되었습니다.


나는 똑같이했다. (근본 원인을 AnkhSVN에 내려 놓고 작업 사본을 엉망으로 만듭니다. AnkhSVN은 이제 제거되었습니다).
Scotty.NET

2

TortoiseSVN을 사용하고 있으며 방금 업그레이드 되었습니까? 1.4에서 1.5로 옮기고 재부팅하지 않을 때 그 문제가 발생했습니다. (재부팅을 시도하십시오).

다시 부팅해야하는 이유는 캐시 파일이 모두 펑키하기 때문입니다.

그렇지 않으면 계속 진행하려면 작업 복사본을 새 폴더로 내보내고 (.svn 숨겨진 폴더를 복사하지 마십시오) 프로젝트를 다시 체크 아웃하고 모든 코드를 다시 이동 한 다음 커밋을 진행하십시오.


이것은 나에게도 일어났다. 다시 부팅해야했다
Matthew Lock

2

.svn 폴더를 삭제 한 다음 부모 디렉토리에서 정리를 실행하십시오. 완벽하게 작동합니다 !!


3
SVN 1.7에서는 맨 위에 .svn 폴더가 하나만 있기 때문에 작동하지 않습니다. 삭제되면 저장소에 대한 첨부 파일이 제거됩니다.
AnneTheAgile


2

나는 종종 그러한 문제를 겪습니다. 정리 문제를 일으키는 내 패턴.

  1. 뷰어에서 이미지 파일을 엽니 다.
  2. 이미지 파일 / 폴더를 삭제합니다.
  3. 커밋 / 업데이트하려고합니다

삭제 된 파일이 열린 이미지 뷰어를 닫으면 문제가 해결됩니다. 다른 소프트웨어가 같은 방식으로 정리를 차단할 수 있습니다.

일반적으로 그런 경우 컴퓨터를 다시 시작하면 도움이 될 수 있다고 생각합니다.


1

SVN은 일반적으로 실제 파일을 저장소에서 가져 오기 전에 폴더에있는 파일의 내부 구조 (.svn / prop-base)를 업데이트합니다. 파일을 가져 오면이 파일이 지워집니다. 업데이트 진행 중 "업데이트"가 실패했거나 조기에 취소 되었기 때문에 오류가 자주 발생합니다.

  1. .svn / prop-base 디렉토리에 파일이 있는지 확인하십시오
  2. 폴더에없는 파일을 제거하십시오
  3. 대청소
  4. 최신 정보

이제 업데이트가 작동합니다.


1

버전 제어 폴더 아래에 폴더를 내 보냈기 때문에 동일한 문제가 발생했습니다. TortoiseSVN에서 폴더를 삭제 한 다음 파일 시스템에서 폴더를 삭제해야합니다 (TortoiseSVN은 버전이없는 하위 폴더를 좋아하지 않습니다 ... 왜 안됩니까 ???)


폴더를 같은 폴더로 내보냈 음을 추가해야합니다.이 방법으로 이전 버전을 언 버전 할 수 있습니다. 버전이 지정된 폴더.

1

검색 시작 .... 잠금 ... 나열된 모든 파일을 선택하고 삭제하십시오.


1

다음을 수행해야합니다.

svn 상태 | grep ". L"| sed 's /.* (. *) $ / \ 1 /'| awk '{인쇄 길이 ($ 1), $ 1}'| 정렬 -nr | awk '{print "pushd"$ 2 "; svn cleanup; popd"}'| | 쉬


1

솔루션을 삭제하지 마십시오!

.svn 폴더에는 lock이라는 파일이 있으며 길이는 0 바이트입니다.

솔루션의 모든 .svn 폴더에서 이러한 파일을 모두 삭제할 수 있으며 작동합니다.

내 경우에는 효과가 있었다


이것이 가장 간단한 해결책입니다! 나를 위해 일했다
Nathan

예, 불행히도 최신 버전의 SVN에서는 작동하지 않습니다. 최신 버전의 경우 더 이상 잠금 파일이 없으므로 삭제해야합니다. 더 이상 다른 폴더 구조가있는 파일이없는 것 같습니다. 위와 유사한 방식으로 여전히 수정할 수있는 것이 있는지 아는 사람이 있으면 공유하십시오.
Para

1

파일의 현재 위치 버전 해제 및 동일한 위치에 대한 새로운 체크 아웃으로이 문제가 해결되었습니다.

TortoiseSVN에서 인플레 이스 언 버전을 수행하려면 작업 목록의 루트 폴더를 파일 트리에서 디렉토리 트리로 직접 드래그 한 다음 팝업 메뉴에서 "SVN 버전이 지정된 항목 내보내기"를 선택하십시오. TortoiseSVN은 대상이 원본과 동일 함을 확인하고 작업 복사본의 버전을 해제하도록 제안합니다.

버전을 제거한 후에는 동일한 폴더 (현재 모든 파일의 버전이없는 사본이 포함됨)에 새로 체크 아웃하십시오. TortoiseSVN은 기존 폴더를 체크 아웃하고 있음을 경고하지만 계속 진행할 수 있습니다.

그 후 정리, 업데이트 및 기타 작업이 장애없이 작동했습니다. 위의 두 단계 모두 로컬 수정 사항을 유지하므로 정보가 손실되지 않아야합니다 (그러나 작업 복사본을 백업하기 전에 백업하는 것이 좋습니다).

경고 하나 : 작업 사본에 혼합 버전 또는 커밋되지 않은 속성 변경 사항이 포함 된 경우 해당 정보가 손실됩니다. 나에게 이것은 일반적인 일이 아니며, 손상된 작업 복사본을 선택하거나 커밋되지 않은 속성 변경을 잃은 것을 선택하면 후자를 선택하는 경향이 있습니다.


1

"정리"가 작동하는이 문제가 있었지만 "업데이트"는 계속 실패합니다. 해결책은 TortoiseSVN의 삭제가 아닌 Windows 탐색기를 통해 문제의 폴더를 삭제하는 것입니다.

O / S 삭제와 SVN 삭제의 차이점에 대한 자세한 내용은 여기를 참조하십시오. http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-rename.html)

특히 :

TortoiseSVN → 파일 삭제를하면 파일이 작업 복사본에서 즉시 제거되고 다음 커밋시 저장소에서 삭제 표시됩니다.

과:

TortoiseSVN 컨텍스트 메뉴를 사용하는 대신 탐색기를 통해 파일을 삭제하면 커밋 대화 상자에 해당 파일이 표시되고 커밋 전에 버전 제어에서 파일을 제거 할 수 있습니다. 그러나 작업 복사본을 업데이트하면 Subversion은 누락 된 파일을 찾아 저장소의 최신 버전으로 바꿉니다.


1

Linux를 사용하는 경우 다음을 시도하십시오.

find "/the/path/to/your/directory" -name .svn -type d | xargs chmod 0777 -R

그런 다음 cleanup해당 디렉토리 에서 명령을 실행 한 후 업데이트하십시오.


1

내 문제를 해결하기 위해 다음을 수행했습니다.

  1. 폴더 이름 앞에 "_"를 넣어 문제가되는 폴더의 이름을 변경했습니다.
  2. 상위 폴더의 "정리"를 수행했습니다.
  3. 문제가있는 폴더의 이름을 원래 이름으로 변경했습니다.
  4. 커밋했습니다.

1

솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 여는 하위 메뉴에서 subversion을 클릭하고 정리를 선택하십시오. 그것은 나를 위해했던 것처럼 문제를 해결할 것입니다. 그것이 효과가 있기를 바랍니다.


1

정리를하려면

  1. .svn 폴더를 삭제하십시오.

  2. 루트 폴더에서 svncheckout을 수행하십시오.

  3. 정리 작업을 수행하십시오.

문제가 해결되었습니다.

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