2010-02-26 2 views
3

Subversion 명령 줄 도구를 사용하여 좀비 잠금을 제거하는 방법을 찾으려고합니다. 궁극적 인 목표는 후크 스크립트에서이를 수행하는 것이지만 물리적 저장소 경로 만있을 때 명령 줄을 사용하지 못했습니다. (svnadmin rmlocks 사용은 HEAD 개정판에있는 잠금에 대해서만 작동하는 것 같습니다.)Subversion에서 좀비 잠금 제거

이상적으로는 커맨드 라인 도구를 사용하여 사후 커밋 훅 스크립트를 통해이 작업을 수행하고 싶습니다. (나는이 목적을 위해 python 스크립트를 알고 있지만,이 단일 용도로는 해당 서버에 python을 설치하지 않기를 바란다.) 우리는 .NET 상점이므로 SharpSVN 라이브러리로 도구를 만드는 것은 또한 가능성이 있지만 유일한 잠금 해제 기능은 SVNClient 클래스에있는 것으로 보입니다.

정말 두 가지 질문이 있습니다. 명령 줄 도구로이를 수행 할 수있는 방법이 있습니까? 그렇지 않다면, SharpSVN에서 그것을 할 수있는 방법이 있습니까? (아니면 다른 라이브러리?)

== 업데이트 12월 3일, 나는 최근에이 문제를 다시 방문했고,이 질문은 여전히 ​​트래픽을 받고있다 발견했습니다

2012 ==. 원래의 질문과 돈의 대답에 언급 된 파이썬 스크립트가 이후에 이동 : http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/remove-zombie-locks.py가 (. 나는 그 대부분의 사람들이 찾고있는 무엇을 가정)

아이러니하게도, 저장소가 리눅스로 이동에도 불구하고, 우리는 C를 사용하고 해결책.

답변

1

대답은 "여기에서 벗어날 수 없습니다."입니다.

  • Svnadmin은 저장소 경로로 잠금을 제거하는 명령 줄을 제공하지만 좀비 잠금에서는 작동하지 않습니다.
  • SharpSVN은 주로 클라이언트 측입니다. 저장소 경로로 연결하기위한 몇 가지 방법이 있지만 문서 당) 대부분은 라이브러리의 단위 테스트에 사용하기위한 것입니다.

그래서 Subversion API 라이브러리를 사용하여 C로 python 스크립트를 다시 작성합니다.

+0

**하지만 좀비 잠금 장치에서는 작동하지 않는 것 같습니다. ** 아니요, 부실 잠금 장치에 대한 경로를 알고 있으면 작동합니다. – bahrep

+0

@bahrep -이 답변을 작성하기 전에 테스트 해 보았습니다. (4 * 1/2 년 전) svnadmin은 현재 개정판에 있던 파일에 대해 잘 작동했지만 파일이 삭제됨으로 표시되면 실패했습니다. 그 이후로 상황이 바뀔 수도 있습니다. 이 질문은 여전히 ​​트래픽의 상당 부분을 생성하므로 svnadmin을 사용하여 후크 스크립트를 제공하면 다른 사람들에게 유용 할 수 있으며 만족스러운 답변을 기꺼이 바꿀 것입니다. – ThatBlairGuy

2

Python 스크립트가 있습니다 (여기에서 참조 : http://subversion.tigris.org/ds/viewMessage.do?dsForumId=1065&dsMessageId=2369399). 그 중 하나를 사용하거나 필요하면 .NET으로 변환합니다.

+0

내 질문에 언급 한 스크립트입니다. svn_repos_fs_unlock 메소드와 동등한 명령 행을 찾을 수 없었습니다. (svnadmin rmlocks는 HEAD 개정판의 잠금에만 작동하는 것 같습니다.) 마찬가지로 SharpSVN을 사용하면 클라이언트 측에서 잠금 해제 방법을 사용할 수 있습니다. – ThatBlairGuy

+0

죄송합니다. 당신이 파이썬 스크립트를 언급했다는 사실을 어떻게 넘어 갔는지 모르겠다. 기본적으로 자신의 질문에 대답했습니다 ... SharpSVN은 클라이언트 API를 둘러싼 .NET 래퍼이므로 개발자가 구현 한 경우 동일한 호출을 사용할 수 있어야합니다. 소스에서 svn_repos_fs_unlock 메소드를 검색했지만 찾지 못했습니다. SharpSVN 포럼 (http://sharpsvn.open.collab.net/ds/viewForumSummary.do?dsForumId=728)에서 질문 할 수 있습니다. C에 익숙하다면 API를 직접 호출 할 수 있습니다. – Don

+0

감사합니다. API가 제대로 작동하지 않는다면 API를 호출하는 것이 좋습니다. 적절한 휠이 이미 존재하는 경우 곧 피할 수 있습니다. – ThatBlairGuy