1

我一直在寻找其他与标签和构建脚本相关的 Mercurial 帖子,但我没有找到我看到的特定问题。

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

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

我的过程是: 1)获取最新代码——克隆 repo 或者如果它已经克隆则获取最新 2)版本代码 3)构建代码 4)标记本地 repo 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 并注意到修订图现在显示两行——一行用于我的 c:\dev 编码,另一行用于构建脚本创建的标签在 c:\build.

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

经过一番挣扎,我将新行(修订版 38)合并回原来的(修订版 39),但是当我再次运行构建脚本(修订版 40)时,新标签继续在第 2 行。我尝试从开发存储库提交更改,但由于“推送创建注释远程头”而中止提交。

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

4

1 回答 1

1

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

于 2012-08-19T01:56:54.183 回答