在多个项目之间共享核心代码库

时间:2012-04-02 20:07:35

标签: version-control mercurial dvcs mercurial-subrepos

我们有几个围绕共同核心构建的产品线,目前使用外部维护它们在SVN中。转向mercurial,很自然地转向使用hg sub-repositories

事情的核心是相当大的(可能是> GB,从SVN回购判断),典型的开发人员有时希望同时使用几种产品,比如说3-4。

我是否正确地理解它通常意味着开发人员会为每个开发人员复制3-4次核心及其整个历史记录? 此外,如果开发人员希望在另一个产品中执行一些简单的操作,那么就意味着必须首先提取核心,即使它已经在客户端可用(多次......)?

1 个答案:

答案 0 :(得分:0)

为了真正共享子存储库(以及>其工作副本),您可以使用share extension。但是,这使得克隆过程有点违反直觉:

hg clone -U remote_core core
hg clone -U remote_projectA projectA
cd projectA
hg share ../core core
hg update
cd ..
hg clone -U remote_projectB projectB
cd projectB
hg share ../core core
hg update

等等。但是我警告你,这个设置会让你不止一个头疼。在工作中,我们有类似的设置,但共享子存储库为每个使用它的项目都有一个分支(不是命名分支,但是克隆分支,专用主存储库)。这样,项目可以独立修改共享代码,同时仍然可以轻松地合并它们。