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/
,然后从中制作本地克隆).
您可以在.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
克隆时路径被重新映射到.