使用子存储库时从同事处拉出

时间:2010-07-29 16:54:58

标签: mercurial subrepos

我们有几个共享库作为父回购中的子目录存在。如果一个人克隆父回购,它看起来像:

/ParentRepo
---- .hg
---- .hgsub
---- .hgsubstate
---- SharedSub1
---- SharedSub2
---- SharedSub3
---- SharedSub4
---- ParentRepo.sln

.hgsub看起来像这样:

SharedSub1 = http://ourfogbugz.us.com/..../SharedSub1
SharedSub2 = http://ourfogbugz.us.com/..../SharedSub2
SharedSub3 = http://ourfogbugz.us.com/..../SharedSub3
SharedSub4 = http://ourfogbugz.us.com/..../SharedSub4

每个subrepo的hgrc看起来像这样:

default = http://ourfogbugz.us.com/..../SharedSub1

非常标准的东西。

但是!

使用此设置,如何在不使用中央服务器作为中介的情况下让同事从另一个人那里拉出来?因此,同事A确实'hg服务',而B确实'hg pull http://coworkerA.us.com:8000'......但这会失败,因为hgsub文件仍然指向中央服务器,因此B只会得到更改来自中央服务器,并且不会从中央服务器上不存在的A的子版本中获得任何更改。

如果中央服务器关闭或无法访问,则会进一步复杂化。人们无法使用subrepos直接相互拉扯!

如何使用subrepos完成同事之间的拉动?编辑hgrc和hgsub文件是不可能的,因为你必须为每个子程序(我们有大约20个)和每个同事执行一次!

我还在Kiln StackExchange上发布了这个问题,以吸引更广泛的受众:http://kiln.stackexchange.com/questions/1780/pulling-from-a-co-worker-when-using-subrepositories

1 个答案:

答案 0 :(得分:2)

您可以(并且通常应该)在.hgsub entires中使用相对路径。如果这些行是:

SharedSub1 = ../SharedSub1
SharedSub2 = ../SharedSub2
SharedSub3 = ../SharedSub3
SharedSub4 = ../SharedSub4

然后你可以自己从中心,朋友或本地克隆克隆。