2013-07-20 36 views
2

我有一个项目,我想克隆到一个新的项目,将与原来的同时进化。Git-2项目共享功能

两个项目最终都会有不同的目标,但会共享未来的功能。

如果我保留一个具有2个分支的存储库,恐怕这可能导致太多差异。
如果我将项目拆分为2个存储库,我不确定在这之间合并功能是多么容易。

我在过去的2年里一直只使用git,我不确定是否已经掌握了它。

我该如何让2个项目发展并与git共享某些功能?

+0

您是否考虑过子模块? [Pro-Git Book:6.6 Submodules](http://git-scm.com/book/en/Git-Tools-Submodules) – Chilledrat

回答

2

这对Git来说确实很少。您将使用任何源代码管理工具(包括无)来面对这些相同的组织问题。这些问题依然存在,因为它们很难回答。我不太了解你的项目给你一个建议,但我会提供一些替代方案。这些选项不是相互排斥的。

  • 不同分支在同一版本库 - 这实际上是具有不同之处在于它们克隆同时2个不同的存储库。两个分支之间的合并不会有任何意义,所以确保这两个项目的源代码没有任何优势。不要这样做。
  • One Repository;区分构建时间 - 保留一个存储库,其中包含一个包含2个构建的master分支。您可以从同一个来源构建项目A或项目B.任何共享源的功能都将从相同的文件中构建。任何时候你做出改变,你都必须确保这两个版本仍然有效,并且你对一个项目的改变没有打破另一个。因为您只使用一个项目,所以版本控制,发布和分支更容易。
  • One Repository;区分运行时间 - 与以前一样,只有一个生成单个生成输出的生成,而不是2个独立生成。功能可以在运行时启用和禁用。如果您不想将它们作为不同的产品出售,您可以通过菜单,配置文件或许可方案来实现。
  • 三个存储库 - 您有2个可交付成果和一些共享的代码。将这些通用代码分解成您也维护的独立库。那么你有一个依赖关系图如下所示:

    +-----------+ +-----------+ 
    | Project A | | Project B | 
    +-----------+ +-----------+ 
         \  /
          \  /
         +----------------+ 
         | Common Library | 
         +----------------+ 
    

两个项目A和项目B取决于公共图书馆。您可以通过多种方式管理这种依赖关系(依赖关系管理本身就是一个巨大的主题)。通用库可以有一个构建版本,可以在某处发布一个工件,以供以后的工程A和工程B的构建使用。或者,您可以在每个项目的子目录中使用库的源代码进行构建。 Git Submodules可以帮助这种方法。

+0

如果您的公共库不合理稳定,请勿使用子模块 – mnagel