모든 유형의 svn 후크를 작성할 때 저장소 나 트랜잭션에 대한 정보가 필요하면 쉘 스크립트에서 svnlook
프로그램을 사용하거나 원하는 언어로 svn API를 사용하고자합니다. svnlook
을 사용하면 인증 확인 레이어를 포함하여 모든 svn RA (원격 액세스) 코드를 무시하므로 스크립트가 서버 컨텍스트에서 실행되기 때문에 더 빠르며 문제가되지 않습니다. 또한, 파일 형식 정보 이외의 다른 용도로 사용하지 않는 작업 복사본을 업데이트하는 데 따른 추가 오버 헤드가 없습니다.
svnlook
에는 개정판 (사후 * 후크)과 트랜잭션 (사전 * 트랜잭션)을 모두 조사 할 수있는 다양한 옵션이 있습니다. 여기에 특히 흥미로운 것은 changed
옵션입니다. 개정 또는 거래를 만들어
changed: usage: svnlook changed REPOS_PATH
Print the paths that were changed.
Valid options:
-r [--revision] ARG : specify revision number ARG
-t [--transaction] ARG : specify transaction name ARG
--copy-info : show details for copies
변화는과 같이 표시됩니다 : 디렉토리를 참조 할 때 svnlook에서
A trunk/src/new-dir/
A trunk/src/new-dir/newheader.h
A trunk/src/new-dir/newsrc.c
U trunk/src/existingsrc.c
출력은 항상 /로 끝납니다. 이것은 파일이나 디렉토리를 탐지하기위한 쉬운 구분자입니다.
그러나 삭제를 처리 할 때 사소한 일이 조금 있습니다. 디렉토리가 삭제되면 디렉토리 아래의 모든 항목도 제거되며이 정보는 changed
에 표시되지 않습니다. 여기를 참조하십시오 :
당신이 어떤 형태 찾고있는 당신은, 내가 생각하는거야에서 무엇을 찾고있는 설명을 바탕으로
D trunk/src/new-dir/
U trunk/src/existingsrc.c
보고 후 커밋합니다. 그렇다면 the subversion mailer post-* hook을 확인하시기 바랍니다. 결과를 전자 메일로 보내지 않으려 고하더라도이 코드는 svn API를 사용하여 트랜잭션 또는 수정 내용을 확인하는 방법을 보여줍니다.
와우, 나는 그것에 대해 생각해 본 적이 없었습니다. 질문에 대답 해 주셔서 감사합니다. 비록 이미 포기하고 힘내게되었습니다. –
@BrunoDeBarros 나는 당신을 비난한다고 말할 수 없다. 4 개월은 누구든지 재검토 할 수있는 충분한 시간입니다. –