4

我经常离线。

所以通常,我使用一个本地克隆作为功能、错误等的“中心”。

hg clone local-hub bug-123

离线工作。凉爽的。

如果该项目包含远程子存储库,我可以使用类似的工作流程吗?

因为,如果 .hgsub 说

sub/shared = http://server/hg/shared

汞克隆 说

abort: error: getaddrinfo failed

请注意,一旦创建了克隆(连接时),pushpull使用子存储库中的路径hgrc(而不是 中的位置.hgsub)。所以我可以把它指向一个本地克隆,一切都很酷。

但是clone看着.hgsub(因为它应该)。因此,如果“祝福”子存储库在服务器上,我无法离线创建新的克隆,即使我需要的文件就在那里。

这是个问题,对吧?

4

2 回答 2

6

理想情况下,设置项目的人在他们的 .hgsub 文件中使用相对 URL,如下所示:

sub/shared = ../shared

然后,当然,实际上使 shared 成为主 repo 的兄弟。然后,只要您克隆了主 repo 和 subs(作为兄弟姐妹),那么一切都会好起来的。

如果他们在 .hgsub 文件中使用了绝对 URL,您可以使用 .hgrc 中的子路径部分来解决它,如下所示:

[subpaths]
http://server/hg/shared = ../shared

它在您的客户端中提供了一个翻译层。

于 2011-03-03T05:50:34.547 回答
2

使用子存储库的规范方法是X = X在文件中包含路径.hgsub

sub/shared = sub/shared

这样一来,克隆在结构上看起来就像原来的一样——因此您可以使用克隆来制作更多(本地!)克隆。

但是,这并不总是可行的,例如,Bitbucket 不允许您在其服务器上创建嵌套存储库。在这种情况下,文件中的../X样式路径.hgsub更好,您可以使用subpaths 配置部分将这些路径转换为您可以在本地使用的路径。

于 2011-03-08T09:41:56.647 回答