如何使用来自nant的mercurial

时间:2009-09-12 23:05:57

标签: mercurial build nant

我有一个私人Google代码项目。对于SCM,我使用Mercurial。对于本地构建,我想使用nant。

基本上是这样的:

  1. 我想使用nant任务从已知的mercurial存储库下载我的源文件
  2. 我想以某种方式获取存储库的修订号,以便我可以组装一个漂亮的小程序集版本号
  3. 构建脚本不会用于持续集成,而只能用于夜间构建和生产构建。

    感谢您的帮助

3 个答案:

答案 0 :(得分:4)

我不知道,但在(真正的)ant中,我们只使用<exec>任务来调用hg二进制文件。您可以clone或仅pull依赖干净,而hg id -i执行hg_archival.txt可以清楚地获取修订号。另一件需要考虑的事情是使用远程Web界面上的归档链接(本质上是通过HTTP的hg归档命令),只需使用wget(不是等效的nant任务)来下拉tip存档,它具有简单一致的链接,然后您可以从存档的{{1}}文件中获取修订版ID。

答案 1 :(得分:2)

由于您正在寻找NANT代码而不是调用mercurial二进制代码,我建议您只使用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。

不幸的是,我没有在谷歌代码上找到存档下载链接,但它们在mercurial(和bitbucket)Web界面中非常标准,所以我想它们就在某个地方。

答案 2 :(得分: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将其处理为属性。我还必须将“CurrentMercurialRevision.txt”添加到.hgignore文件中......但是如果你熟悉Mercurial,你可能已经猜到了。 ; - )

希望这会对某人有所帮助。