hg pull只能在当前工作目录下运行吗?

我有多个mercurial存储库,并使用hg clone在我们的文件服务器上创build备份。 现在我想编写一个batch file,通过在每个子目录上运行hg pull -u来每天更新一次。

我想保留这个备份脚本尽可能通用,所以它应该更新存储在我的H:\ BACKUPS \ REPOS文件夹中的所有备份存储库。 这是我的hgbackup.bat存储在同一个文件夹中:

for /f "delims=" %%i in ('dir /ad/b') do hg pull -u

问题是:hg pull似乎只能在当前的工作目录下运行,似乎没有切换到指定目标版本库。 正如我讨厌Windows批处理脚本,我想保持我的.bat尽可能简单,避免cd'ing到不同的目录。

任何想法如何可以在不同的目录上运行hg pull -u

使用-R -switch:

 hg pull -u -R /path/to/repository 

请参阅hg -v help pull所有hg pull命令行选项( -v开关指示帮助包含全局选项)。

由于我正在为自己的计算机工作,而不是一个批处理脚本,我在PowerShell中完成了这个问题(因为您提到它在服务器上,我假定PS是可用的)。 这将同时处理Subversion和Mercurial存储库:

 $path = "c:\users\mattgwagner\Documents\Code" foreach($fi in get-childitem $path) { if(test-path $path\$fi\.svn) { "Updating " + $fi + " via Subversion..." svn update $path\$fi } elseif(test-path $path\$fi\.hg) { "Updating " + $fi + " via Mercurial..." hg pull -u -R $path\$fi } }