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

Mercurial:Build脚本在标记提示时创建第二行,mercurial,build-automation,versioning,Mercurial,Build Automation,Versioning,我已经找到了其他与标记和构建脚本相关的Mercurial帖子,但我没有找到我看到的特定问题 我已经使用bitbucket.org托管的Mercurial服务器几个星期了。我的工作流程是编写代码,推送到本地回购,然后推送到bitbucket。我是我的项目中唯一的贡献者,我只使用一台机器进行编码,所以我还没有任何棘手的合并或冲突需要解决。我使用龟甲来执行签入和代码检查 今天我写了一个脚本来自动化我的构建,但是我遇到了一个问题。我使用c:\dev进行编码,并使用c:\build作为构建过程的根文件夹

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

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

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

我的过程是: 1) 获取最新代码——克隆回购协议,如果已经克隆,则获取最新代码 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 ..
这个脚本似乎实现了我的所有目标,一切都进行得很顺利,直到我回到了Ortoisehg,并注意到修订图现在显示了两行——一行是我的c:\dev编码,另一行是由c:\build中的构建脚本创建的标记

我没有足够的声誉来嵌入图片,但这个链接将显示一个由OrtoisehG报告的修订历史的屏幕截图-

经过一点努力,我将新行(修订版38)合并回原始行(修订版39),但当我再次运行构建脚本(修订版40)时,新标记继续出现在第二行。我试图从dev存储库提交更改,但由于“push创建note remote head”,该提交被中止


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

hg clone
会自动将您的工作目录更新到默认分支的顶端,但
hg pull
不会。使用
hg pull-u
在拉取后更新当前分支的头。

hg clone
会自动将工作目录更新到默认分支的顶端,但
hg pull
不会。使用
hg pull-u
在拉取后更新当前分支的头。

谢谢,@Mark!这正是我想要的。谢谢你,马克!这正是我想要的。