Mercurial 汞分批拉动操作
我有几个存储库供个人使用,我将它们备份到主服务器上。在每个存储库上执行拉操作需要相当多的时间 mercurial是否支持多个存储库的批量拉取?如果是,我该怎么做?如果没有,是否有一个相对简单的解决方案Mercurial 汞分批拉动操作,mercurial,batch-file,pull,Mercurial,Batch File,Pull,我有几个存储库供个人使用,我将它们备份到主服务器上。在每个存储库上执行拉操作需要相当多的时间 mercurial是否支持多个存储库的批量拉取?如果是,我该怎么做?如果没有,是否有一个相对简单的解决方案 我使用的是Windows和TortoiseHg(但我在使用命令行方面没有问题)。如果存储库是静态的,一个简单的解决方案是编写一个批处理文件从所有这些存储库中提取。但是没有,mercurial不直接支持这一点。为什么不在主服务器上使用钩子来推送到从服务器?将此添加到项目的hgrc [hooks] c
我使用的是Windows和TortoiseHg(但我在使用命令行方面没有问题)。如果存储库是静态的,一个简单的解决方案是编写一个批处理文件从所有这些存储库中提取。但是没有,mercurial不直接支持这一点。为什么不在主服务器上使用
钩子
来推送到从服务器?将此添加到项目的hgrc
[hooks]
changegroup = hg push -f https://hg.server2.com/TheRepo
关于hgrc
帮助文件中的changegroup
供参考:
变更组:
添加变更组后运行
通过推、拉或解开。身份证
第一个新变更集位于$HG_节点中。
发生更改的URL位于中
$HG_URL
因此,当服务器上出现更改组时,它将hg将更改推送到另一台服务器。我有一个顶级存储库,其中有几个批处理文件和一个包含所有存储库的文本文件
i、 e.repolist.txt
Repo1
# Comment
Folder\Repo2
Repo3
批处理文件hgrpull.bat如下所示:
REM First pull top level repository to get updated repolist etc
hg pull --update --quiet
REM Find path to server repository
FOR /F %%x IN ('hg showconfig paths.default') DO SET HGSERVER=%%x
REM Now pull or clone each repository
FOR /F "delims=; eol=#" %%x IN (repolist.txt) DO (
If EXIST "%%x\.hg" (
ECHO Pull %%x
hg pull --update --quiet --repository "%%x"
) ELSE (
ECHO Clone %%x
IF NOT EXIST "%%x" MKDIR "%%x"
hg clone --pull "%HGSERVER%\%%x" "%%x"
)
)
我还获得了一些批处理文件,用于对所有存储库执行操作。(状态/输入/输出等)。它们都基于以下hgr.bat:
FOR /F "delims=; eol=#" %%x IN (repolist.txt) DO (
ECHO ** %%x
hg %1 --repository "%%x" %2 %3 %4 %5 %6
)
拉/克隆所有存储库:hgrpull
检查所有存储库的状态:hgr st-mard