【发布时间】: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 提交中(即在单独的目录中而不是在单独的分支中)。 希望这些变化很少,大部分都可以抽象出来。
标签: git github version versioning api-versioning