mercurial windows批处理文件,用于将更改提取到多个存储库

时间:2009-05-26 00:16:25

标签: windows mercurial batch-file

我是Windows上一个善变的用户,我正在尝试编写一个批处理文件,以检查存储在公共文件夹中的多个存储库的传入更改(即主文件夹下可能有10个左右的小型存储库) 。我有以下批处理文件,成功遍历多个存储库并运行hg传入。但是当找到具有远程更改的存储库时,我似乎无法执行hg -pull -u。

   FOR /D /r %%G in (".hg*") DO (
    @echo Processing: %%G
    cd /d %%G\.. 
    hg incoming
    IF NOT ERRORLEVEL 0 (
        echo Pulling changes from the server
        hg pull -u
    )
    cd..
    )

我很确定If语句存在问题。 hg incoming似乎没有可由ERRORLEVEL解释的返回值。这是正确的方法还是我应该使用python?

1 个答案:

答案 0 :(得分:3)

如果没有传入/传出更改集,则hg incominghg outgoing的退出代码为1,否则为0,这意味着您的测试是向后的。 (自问这个问题以来,已经记录了退出代码,现在可以在hg help incominghg help outgoing中找到退出代码。)

此外,同时执行hg incominghg pull工作两次:您应该只使用hg pullhg incoming的帮助说:

  

对于远程存储库,使用--bundle可以避免下载   如果传入后跟拉动,则变换集两次。

所以你实际上是使用两倍的带宽下载所有变更集。