使用已移动的子设备更新到旧的Mercurial版本

时间:2012-02-20 17:02:41

标签: mercurial subrepos mercurial-subrepos

我们的项目中有几个远程子目录,其地址最近已从http://host/path移至http://other_host/path。怎么可以回到上个月的修订版,Mercurial认为可以在http://host/path找到subrepo?

$ hg -v up -d 1/20/2012
Found revision 1091 from Fri Jan 20 10:22:29 2012 -0600
resolving manifests
abort: error: No connection could be made because the target machine actively refused it


$ hg --debug up -d 1/20/2012
Found revision 1091 from Fri Jan 20 10:22:29 2012 -0600
resolving manifests

<snip...>

subrepo merge 0f0f2b807811+ 0908d5249a6f 0f0f2b807811
  subrepo external/our_remote_repo: both sides changed, merge with https://old_host/external/our_remote_repo:c66cf52ce1f240193190cec392d889618c09f22b:hg
using https://old_host/external/our_remote_repo
sending capabilities command
using auth.old_host.* for authentication
abort: error: No connection could be made because the target machine actively refused it

2 个答案:

答案 0 :(得分:7)

根据documentation,你可以在hgrc中使用[subpaths]到remap such urls

这归结为以

的形式定义子存储库源位置重写规则
<pattern> = <replacement>

其中pattern是与源匹配的正则表达式,替换是用于重写它的替换字符串。组可以在模式中匹配并在替换中引用。例如:

http://server/(.*)-hg/ = http://hg.server/\1/

重写

http://server/foo-hg/ into http://hg.server/foo/.

答案 1 :(得分:-5)

你不能这样做。 Mercurial在州内返回,它正好在这个版本中(subrepo的URL,subrepo中的修订版)