我有多个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
的任何想法吗?
答案 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
}
}