19

我有多个 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 似乎只对当前工作目录进行操作,似乎没有指定pull 的目标仓库的开关。因为我讨厌 Windows 批处理脚本,所以我想让我的 .bat 尽可能简单,并避免 cd'ing 到不同的目录。

有什么想法可以hg pull -u在不同的目录上运行吗?

4

2 回答 2

36

使用-R- 开关:

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

查看hg -v help pull所有命令行选项hg pull-v开关告诉帮助包括全局选项)。

于 2009-11-23T09:49:02.213 回答
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
    }
}
于 2010-09-09T19:42:31.520 回答