假设我有libfoo.这取决于libbar.根据包版本控制策略,我指定
libbar ==0.1.*
Run Code Online (Sandbox Code Playgroud)
在Build-depends中:在我的cabal文件中.
然后libbar的开发者发布了一个新版本0.2.我测试它并没有影响libfoo的更改.所以我改变了我的Build-depends to
libbar ==0.2.*
Run Code Online (Sandbox Code Playgroud)
或者也许是
libbar >= 0.1 && < 0.3
Run Code Online (Sandbox Code Playgroud)
虽然我可以想到不以后一种方式去做的理由.这是我对libfoo 的唯一改变.
libfoo导出接受libbar中定义的类型和libbar中定义的返回类型的函数.但是,对libbar的更改不会影响任何这些功能.
libfoo的第一个版本是0.1.0.0.libfoo的第二个版本应该有什么版本号?
这取决于你从libbar重新导出的内容.
不太可能,但....
鉴于libbar已将其主要数字从0.1更改为0.2,因此可能会在更改中破坏代码,如果您重新导出代码,则主要数字也必须更改:0.2.0.0
这是值得注意的.
您无法阻止跨模块边界泄漏的实例,并且新实例可能会破坏现有代码.这就是版本控制政策所说的原因
请注意,修改导入或依赖于另一个包的较新版本可能会导致导出额外的实例,从而强制进行主要版本更改.
如果libbar 2.0中有新实例,则必须有一个新的主要版本:0.2.0.0.
在这种情况下,您的代码不会更改.包版本控制策略的第2点不适用:
- 否则,如果只将新绑定,类型,类或模块(但见下文)添加到接口,则AB可能保持不变,但新C必须大于旧C.
一个基本原则是:
ABC唯一标识API.
您没有添加任何内容或更改导出的任何内容,因此您无需更改0.1.0的主要次要编号,但应更改最后一部分:0.1.0.1是正确的.
| 归档时间: |
|
| 查看次数: |
275 次 |
| 最近记录: |