具有子存储库和脱机克隆的Mercurial工作流程?

时间:2011-03-03 05:35:47

标签: mercurial workflow offline subrepos

我离线了很多。

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

hg clone local-hub bug-123

脱机工作。凉。

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

因为,如果.hgsub说

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

hg clone说

abort: error: getaddrinfo failed

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

但是clone关注.hgsub(正如它应该的那样)。因此,如果服务器上存在“受祝福”的subrepo,我就无法离线创建新的克隆,即使我需要的文件就在那里。

这是一个问题,对吧?

2 个答案:

答案 0 :(得分:6)

理想情况下,任何设置项目的人都会在其.hgsub文件中使用相对URL,如下所示:

sub/shared = ../shared

然后,当然,实际上是共享主要回购的兄弟姐妹。然后只要你克隆了主要的回购和潜艇(作为兄弟姐妹),那么一切都会成功。

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

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

在您的客户端中提供翻译层。

答案 1 :(得分:2)

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

sub/shared = sub/shared

这样克隆在结构上看起来就像原始克隆一样 - 所以你可以使用克隆来制作更多(本地!)克隆。

然而,这并不总是可行的,例如,Bitbucket不会让你在他们的服务器上创建嵌套的存储库。在这种情况下,../X文件中的.hgsub样式路径更好,您可以使用subpaths configuration section将这些路径转换为可在本地使用的路径。