我经常与 Mercurial 合作,在本地存储我的上游克隆,然后在本地再次为我的实际工作环境克隆:
$ cd /clones
$ hg clone ssh://external-repo.example.com/some/repo/path/foo
$ cd ~/Development
$ hg clone /clones/foo
这对我来说特别有用,因为我经常想在飞机上制作新的克隆,等等,在那里我无法访问互联网。但是,当原始克隆包含子存储库时,这不起作用 -
.hgsubstate
的存在文件意味着 hg
将始终上网,而不是获取本地克隆修订版(即使它们相同)。有没有办法让本地克隆复制文件而无需上网?This question有一个可能有效的答案,但对于长期管理来说似乎非常不幸(删除
.hgsubstate
中克隆中的 /clones/
文件,然后从中制作本地克隆)。
最佳答案
您可以在 .hgsub
中使用“平凡”的子存储库路径。像这样的文件:
foo = foo
bar = bar
这是recommended setup .设置布局的优点是克隆具有 相同结构作为您从中克隆的存储库。因此,您可以在飞机上克隆您的克隆。
或者,您可以使用
[subpaths]
设置将 URL 重新映射到本地路径。这让你添加[subpaths]
http://server/(.*) = /clones/libs/\1
给您的
~/.hgrc
文件,然后你会看到路径被重新映射到 /clones/libs
当你克隆。
关于mercurial - 如何在不再次拉取 subrepos 的情况下制作本地克隆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9427988/