【问题标题】:Mercurial: two separate repos somewhat related (yes I'm getting confused)Mercurial:两个独立的回购有些相关(是的,我很困惑)
【发布时间】:2010-05-28 15:28:07
【问题描述】:

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

我有一个远程存储库,我们称之为 EXT。 EXT 在某种程度上是一个库,供 ONE 使用。

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

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

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

【问题讨论】:

    标签: mercurial cvs repository


    【解决方案1】:

    【讨论】:

    • +1 用于子存储库。这是一个关于 hg 子存储库的wiki manual。
    【解决方案2】:

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

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

    项目“ONE”:

    ONE
        /src
            /bla
                /bla
                    /ONE
    

    项目“EXT”

    EXT
        /src
            /bla
                /bla
                    /EXT
    

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

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

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

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

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

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

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

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

    希望这会有所帮助。

    【讨论】:

    • 哦 :( 谢谢。顺便说一句,它比这更复杂:一个项目还包括树上的文件。
    【解决方案3】:

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

    【讨论】:

    • 这行得通吗?你不会在 src/bla/bla/ONE 和 src/bla/bla/ONE/src/bla/bla/EXT 中得到“ONE”和“EXT”吗?
    • 这些命令是在仓库的根目录下执行的,所以一切都是相对的。
    猜你喜欢
    • 2011-05-30
    • 1970-01-01
    • 2011-04-24
    • 2015-04-02
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 2012-08-04
    相关资源
    最近更新 更多