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

时间:2009-11-23 09:43:52

标签: windows mercurial backup pull

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

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

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

问题:hg pull似乎只对当前工作目录进行操作,似乎没有开关指定拉动的目标存储库。由于我讨厌Windows Batch Scripting,我想让我的.bat尽可能简单,并避免cd到不同的目录。

有关如何在不同目录上运行hg pull -u的任何想法吗?

2 个答案:

答案 0 :(得分:35)

使用-R - 开关:

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

有关hg -v help pull的所有命令行选项,请参阅hg pull-v开关告诉帮助包含全局选项)。

答案 1 :(得分:0)

由于我正在为自己的计算机工作的脚本,而不是批处理脚本,我发现了这个问题,我在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
    }
}