补丁可以包含 SemVer 中的附加内容吗?
Could a patch include an addition in SemVer?
我正在尝试为我正在处理的 python 包采用版本控制系统(我对这些系统很陌生),并且我一直在阅读语义版本控制。我非常喜欢这个系统,但在某些情况下我会重新考虑,尤其是对于这样的事情:
假设(愚蠢的例子)我们的 v0.1.0 包有一个 class 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。但是我发现我们将相同的“权重”分配给这两个向后兼容的添加是不寻常的,尽管事实上一个非常简单,一个非常复杂。您能否证明将第一个添加项分配为补丁更新,将第二个添加项分配为次要更新? 我是否误解了语义版本控制的意义,甚至考虑“复杂”与“简单”的添加,即添加只是添加?
Am I misunderstanding the point of semantic versioning by even considering "complicated" versus "simple" additions, i.e. an addition is just an addition?
是的,我会这么说。语义版本控制不关心变更的复杂性,而是变更对升级到新版本的现有客户端的影响。在这种情况下,影响是一样的:以向后兼容的方式添加了一个新功能。
我正在尝试为我正在处理的 python 包采用版本控制系统(我对这些系统很陌生),并且我一直在阅读语义版本控制。我非常喜欢这个系统,但在某些情况下我会重新考虑,尤其是对于这样的事情:
假设(愚蠢的例子)我们的 v0.1.0 包有一个 class 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。但是我发现我们将相同的“权重”分配给这两个向后兼容的添加是不寻常的,尽管事实上一个非常简单,一个非常复杂。您能否证明将第一个添加项分配为补丁更新,将第二个添加项分配为次要更新? 我是否误解了语义版本控制的意义,甚至考虑“复杂”与“简单”的添加,即添加只是添加?
Am I misunderstanding the point of semantic versioning by even considering "complicated" versus "simple" additions, i.e. an addition is just an addition?
是的,我会这么说。语义版本控制不关心变更的复杂性,而是变更对升级到新版本的现有客户端的影响。在这种情况下,影响是一样的:以向后兼容的方式添加了一个新功能。