2009-09-12 3 views
5

У меня есть небольшой частный проект Google-кода. Для SCM я использую Mercurial. А для локальной сборки я бы хотел использовать nant.Как использовать mercurial от nant

Так в основном:

  1. Я хотел бы загрузить свои исходные файлы из известного ртутный репозитория с помощью NANT задачи
  2. Я хотел бы, чтобы каким-то образом получить номер ревизии в хранилище, так что я могу собрать нравится хороший номер сборки

Сценарий сборки не будет использоваться для непрерывной интеграции, но только для ночных сборок и производственных сборок.

Спасибо за помощь

ответ

4

Я не знаю NAnt, но в (реальном) муравей, мы просто используем <exec> задачу, чтобы вызвать ртутной двоичную. В зависимости от чистоты вы хотите начать, вы можете clone или просто pull и выполнение hg id -i получает номер ревизии чисто. Еще одна вещь, которую следует рассмотреть, - использовать ссылки архива на удаленном веб-интерфейсе (по существу, команду hg archive через HTTP) и просто использовать wget (а не эквивалентную задачу nant), чтобы вытащить архив наконечника, который имеет простую согласованную ссылку, а затем вы можете получить идентификатор ревизии из файла архива hg_archival.txt.

+0

Это будет работать, но в то же время подразумевает, что конечный пользователь сценария должен был бы установить меркурий локально. Я честно надеялся, что некоторые расширения taks были доступны – Dejan

+0

Я не думаю, что вы найдете какой-либо не-меркурийный код, который в настоящее время говорит о протоколе ртутного провода, и он находится в python. Таким образом, вы можете попробовать запустить его в IronPython, но в этот момент вы говорите столько же, сколько с помощью меркурийной установки. Я заново напишу свой контент на основе soln в отдельном ответе. –

2

Поскольку вы ищете NANT кода вместо вызова прочь к ртутным двоичном, я предложил бы просто использовать <get> задачу NANT, чтобы тянуть вниз кончик репо, как это:

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

и внутри должен быть .hg_archival.txt файл, который содержит что-то вроде этого:

repo: bac32db38e52fd49acb62b94730a55f4f4b0cdee 
node: 61482ea34fd0b9650e738eaebb2fe352c2f6315a 

, из которого вы можете получить Хашид, подходящий для использования в брендинге сборки.

К сожалению, я не нахожу ссылки для загрузки архива в коде Google, но они довольно стандартны в веб-интерфейсах mercurial (и 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 для чтения непосредственно в собственность, так что я должен был использовать промежуточный текст файл и обработать его в свойстве с помощью загрузочного файла. Мне также пришлось добавить «CurrentMercurialRevision.txt» в файл .hgignore ... но если вы знакомы с Mercurial, вы, вероятно, уже догадались об этом. ;-)

Надеюсь, это поможет кому-то.

+1

Я столкнулся с этой проблемой при поиске одного из моих вопросов. Существует прохладное сообщество msbuild taks, написанное специально для «Mercurial» [здесь] (http://msbuildhg.codeplex.com/). Используя это, вам не нужно использовать какой-либо промежуточный файл для этой задачи. –

Смежные вопросы