Git - 2个共享功能的项目

时间:2013-07-20 07:56:31

标签: git branch branching-and-merging

我有一个项目,我想克隆到一个新项目,它将与原始项目同步发展。

这两个项目最终将有不同的目标,但将分享未来的功能。

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

过去两年我只使用git,我不确定是否掌握了它。

如何让2个项目进化并与git共享一些功能?

1 个答案:

答案 0 :(得分:2)

这与Git没什么关系。您将使用任何源控制工具(包括无)处理这些相同的组织问题。这些问题仍然存在,因为它们很难回答。我不太了解你的项目给你一个推荐,但我会提供一些替代方案。这些选项并不相互排斥。

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

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

项目A和项目B都依赖于公共图书馆。您可以通过多种方式管理此依赖关系(依赖关系管理本身就是一个很大的主题)。公共库可以有一个构建版本,可以在某个地方发布工件,以后可以由项目A和项目B的构建版本使用。或者,您可以使用每个项目的子目录中的库源构建。 Git Submodules可以帮助您采用这种方法。