子模块在多个项目中共享

时间:2014-01-23 16:16:47

标签: eclipse git git-submodules

我在Git中有很多相互依赖的项目 这些项目中的每一个都解决了不同的问题,并且对应于不同的git存储库 最后,我的项目架构最终会有很多继承,我想分解重复的条目。

简而言之,我的项目层次结构可以这样查看:

Project 1

Project 2
    \
     - Project 1

Project 3
    \
     - Project 1

Project 4
    \
     - Project 2
     - Project 3

所以Project 1被重复(关于Project 4)作为Project 2Project 3的子模块。

此外:在Eclipse中,我只能导入Project 1一次,所以我必须选择,然后可能必须更新依赖项(例如Eclipse ADT的Android插件,库项目的硬编码路径,使用相对路径:s)。

更糟糕的是,对我导入的项目所做的更改,修改了导入它的存储库,以便进行同步'工作区,我必须提交修改,然后推送它们并将它们拉到第二个无法导入项目的存储库中。


有没有人能解决这样的问题? 我想要的是这样的:

aFolder
    \
     - Project 1
     - Project 2 --> has submodule Project 1
     - Project 3 --> has submodule Project 1
     - Project 4 --> has submodule Project 2 and Project 3

这样,Project 2Project 3指向同一个存储库,然后在Eclipse中只导入一次并始终同步。

不幸的是,git不允许使用路径../mySubmodule创建子模块,因为../在存储库之外...

1 个答案:

答案 0 :(得分:0)

我有类似的需求,不得不重组我的存储库。

我使用Visual Studio而不是eclipse,所以我想澄清我使用的术语。

在VS中,“解决方案”由1 +“项目”和配置内容(如依赖项)组成。 “项目”是生成dll或exe的单元的集合。

存储库的布局如下所示:

solution "Solution 1" [repository]
    -> project "Project 1"  [submodule]

solution "Solution 2" [repository]
    -> project "Project 1"  [submodule]
    -> project "Project 2"  [submodule]
    (dependency "Project 2" depends on "Project 1" is stored directly in "Solution 2")

solution "Solution 3" [repository]
    -> project "Project 1"  [submodule]
    -> project "Project 3"  [submodule]
    (dependency "Project 3" depends on "Project 1" is stored directly in "Solution 3")

solution "Solution 4" [repository]
    -> project "Project 1"  [submodule]
    -> project "Project 2"  [submodule]
    -> project "Project 3"  [submodule]
    (dependency "Project 2" depends on "Project 1" is stored directly in "Solution 4")
    (dependency "Project 3" depends on "Project 1" is stored directly in "Solution 4")

所以你最终会得到两倍的存储库:

  • “Project 1”
  • “Project 2”
  • “Project 3”
  • “Project 4”
  • “解决方案1”
  • “解决方案2”
  • “解决方案3”
  • “解决方案4”

存储库,包含代码和“holder”存储库,包含依赖项和代码作为子模块。