如何对支持不同依赖版本的多个发布分支进行版本控制?

Posted

技术标签:

【中文标题】如何对支持不同依赖版本的多个发布分支进行版本控制?【英文标题】:How can I version multiple release branches supporting different depedency versions? 【发布时间】:2020-12-31 18:01:09 【问题描述】:

我的组织有一个图书馆,它依赖于 4 个不同的东西:

librdkafka 库 ext-rdkafka php 扩展 PHP 语言 Laravel 框架

我们希望支持所有当前支持的版本。目前最后三项各有 3 个支持的版本,总计 27 种组合(并非真的,例如 Laravel 的最新版本需要最新的 PHP 版本,但我们假设最差)。

考虑到这种情况,我们将有 27 个发布分支。我的问题是我们应该如何对它们进行版本控制以使它们保持在“相等”的水平?

例如,如果我们的下一个版本是 1.5,我们就不能有 1.5.1、1.5.2 等,因为它们只是支持不同的依赖版本,它们并不更新。该代码提供完全相同的功能。我浏览了网络并没有找到任何关于这种情况的文章。源材料和示例表示赞赏。

【问题讨论】:

我很确定,对于这样的场景,您希望从同一个源代码树而不是不同的分支构建所有版本。 IE。应该有 一个 1.5.1 分支/标签,并且构建中的某些东西应该能够从那个源树构建这 27 个(最坏的情况下)组合。这是否可行取决于构建所有内容所需的修改类型。 这并不总是可能的。例如:Laravel 8 需要 PHP 7.4,而 PHPUnit setUp() 方法的签名不同,与 PHP 7.2 不兼容。 您仍然可以拥有不同版本的源文件,但只是在单个 git 提交中(即在单独的目录中而不是在单独的分支中)。 希望这些变化很少,大部分都可以抽象出来。 【参考方案1】:

不要认为它是最优雅的,但您可能会在版本中添加更多内容....说:

1.5.1-lrdk2.4.5-rdkp5.6.4-p7.3-l5.4

制作版本,以防不明显

【讨论】:

到目前为止我所看到的一切都将我引向了这个方向。我对这种方法的问题是会附加 四个 名称和版本。会很乱。

以上是关于如何对支持不同依赖版本的多个发布分支进行版本控制?的主要内容,如果未能解决你的问题,请参考以下文章

采用git标签来进行代码版本管理

profile

如何在一个库中支持多个 Scala 版本

如何对 AWS AppSync 架构进行版本控制

Dart 包版本如何工作以及我应该如何对我的 Flutter 插件进行版本控制?

持续交付实践-pipeline 使用之 MultiBranch Pipeline