我有一个本地存储库,我们称之为ONE。 ONE是实际的程序。 这是一个Android程序,如果由于某种原因它很重要。
我有一个远程存储库,我们称之为EXT。 EXT有点像一个库,由ONE使用。
ONE有一个复杂的目录结构,由android强制执行。主要来源是src/bla/bla/ONE
。由于ONE使用EXT,所以我必须在那个目录旁边创建另一个目录,即src/bla/bla/EXT
。
我认为希望将它们分成两个存储库,但我需要它们实际上在同一个目录结构中来编译ONE。
目前我刚刚创建了一个符号链接,但是我想知道是否有更好的方法,它使用了一些hg功能。
答案 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