2009-09-12 16 views
5

Mam mały prywatny projekt Google code. W przypadku SCM używam Mercurial. A dla lokalnej kompilacji chciałbym użyć nant.Jak używać mercurial z nant

Więc zasadniczo:

  1. Chciałbym pobrać moje pliki źródłowe ze znanego mercurial repozytorium za pomocą zadania nant
  2. Chciałbym jakoś dostać numer wersji repozytorium tak, że mogę zmontować miły mały numer wersji zespołu:

Skrypt budujący nie będzie używany do ciągłej integracji, ale tylko w przypadku kompilacji nocnych i wersji produkcyjnych.

Dzięki za pomoc

Odpowiedz

4

nie wiem NAnt, ale w (Real) mrówki, po prostu użyć zadania <exec> powołać binarny Hg. W zależności od tego, czy chcesz rozpocząć, możesz clone lub po prostu pull, a wykonanie hg id -i sprawi, że wyczyścisz numer wersji. Inną kwestią do rozważenia jest użycie linków do archiwum na zdalnym interfejsie sieciowym (głównie polecenie archiwum hg za pośrednictwem protokołu HTTP) i po prostu użycie polecenia wget (nie równoważnego nant) do rozwinięcia archiwum końcówek, które ma łatwy spójny link, a następnie możesz uzyskać identyfikator wersji z pliku archiwum hg_archival.txt.

+0

To by działało, ale jednocześnie sugerowało, że użytkownik końcowy skryptu musiałby mieć zainstalowany lokalnie rdzeń. Miałem szczerą nadzieję, że niektóre rozszerzenia Tatu były dostępne – Dejan

+0

Nie sądzę, że znajdziesz jakiś nie-mercurial kod, który mówi obecnie protokołu drutu rtęciowego, i jest w python. Więc możesz spróbować uruchomić go w IronPython, ale w tym momencie mówisz tyle pracy, ile instalacji rtęciowej. Napiszę ponownie moje rozwiązanie oparte na systemie get w osobnej odpowiedzi. –

2

Od szukasz kodu NANT niż odwoływanie się do mercurial binarny, polecam tylko przy użyciu <get> zadanie NANT do ciągnięcia w dół końcówkę swojego repo tak:

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

i wewnątrz nie powinno być plikiem .hg_archival.txt że zawiera coś takiego:

repo: bac32db38e52fd49acb62b94730a55f4f4b0cdee 
node: 61482ea34fd0b9650e738eaebb2fe352c2f6315a 

, z którego można dostać hashId odpowiedni do stosowania w brandingu kompilacji.

Niestety, nie znajduję linków do pobierania archiwów w kodzie Google, ale są one dość standardowe w interfejsach sieciowych (i bitbucket), więc wyobrażam sobie, że gdzieś są.

0

Chociaż nie dotyczyło to osoby, która pierwotnie zadała pytanie, musiałem zrobić coś podobnego ... ale potrzebowałem wersji numerycznej (tak, wiem, że numer jest specyficzny dla repozytorium, ale w kontekst, w którym skrypt był używany, było w porządku). Nie miałem również problemów z wywołaniem hg.exe, ponieważ wszędzie można to uruchomić z pliku hg.exe.

Skrypt NAnt I w końcu skończyło się było to:

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

Niestety, nie wydaje się być sposób w NUnit czytać bezpośrednio w nieruchomości, więc musiałem użyć tekstu pośrednią plik i przetwarzaj go na właściwość, używając loadfile. Musiałem również dodać "CurrentMercurialRevision.txt" do pliku .hgignore ... ale jeśli znasz Mercurial, prawdopodobnie już to odgadłeś. ;-)

Mam nadzieję, że to pomoże komuś.

+1

Natrafiłem na ten wątek podczas przeszukiwania jednego z moich pytań. Istnieje fajna wspólnota msbuild napisana specjalnie dla "Mercurial" [tutaj] (http://msbuildhg.codeplex.com/). Używając tego, nie musisz używać pośredniego pliku do tego zadania. –

Powiązane problemy