我是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?
答案 0 :(得分:3)
如果没有传入/传出更改集,则hg incoming
和hg outgoing
的退出代码为1
,否则为0
,这意味着您的测试是向后的。 (自问这个问题以来,已经记录了退出代码,现在可以在hg help incoming
和hg help outgoing
中找到退出代码。)
此外,同时执行hg incoming
和hg pull
工作两次:您应该只使用hg pull
。 hg incoming
的帮助说:
对于远程存储库,使用
--bundle
可以避免下载 如果传入后跟拉动,则变换集两次。
所以你实际上是使用两倍的带宽下载所有变更集。