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