在红宝石生态系统(或什至其他地方)中是否有SemVer的功能(即,我可以将其与bundler
and一起使用rubygems
)替代方案?
我对SemVer ( MAJOR.MINOR.PATCH ) 的问题是它试图量化两个不兼容的东西:
- 改变大小(补丁——一个小改变)
- 向后兼容性(次要——不间断,主要——破坏)
但是, PATCH仍然很可能是一个重大更改,这使得它在某种程度上等于MAJOR而小于MINOR,并且MINOR小于MAJOR。所以:
PATCH == MAJOR && MAJOR > MINOR && MINOR > PATCH
这意味着 PATCH <> MINOR 同时存在,这永远不会是真的。
理想情况下,我希望有两条版本控制线——一条基于向后兼容性(例如,没有破损、潜在难以察觉的破损(==补丁)、破损),另一条基于更改大小(不考虑向后兼容性),一个人性化的版本控制线,如果你愿意的话。我希望能够同时使用它们。
(仅通过纯粹的基于向后兼容的版本控制,只要操作系统从在屏幕上写入“hello world”开始,我就可以从“hello world”转到操作系统。)
例如:如果H代表对人类友好的版本控制,而B代表向后兼容性,即基于向后兼容性的版本,那么我想说:
- ~> H2.0 (==坚持 H2.X;如果你制作的 H3.0 版本增加了 200MB 的非破坏性附加功能,我不想让你下载它,但请给我带来你所做的那些非破坏性改进H2.0 线)
- ~> B0.1(==给我非破坏性更改(第 3 列,相当于 Semver 的第 2 列)和可能难以察觉 的破坏性更改(第 2 列,相当于 SemVer 的第 3 列))