回购中的Mercurial回购

时间:2010-06-12 13:12:40

标签: mercurial subrepos

是否可以在现有的mercurial存储库中创建一个mercurial存储库?

我们的想法是将存储库的子目录作为不同的存储库来处理,你是如何做到的?

我不是在谈论subrepos(至少,如果我理解了subrepos的目的......),但如果这是subrepos的存在方式,那我就错了,我会尽力做到: )

由于 〜秋

编辑:为了更清楚,我想知道在没有指定modules / subrepos的情况下,将存储库放在另一个存储库中会发生什么,实践和含义。 换句话说:如果我这样做会发生什么:

hg init globalRepo
hg init globalRepo/subRepo

并按原样使用这两个存储库?

3 个答案:

答案 0 :(得分:15)

效果很好。早在Mercurial 1.3中添加了subrepo支持之前,很多人都将他们的整个主目录保存在一个mercurial repo中,用于跟踪他们的.bashrc文件等。然后在他们的家庭目录中他们有许多其他回购的克隆。

每当你调用mercurial(没有-R选项)时,它会在当前目录中查找.hg目录,然后继续上去目录,直到找到它为止。因此,如果您在回购中的回购中,您的命令将始终作用于您所在的最里面的回购。

需要注意的是,您要确保不要将文件添加到最终位于内部存储库内的外部存储库中。然后你将有两个repos更新相同的文件。

答案 1 :(得分:4)

正如您在此SO question中所看到的,您可以制作这种嵌套hg init,即使它通常用于定义 subRepo (其中不是你想要的。)

通常它应该作为两个独立的回购,但我建议在globalRepo中添加hgignore规则,以便完全忽略subRepo内容。

答案 2 :(得分:0)

以下是嵌套存储库的some docs