'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 디렉토리에서 로그 파일을 삭제하는 일반적인 솔루션은 데이터베이스 작업 복사 구현으로 이동할 수 없습니다.
내가 한 것처럼 보이는 것은 다음과 같습니다.
- 작업 사본의 .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.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
그것이 도움이되기를 바랍니다.
나는 똑같은 문제가 있었다. 커밋 할 수없고 정리가 실패합니다.
커맨드 라인 클라이언트를 사용하여 파일을에서 .svn/props
로 이동하지 못했음을 나타내는 오류 메시지를 볼 수있었습니다 .svn/prop-base
.
특정 파일을보고 읽기 전용으로 표시되어 있음을 발견했습니다. 읽기 전용 특성을 제거한 후 폴더를 정리하고 변경 사항을 커밋 할 수있었습니다.
대문자로만 다른 두 개의 파일 이름에 문제가있을 수 있습니다. 이 문제점이 발생하면 다른 작업 사본 디렉토리를 작성해도 문제점이 해결되지 않습니다.
현재 Windows (예 : 크 래피) 파일 시스템은 단순히 Filename
와 의 차이점을 파악하지 못합니다 FILEname
. 가능한 두 가지 수정 사항이 있습니다.
- 플랫폼에서 실제 파일 시스템 (Unix 기반)으로 체크 아웃하고 파일 이름을 바꾸고 변경 사항을 커밋하십시오.
- Windows에 재고가 있으면 Eclipse SVN 저장소 브라우저에서 파일의 이름을 바꾸어 차이를 인식하고 파일 이름을 바꿀 수 있습니다.
- 명령 줄 SVN 클라이언트에서 문제가있는 파일의 이름을 원격으로 바꿀 수도 있습니다.
svn rename -m "broken filename case" http://server/repo/FILEname http://server/repo/filename
svn cleanup
콘솔을 통해 시도했지만 다음과 같은 오류가 발생했습니다.
svn: E720002: Can't open file '..\.svn\pristine\40\40d53d69871f4ff622a3fbb939b6a79932dc7cd4.svn-base':
The system cannot find the file specified.
그래서이 파일을 수동으로 (빈) 만들고 svn cleanup
다시했습니다. 이번에는 OK였습니다.
나는 같은 문제가 있었다. 나에게 원인은 EasySVN 및 (TortoiseSVN 또는 SVN)과 충돌했습니다. EasySVN으로 자동 업데이트하고 커밋했습니다 (작동하지 않았습니다).
이 기능을 끄면 정리, 커밋 또는 업데이트 할 수 없습니다. 위의 솔루션 중 어느 것도 작동하지 않았지만 재부팅하면 :)
svn cleanup
터미널에서 명령을 실행하십시오 (필자의 경우 Eclipse에서 실패한 경우).
~/path/to/svn-folder/$ svn cleanup
여기에 설명 된 다른 솔루션을 시도 했지만 아무도 효과가 없었습니다 .
액션 팀 → 헤드 업데이트 실패 :
svn : E155004 : '/ home / user / path / to / svn-folder'에 완료되지 않은 작업 항목이 있습니다. 먼저 'svn cleanup'을 실행하십시오.
작업 팀 → 정리 가 동일한 오류로 실패합니다.
나를 위해 일한 해결책 : 터미널에서 svn cleanup 명령을 실행하십시오 .
명령이 성공했습니다.
그런 다음 Eclipse에서 팀 → 업데이트 가 다시 작동했습니다.
참고 : 내 SVN 버전은 1.9.3입니다.
또한 확인 크리스의 답변을 경우 svn cleanup
작동하지 않습니다.
Windows 7 64 비트에서도 이와 동일한 문제가 발생했습니다. 콘솔을 관리자로 실행하고 문제 디렉토리에서 .svn 디렉토리를 삭제했습니다 (로그 또는 무언가에 대한 오류가 있지만 무시했습니다). 그런 다음 탐색기에서 버전 관리에서 더 이상 표시되지 않는 문제 디렉토리를 삭제했습니다. 그런 다음 업데이트를 실행하고 예상대로 작업을 진행했습니다.
문제가 대소 문자 구분 (Windows 및 Mac에 체크 아웃 할 때 문제가 될 수 있음)이고 * nix 시스템에 체크 아웃 할 수있는 옵션이없는 경우 다음이 작동합니다. 처음부터 과정은 다음과 같습니다.
% svn co http://[domain]/svn/mortgages mortgages
(체크 아웃이 계속됩니다… 그때…)
svn: In directory 'mortgages/trunk/images/rates'
svn: Can't open file 'mortgages/trunk/images/rates/.svn/tmp/text-base/Header_3_nobookmark.gif.svn-base': No such file or directory
여기에 SVN은 대소 문자 만 다른 비슷한 이름을 가진 두 개의 파일을 체크 아웃하려고 - Header_3_noBookmark.gif
와 Header_3_nobookmark.gif
. Mac 파일 시스템은 기본적으로 SVN이 이와 같은 상황에서 질식하는 방식으로 대소 문자를 구분하지 않습니다. 그래서...
% cd mortgages/trunk/images/rates/
% svn up
svn: Working copy '.' locked
svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
그러나 svn cleanup
우리가 알고 있듯이 달리기 는 작동하지 않습니다.
% svn cleanup
svn: In directory '.'
svn: Error processing command 'modify-wcprop' in '.'
svn: 'spacer.gif' is not under version control
spacer.gif
문제가 아닙니다 ... 이전 오류를지나 다음 파일로 이동할 수 없습니다. 그래서 나는 이외의 디렉토리에서 모든 파일을 .svn
삭제하고 SVN 로그를 제거했습니다. 이렇게하면 정리 작업이 완료되어 문제가되는 파일을 확인하고 이름을 바꿀 수 있습니다.
% rm *; rm -rf .svn/log; svn cleanup
% svn up Header_3_nobookmark.gif
A Header_3_nobookmark.gif
Updated to revision 1087.
% svn mv Header_3_nobookmark.gif foo
A foo
D Header_3_nobookmark.gif
% svn up
A spacer.gif
A Header_3_noBookmark.gif
그런 다음 프로젝트의 루트 디렉토리로 돌아가서 svn up
나머지 부분을 확인하기 위해 실행할 수있었습니다.
비슷한 문제가있을 때마다 rsync (NB : Linux 또는 Mac OS X 사용)를 사용하여 다음과 같이 도와줍니다.
# Go to the parent directory
cd dir_above_borked
# Rename corrupted directory
mv borked_dir borked_dir.bak
# Checkout a fresh copy
svn checkout svn://... borked_dir
# Copy the modified files to the fresh checkout
# - test rsync
# (possibly use -c to verify all content and show only actually changed files)
rsync -nav --exclude=.svn borked_dir.bak/ borked_dir/
# - If all ok, run rsync for real
# (possibly using -c again, possibly not using -v)
rsync -av --exclude=.svn borked_dir.bak/ borked_dir/
그렇게하면 새로운 체크 아웃을 할 수 있지만 작업 파일은 동일합니다. 나에게 이것은 항상 매력처럼 작동합니다.
너무 늦었습니다. 나를위한 트릭은 "정리"를 선택한 후 팝업 옵션 대화 상자에서 "Break Locks"를 확인한 다음 "확인"을 확인하는 것입니다. 그것은 나를 위해 성공적으로 청소했다.
Subclipse는 Windows의 진정한 악마 잠금 동작으로 인해 혼란스러워합니다. Unlocker 는 당신의 친구입니다. 잠긴 파일을 찾아서 잠금을 해제 할 수 있습니다.
(폴더를 이동하고 새로운 체크 아웃을 시도하기 전에)
문제가되는 파일이있는 폴더를 삭제하십시오. 예, 심지어 .svn
폴더 도 svn cleanup
맨 위 / 상위 폴더에서 수행하십시오.
나는 같은 문제에 직면했다. 인터넷에서 검색 한 결과 아래 기사가 있습니다. 그런 다음 기본적으로 권한 문제 인 SVN을 설정하는 데 사용한 사용자와 다른 사용자로 로그인되었음을 알았습니다.
TortoiseSVN (Windows) 에서이 문제에 직면하면 Cygwin으로 이동하여 거기에서 ' svn cleanup '을 실행합니다 . 그것은 나를 위해 올바르게 정리되고 TortoiseSVN에서 모든 것이 작동합니다.
여기에 대한 답변은 도움이되지 않았지만 프로젝트를 다시 확인하기 전에 Eclipse를 닫고 열었습니다 (Subversive는 내 SVN 클라이언트입니다). 문제는 사라졌습니다.
모든 상황에 적용되는 것은 아니지만 최근에이 문제가 발생했을 때 내 "수정"은 시스템에서 Subversion 패키지를 업그레이드하는 것이 었습니다. 1.4.something을 실행하고 있었고 최신 (1.6.6)으로 업그레이드했을 때 체크 아웃이 작동했습니다.
(다시 다운로드를 시도했지만 깨끗한 디렉토리에 대한 체크 아웃은 항상 같은 지점에 매달 렸습니다.)
읽기 전용 잠금은 때때로 Windows가있는 네트워크 드라이브에서 발생합니다. 연결을 끊었다가 다시 연결해보십시오. 그런 다음 정리 및 업데이트하십시오.
여기에 인용 된 대부분의 솔루션을 거친 후에도 여전히 오류가 발생했습니다.
이 문제는 대소 문자를 구분하지 않는 OS X 였습니다. 이름은 같지만 대문자가 다른 두 파일이있는 디렉토리를 체크 아웃하면 문제가 발생합니다. 예를 들어 ApproximationTest.java와 Approximationtest.java는 동일한 디렉토리에 있지 않아야합니다. 파일 중 하나를 제거하자마자 문제는 사라집니다.
업데이트 후 SVN이 폴더가 충돌하는 것으로 표시되는 문제가 발생했습니다. 이상하게도, 이것은 커맨드 라인을 통해서만 볼 수있었습니다-TortoiseSVN은 그것이 모두 괜찮다고 생각했습니다.
#>svn st
! my_dir
! my_dir\sub_dir
svn cleanup
, svn revert
, svn update
그리고 svn resolve
이 모든 것을 해결에 실패했다.
결국 다음과 같이 문제를 해결했습니다.
- .svn 디렉토리에서 "sub_dir"을 찾으십시오.
- RC-> 특성을 사용하여 항목 파일에서 '읽기 전용'플래그를 선택 취소하십시오.
- 항목 파일을 열고 "unfinished ..."행과 해당 체크섬을 삭제하십시오.
- 읽기 전용 플래그를 저장하고 다시 활성화하십시오.
- my_dir 디렉토리에 대해 반복하십시오.
그 후 모든 것이 잘되었습니다.
참고 로컬 변경 사항이 없으므로 귀하가 위험에 처할 것인지 잘 모르겠습니다. 나는 다른 사람들이 제안한 삭제 / 업데이트 방법을 사용하지 않았다-나는 my_dir / sub_dir / sub_sub_dir 디렉토리에서 같은 증상으로 시작 하여이 상태에 도달 했으므로 상황을 악화시킬 위험을 원하지 않았다. 다시!
주제가 많지는 않지만 누군가 내가이 게시물을 보았을 때 도움이 될 수 있습니다.
아니, 아니! SVN 1.7 이상을 사용하는 경우 정리 명령이 작업을 수행해야합니다!
또한 몇 가지 실험을하고 솔루션 (적어도 Eclipse )이 전체 프로젝트가 아닌 오류 메시지에 지정된 폴더에 대해서만 정리를 실행 하고 있음을 알았습니다 !
내가 그랬어 sudo chmod 777 -R .
권한을 변경할 수 있도록. 가 없으면 sudo
작동하지 않아 다른 명령을 실행하는 것과 동일한 오류가 발생합니다.
이제 svn update
전체 디렉토리를 긁어 내거나 다시 만들지 않고도 무엇이든 할 수 있습니다 . IDE 또는 텍스트 편집기에 이미 특정 탭이 열려 있거나 동기화 문제가있을 수 있으므로 특히 유용합니다. 작업 디렉토리를 스크랩하고이 방법으로 바꿀 필요는 없습니다.
동료의 .svn 디렉토리를 광산에 복사 한 다음 작업 사본을 업데이트 하여이 문제를 해결했습니다. 훌륭하고 빠르고 깨끗한 솔루션이었습니다.
이전 답변에는 좋은 제안이 있지만 Windows의 TortoiseSVN에 문제가있는 경우 (좋은 제품이지만 ...) 항상 명령 줄로 폴백하고 간단한 "svn cleanup"을 먼저 수행하십시오.
많은 경우에 Windows 클라이언트는 정리 명령을 실행하지 않지만 SVN 명령 행 유틸리티를 사용하여 정리가 올바르게 작동합니다.
비슷한 문제에 직면하면서 저장소 동기화보기에서 수동 병합으로 문제를 해결하는 데 도움이되었습니다.
한 파일 이름이 다른 파일 이름과 충돌하여 문제를 명확하게 언급했습니다. 최신 파일 이름을 다른 이름으로 바꾸면 문제가 해결되었습니다.
참고 URL : https://stackoverflow.com/questions/158664/what-should-i-do-when-svn-cleanup-fails
'Programing' 카테고리의 다른 글
기존 파일을 열고 한 줄 추가 (0) | 2020.04.09 |
---|---|
MySQL은 필드에서 일부 텍스트를 검색하고 바꿉니다. (0) | 2020.04.09 |
삭제 후 SQL Server에서 자동 증분 재설정 (0) | 2020.04.09 |
MVC 응용 프로그램에서 데이터를 캐시하는 방법 (0) | 2020.04.09 |
C #의 간단한 상태 머신 예제? (0) | 2020.04.09 |