代码之家  ›  专栏  ›  技术社区  ›  o0'.

Mercurial:两个独立的回购有点关联(是的,我很困惑)

  •  1
  • o0'.  · 技术社区  · 14 年前

    我有一个本地存储库,我们称之为本地存储库。一个是实际程序。 这是一个Android程序,以防它出于某种原因而变得重要。

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

    其中一个具有复杂的目录结构,由Android授权。主要来源是 src/bla/bla/ONE . 因为有人使用ext,所以我必须在它旁边创建另一个目录,也就是 src/bla/bla/EXT .

    认为 希望将它们在两个存储库中分开,但我需要它们实际位于同一目录结构中才能编译一个存储库。

    目前,我只是创建了一个符号链接来实现它,但是我想知道是否有更好的方法来实现它,它使用了一些hg特性。

    3 回复  |  直到 14 年前
        1
  •  1
  •   Vadim Kotov First Zero    7 年前

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

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

    “一”工程:

    ONE
        /src
            /bla
                /bla
                    /ONE
    

    “Ext”项目

    EXT
        /src
            /bla
                /bla
                    /EXT
    

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

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

    或者类似的东西——本质上两个源树合并在一个“SRC”下。

    由于无法签出部分存储库,因此无论在何处创建子存储库,都将获得完整的“ext”目录。因此,如果在“一”旁边创建一个子报告,最终会得到:

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

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

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

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

    希望这有帮助。

        2
  •  4
  •   Community basarat    7 年前
        3
  •  0
  •   Vadim Kotov First Zero    7 年前

    使用 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