Mercurial:构建脚本在标记提示时创建第二行

时间:2012-08-18 18:40:14

标签: mercurial build-automation versioning

我已经搜索了与标签和构建脚本有关的其他Mercurial帖子,但我没有找到我所看到的特定问题。

我已经使用bitbucket.org托管的Mercurial服务器几周了。我的工作流程是编写代码,推送到本地仓库,然后推送到bitbucket。我是我项目中唯一的贡献者,我只使用一台机器进行编码,所以我还没有解决任何棘手的合并或冲突。我使用TortoiseHg来执行签到和代码审查。

今天我写了一个脚本来自动化我的构建,但我遇到了一个问题。我使用c:\​​ dev进行编码,我使用c:\​​ build作为构建过程的根文件夹。

我的流程是: 1)获取最新代码 - 克隆repo或获取最新代码(如果已经克隆) 2)版本代码 3)构建代码 4)标记本地回购 5)将标签推送到bitbucket.org

我使用简单的批处理程序:

REM variable assignment, versioning, and error checking are excluded from this snippet

ECHO Getting code from remote repository...
IF EXIST .\%localrepo% (
    ECHO Pulling latest
    hg pull %localrepo%
) else (
    ECHO Cloning repository
    hg clone %remoterepo%
)
ECHO Done retrieving code.

ECHO Building code...
"c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" %solution% /build %solutionconfig%
ECHO Building complete.

cd %localrepo%
hg tag %version%
hg push
cd ..

这个脚本似乎实现了我的所有目标,一切顺利,直到我回到TortoiseHg并注意到修订版Graph现在显示两行 - 一行用于我的c:\ dev编码,另一行用于创建的标签c:\ build。中的构建脚本。

我没有足够的声誉来嵌入图片,但此链接会显示TortoiseHg报告的修订历史的屏幕截图 - http://i.imgur.com/2oNAR.png

稍微有点挣扎,我将新行(修订版38)合并回原版(修订版39),但当我再次运行构建脚本(修订版40)时,新标记继续在第二行。我尝试从dev存储库提交更改,但由于" push创建了注释远程头部"而该提交已中止。

我觉得我可能在构建脚本中做了一些根本错误的事情。我需要阅读的任何建议或主题?我找不到任何与Mercurial代码服务器相关的非MSBuild脚本解决方案。我不会因为任何原因使用批处理脚本 - 这只是一个简单而免费的解决方案,我希望它足够了。

1 个答案:

答案 0 :(得分:1)

hg clone会自动将您的工作目录更新为默认分支的提示,但hg pull不会。拉动后,使用hg pull -u更新当前分支的头部。