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

mos*_*ald 7 mercurial subrepos mercurial-subrepos

我们的项目有几个在IT远程subrepos,他们的地址最近从移动http://host/pathhttp://other_host/path.一个人怎么能回到上个月的修订版,Mercurial认为可以找到subrepo http://host/path

$ 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
Run Code Online (Sandbox Code Playgroud)

Mic*_*der 8

根据文档,您可以在hgrc中使用[subpaths] 重新映射此类URL.

这归结为定义子库存源位置以形式重写规则

<pattern> = <replacement>
Run Code Online (Sandbox Code Playgroud)

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

http://server/(.*)-hg/ = http://hg.server/\1/
Run Code Online (Sandbox Code Playgroud)

重写

http://server/foo-hg/ into http://hg.server/foo/.
Run Code Online (Sandbox Code Playgroud)