如何在不再提取subrepos的情况下制作本地克隆?

Nic*_*tin 5 mercurial clone dvcs subrepos

我经常与Mercurial合作,保留我的上游克隆的本地商店,然后在本地再次克隆我的实际工作环境:

$ cd /clones
$ hg clone ssh://external-repo.example.com/some/repo/path/foo
$ cd ~/Development
$ hg clone /clones/foo
Run Code Online (Sandbox Code Playgroud)

这对我来说特别有用,因为我经常想在飞机等上制作新的克隆,我无法访问互联网.但是,当原始克隆包含子目录时,这不起作用 - .hgsubstate文件的存在意味着hg将始终发送到互联网而不是获取本地克隆版本(即使它们是相同的).有没有办法让本地克隆复制文件而无需上网?

这个问题有一个可能有效的答案,但对于长期管理来说似乎非常不幸(删除.hgsubstate克隆中的文件/clones/,然后从中制作本地克隆).

Mar*_*ler 5

您可以在.hgsub文件中使用"普通"子存储库路径,如下所示:

foo = foo
bar = bar
Run Code Online (Sandbox Code Playgroud)

这是推荐的设置.设置布局的优点是克隆您克隆的存储库具有相同的结构.因此,您可以在飞机上克隆克隆.

或者,您可以使用该[subpaths]设置将URL重新映射到本地路径.这可以让你添加

[subpaths]
http://server/(.*) = /clones/libs/\1
Run Code Online (Sandbox Code Playgroud)

到您的~/.hgrc文件,然后您将看到/clones/libs克隆时路径被重新映射到.