Mercurial:两个独立的回购有点相关(是的,我感到困惑)

时间:2010-05-28 15:28:08

标签: mercurial cvs repository

我有一个本地存储库,我们称之为ONE。 ONE是实际的程序。 这是一个Android程序,如果由于某种原因它很重要。

我有一个远程存储库,我们称之为EXT。 EXT有点像一个库,由ONE使用。

ONE有一个复杂的目录结构,由android强制执行。主要来源是src/bla/bla/ONE。由于ONE使用EXT,所以我必须在那个目录旁边创建另一个目录,即src/bla/bla/EXT

认为希望将它们分成两个存储库,但我需要它们实际上在同一个目录结构中来编译ONE。

目前我刚刚创建了一个符号链接,但是我想知道是否有更好的方法,它使用了一些hg功能。

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:1)

我不是这方面的专家,但我不认为子存储库在这种情况下有效。

您有两个具有相同深层嵌套目录结构的项目:

项目“ONE”:

ONE
    /src
        /bla
            /bla
                /ONE

项目“EXT”

EXT
    /src
        /bla
            /bla
                /EXT

编译这些项目时,您需要以下结构:

Compile Project
    /src
        /bla
            /bla
                /ONE
                /EXT

或类似的东西 - 基本上两个源树组合在一个“src”下。

由于您无法检出存储库的一部分,因此无论您在何处创建子存储库,都将获得完整的“EXT”目录。所以,如果你在“ONE”旁边做一个subrepo,你最终会得到:

Combined Project
    /src
        /bla
            /bla
                /ONE
                /src
                   /bla
                       /bla
                           /EXT

你所追求的是“部分克隆”,它还不存在。

https://www.mercurial-scm.org/wiki/PartialClone

我认为操作系统链接是可行的方法。

希望这有帮助。

答案 2 :(得分:0)

使用hg subrepos。例如:

$ git init ONE-proj
$ cd ONE-proj
$ mkdir -p src/bla/bla/ONE
$ ... # commit your initial project files for ONE
$ echo src/bla/bla/EXT = /path/to/hg/repository/EXT > .hgsub
$ hg add .hgsub
$ hg clone /path/to/hg/repository/EXT src/bla/bla/EXT
$ hg commit