补丁是不是可以在 SemVer 中包含添加内容?

Posted

技术标签:

【中文标题】补丁是不是可以在 SemVer 中包含添加内容?【英文标题】:Could a patch include an addition in SemVer?补丁是否可以在 SemVer 中包含添加内容? 【发布时间】:2021-04-29 18:18:14 【问题描述】:

我正在尝试为我正在开发的 python 包采用版本控制系统(我对这些系统非常陌生),并且我一直在阅读语义版本控制。我非常喜欢这个系统,但在某些情况下我会重新考虑,尤其是对于这样的事情:

假设(愚蠢的例子)我们的 v0.1.0 包有一个类 Bob 有几个方法:

class Bob:
    def __init__(self, age, coolness):
        self.age = age
        self.coolness = coolness

    def says_hi(self):
        return "Hi!"

    def says_bye(self):
        return "Bye!" 

假设我们添加了以下非常简单的方法:

    def says_good_day(self):
        return "Good day!"

...现在是一个非常复杂的方法:

    def explains_the_meaning_of_life(self):
        ... # bob explains it here

根据语义版本控制规则,任何向后兼容的添加都应该将次要版本增加 1。因此,如果我们分别实现这两种方法,我们现在已经增加到 v0.3.0。但是我发现我们会为这两个向后兼容的添加分配相同的“权重”是不寻常的,尽管事实上一个非常简单,一个非常复杂。您能否证明将第一个添加分配为补丁更新而将第二个添加为次要更新? 我是否误解了语义版本控制的意义,甚至考虑了“复杂”与“简单”的添加,即添加只是添加?

【问题讨论】:

那些方法的复杂性无关紧要;任何现有代码都不会使用它们中的任何一个。没有什么阻止您增加主要版本,但 semver 不要求您这样做。 【参考方案1】:

我是否误解了语义版本控制的意义,甚至考虑了“复杂”与“简单”的添加,即添加只是添加?

是的,我会这么说。语义版本控制不关心更改的复杂性,而是更改对升级到新版本的现有客户的影响。在这种情况下,影响是相同的:以向后兼容的方式添加了一项新功能。

【讨论】:

以上是关于补丁是不是可以在 SemVer 中包含添加内容?的主要内容,如果未能解决你的问题,请参考以下文章

在 JavaScript,主要,次要或补丁中嵌套对象上的 Semver?

将此类版本控制命名为 semver 是不是正确?

如何 semver 版本控制文档更新?

java方法区中包含哪些内容,常量池中包含哪些内容

如何添加类型约束以在泛型方法中包含任何可序列化的内容?

求一个数二进制中包含多少个1