2009-09-12 3 views
5

개인 Google 코드 프로젝트가 약간 있습니다. SCM의 경우 Mercurial을 사용합니다. 그리고 로컬 빌드에 대해 nant를 사용하고 싶습니다. 그래서 기본적으로nant에서 수은을 사용하는 방법

:

    나는 내가 조립 할 수 있도록 어떻게 든 저장소의 개정 번호를하고 싶습니다 NANT 작업
  1. 를 사용하여 알려진 수은 저장소에서 내 소스 파일을 다운로드하고 싶은
  2. 작은 어셈블리 버전 번호

빌드 스크립트는 지속적인 통합에는 사용되지 않지만 야간 빌드 및 프로덕션 빌드에만 사용됩니다. 도움

답변

4

내가 NANT 모르겠지만, (실제) 개미, 우리는 단지 HG 바이너리를 호출 할 <exec> 작업을 사용하기위한

감사합니다. 깨끗한 상태에서 시작하려면 clone 또는 pull 만 가능하고 hg id -i을 실행하면 수정 번호가 표시됩니다. 고려해야 할 또 다른 사항은 원격 웹 인터페이스 (기본적으로 HTTP를 통한 hg archive 명령)의 아카이브 링크를 사용하고 wget (동등한 nant 작업 아님)을 사용하여 쉬운 일관성있는 링크가있는 팁 아카이브를 풀다가 아카이브의 hg_archival.txt 파일 내부에서 개정 ID를 얻을 수 있습니다. 당신은 수은 진에 떨어져 호출보다는 NANT 코드를 찾고 있기 때문에

+0

동시에 작동하지만 스크립트의 최종 사용자가 로컬에 수은을 설치해야한다는 것을 의미합니다. 솔직히 말해서 일부 확장 기능을 사용할 수 있기를 바랬습니다. – Dejan

+0

현재 수은 와이어 프로토콜을 말하는 비 수은 코드를 찾지 못할 것이라고 생각합니다. 파이썬으로되어 있습니다. 따라서 IronPython에서 실행 해 볼 수는 있지만 그 시점에서 당신은 수은 설치만큼 많은 작업을해야합니다. 나는 별도의 대답으로 내 기반의 솔루션을 다시 쓰겠습니다. –

2

,이 같이 당신의 repo의 끝을 아래로 끌어 NANT의 <get> 작업을 사용하여 단지 좋을 것 :

<get src="http://bitbucket.org/tortoisehg/stable/get/tip.zip" dest="latest.zip" /> 
<unzip zipfile="latest.zip" todir="latest"/> 

내부 이 같은 것을 포함하는 .hg_archival.txt 파일이 있어야합니다 : 당신이 빌드를 브랜딩에서 사용하기에 적합한 hashId을 얻을 수있는

repo: bac32db38e52fd49acb62b94730a55f4f4b0cdee 
node: 61482ea34fd0b9650e738eaebb2fe352c2f6315a 

.

불행히도 Google 코드에서 아카이브 다운로드 링크를 찾지는 못했지만 수은 (bitbucket) 웹 인터페이스에서 꽤 표준이므로, 어딘가에 있다고 상상할 수 있습니다.

0

처음에는 질문을하는 사람에게 해당되지 않았지만 비슷한 일을해야했습니다 ...하지만 숫자가 필요했습니다 (예 : 번호가 저장소에만 한정되어 있지만 스크립트가 사용되는 컨텍스트는 괜찮 았음). 또한 hg.exe를 호출하는 데 아무런 문제가 없었습니다. hg.exe에서 실행할 수있는 모든 곳을 사용할 수 있기 때문입니다.

나는 마침내 함께 끝났다은 NAnt 스크립트는이이었다

<exec program="hg.exe" output="CurrentMercurialRevision.txt"> 
    <arg value="id" /> 
    <arg value="-n" /> 
</exec> 
<loadfile file="CurrentMercurialRevision.txt" property="buildNumber" /> 

불행하게도,이 속성에 직접 읽을 수 NUnit과의 방법이 될 것으로 보인다, 그래서 나는 중간 텍스트를 사용했다하지 않습니다 파일을 만들고 loadfile을 사용하여 속성으로 처리하십시오. 또한 .hgignore 파일에 "CurrentMercurialRevision.txt"를 추가해야했습니다 ...하지만 Mercurial에 익숙하다면 아마 이미 추측했을 것입니다. ;-)

누군가가 도움이되기를 바랍니다.

+1

내 질문 중 하나를 검색 할 때이 스레드를 발견했습니다. "Mercurial"[여기] (http://msbuildhg.codeplex.com/)에 특별히 작성된 멋진 msbuild 커뮤니티가 있습니다. 이것을 사용하면이 작업에 중간 파일을 사용할 필요가 없습니다. –