2009-05-26 85 views
1

我是Windows上的一个mercurial用户,我试图编写一个批处理文件来检查存储在公共文件夹中的多个存储库的传入更改(即可能有10个或者在主文件夹下的小型水银回购)。我有以下批处理文件成功地遍历多个存储库并运行hg传入。但是,当我发现有一个远程更改的存储库时,我似乎无法执行hg -pull -u。mercurial windows批处理文件用于将更改提取到多个存储库

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传入似乎没有可以被ERRORLEVEL解释的返回值。这是正确的方法,还是应该使用python?

+0

我已经结束了创建两个批处理文件。一个执行hg pull,另一个执行hg更新。这似乎是最安全的解决方案,因为hg pull的输出表明是否需要合并或可以简单更新回购。非常感谢您的回复。 – Bluebill 2009-05-26 12:11:36

回答

3

hg incominghg outgoing退出代码是1如果没有呼入/呼出的变更和0否则这意味着你的测试是倒退。 (退出代码已记录在案,因为这问题有人问,现在可在hg help incominghg help outgoing被发现。)

而且,这样做既hg incominghg pull做这项工作两次:你只需要使用hg pull。为hg incoming帮助说:

对于远程仓库,使用--bundle避免下载 的变更两次,如果传入的后面拉。

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

+0

我的印象是,hg传入和传出只是预览将会被拉/推而不实际拉动所有变化集。如果我理解正确hg传入抓取变更集,并完成时抛弃他们?如果是这种情况,那么简单地使用hg pull -u就足够了。 – Bluebill 2009-05-26 11:59:20

相关问题