2010-11-18 3 views
5

내 작업 복사본의 최상위 수준에있는 스크립트를 사용하고 있으며, Mercurial 후크로 사용하고 싶습니다. 후크에 대한 절대 경로 이름을 사용하면 모든 것이 정상이지만 상대 경로 이름을 원하기 때문에 모든 작업을 쉽게 이동할 수 있으며 다른 작업 복사본에 사용되며 다른 개발자는 그대로 hgrc를 복사 할 수 있습니다.Mercurial 후크에 대한 상대 경로 이름을 사용하는 방법

/space/project/.hg/hgrc가에 GenID 스크립트/공간/프로젝트에/I가에/공간입니다 경우

는 후크가 잘 호출에 GenID됩니다

[hooks] 
update = genid 

포함/프로젝트 하지만 현재 디렉토리가/space/project/src/tools이라면 'hg update'는 훅을 찾을 수 없으므로 오류가 발생합니다.

+0

누군가가 'hg update null'을 수행하여 작업 디렉토리를 지우면 어떻게 될까요? 그런 다음'hg' 명령을 실행하려고하면 존재하지 않는 확장을로드하려고합니다. 물론 이것은 절대 경로와 관련하여 여전히 문제가 될 수 있지만, 확장 스크립트가 현재 활발히 작업중인 저장소에 있다면 훨씬 더 가능성이 높습니다. –

+1

글쎄 그때하지 마! 후크는 기본적으로 비어 있으므로 사전에 추가해야하므로 작업 복사본이 없으면 후크를 추가하지 마십시오. 이것은 프로젝트를 진행하는 다른 개발자들에게는 문제가되지 않습니다. –

+1

@TimDelaney 대폭적인 영향을 미치지 않습니다. 후크 실행은 실패하지만 커밋은 여전히 ​​발생합니다. –

답변

2

파이썬 후크에

[hooks] 
update = $MercurialHooks/genid 

을 참조하십시오 자주 묻는 질문 (12) 상대 경로를 사용할 수 없습니다. 스크립트 후크는 다음과 같이 할 수 있습니다.

[hooks] 
update = ./genid 
+0

잘 작동합니다! – pyfunc

+1

당신은 분명히 할 수 있었 을까? 나는이 일을 할 수 없었다. .hg 디렉토리 위의 디렉토리를 원합니다. wouldnt ./ 뭔가가 현재 디렉토리를 참조할까요? –

+0

* 파이썬 훅은 상대 경로를 사용할 수 없습니다 * - 참조를 제공해 주시겠습니까? –

2

환경 변수가 수은 구성으로 확장되는 경우가 있습니다. 따라서 환경 변수를 사용할 수 있는지 확인할 수 있습니다. https://www.mercurial-scm.org/wiki/TipsAndTricks

+0

현재 작동중인 리포지토리를 가리키는 환경 변수가 설정되지 않았습니다. –

+0

@ 로거 빈스 : 내가 말한 것은 당신이 그것을 설정하여 사용할 수 있다는 것입니다. – pyfunc

+0

네, 그 말을 이해했습니다. 하지만 여러 다른 위치에 체크 아웃이 있거나 저장소를 다른 디렉토리로 이동하는 경우와 같은 시나리오에서는 작동하지 않습니다. 환경 변수를 유지해야한다면 $ PATH 일 수 있습니다. Mercurial이 $ HG_REPO_DIR과 같은 것을 설정하면 멋질 것입니다. –

0

나는 같은 문제가있어서 해결할 수 없습니다. 해결 방법은 쉬웠다. 나는 repo에있는 파일을 버전 관리하고 방금 내 .hg 폴더로 복사했습니다! 이상적이긴하지만 변경 될 가능성이없고 다른 repo 사용자는 여전히 파일의 사본을 얻을 수 있습니다.