Как использовать Mercurial от Nant - PullRequest
       20

Как использовать Mercurial от Nant

5 голосов
/ 13 сентября 2009

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

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

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

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

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

Ответы [ 3 ]

4 голосов
/ 13 сентября 2009

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

2 голосов
/ 13 сентября 2009

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

<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

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

К сожалению, я не нахожу ссылки на скачивание архива в коде Google, но они довольно стандартны в веб-интерфейсах Mercurial (и Bitbucket), поэтому я думаю, что они где-то.

0 голосов
/ 04 июня 2011

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

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

...