fork与分支是否为目标多产品版本的插件?

时间:2018-02-14 16:45:34

标签: git git-fork

我正在为商业产品构建一些插件。

我的插件可以定位商业产品的多个版本。

每个版本的插件都有细微差别。大约95%的代码是相同的。很少有功能需要特定版本的产品,并且必须在不同版本之间更改某些路径。

我想将我的资源存储在git存储库中,但我不知道是否应该在单独的分支或单独的分支中处理插件的版本。

第一种方法:与这些分支的一个回购:

  • dev-v1(产品V1的dev分支)
  • master-v1(产品V1的主分支)
  • dev-v2(产品V2的dev分支)
  • master-v2(产品V2的主分支)
  • bugfix / XXXX针对错误修复的特定分支。将不得不为每个产品版本合并两次
  • 功能/ XXXX特定分支用于新功能。将不得不为每个产品版本合并两次

这应该有效,但我担心有一堆乱七八糟的分支

第二种方法:两次回购(repoV1和repoV2)

  • dev的
  • 修正错误/ XXXX
  • 特征/ XXXX

并依靠PR将代码从一个版本的产品传递到另一个版本

有什么建议吗?

PS:如果重要的话,有点背景:

我正在构建可以定位到SP2013或SP2016的SharePoint插件。大多数代码都是使用Visual Studio构建的C#代码。

差异主要是这些:

  • 引用程序集的版本。这包括csproj文件中的引用以及aspx和ascx文件中的一堆引用(以及一些其他文件)
  • 某些工件仅在一个版本或另一个版本中提供,不应包含在两个版本中

2 个答案:

答案 0 :(得分:1)

如果您可以将两个版本之间的差异分成数据,那么第三个选项是为每个版本配置一个配置文件。这将允许您使用两个版本的所有代码保留一个repo。

答案 1 :(得分:1)

如果存储库中的所有代码属于同一发布周期,则Gitflow非常有用。如果您在独立发布周期中有一些可交付成果,那么它也不会起作用。

我每个存储库只获得一个发布周期的首选方法是确保可以使用同一分支中的代码构建所有版本的插件。例如。有一个包含95%公共代码的项目,以及包含差异的小项目,导入公共项目并构建插件。这是否可行取决于您的代码。 Visual Studio是否有类似构建配置的东西,通常用于从同一代码创建调试或发布,32位或64位可交付成果?

另一种方法是按照您的建议在同一个存储库中复制开发和主分支。当然,您可以克隆上游存储库两次,并在每个克隆上执行git flow init,并为开发和主分支的名称提供不同的选择。请注意,您不仅需要两次合并功能分支,而且还需要启动它们两次。因为git flow feature start来自您的两个开发分支中的任何一个,并且git flow feature finish删除了分支,所以您还需要两个功能分支,并从一个到另一个中挑选您的提交。

您的另一个提议,即分配存储库,还需要从一个存储库中挑选您的提交到另一个存储库。但是你可以运行常规的gitflow流程。

或者你不能使用gitflow。例如。为您仍然支持的所有旧版本保留一个分支,为最新版本开发,以及对旧版本的后端口更改。这不是谷歌对Android源代码所做的事情吗?