我正在为我的项目使用替代版本编号方法。我遇到了奇怪的行为,cabal
这stack
让我无法充分享受这种方法的好处。两者都cabal
强制stack
版本为 format Int
。Int
. Int
,这不包括我用于分支的另一种版本格式(0.x.x
、、、1.x.x
等1.0.x
)的情况。
如果我version: 0.x.x
的.cabal
文件中有行,则在运行时或运行时会Parse of field 'version' failed.
出错。cabal build
Unable to parse cabal file {PROJECT_NAME}.cabal: NoParse "version" 5
stack init
有没有办法禁用版本解析cabal
和stack
命令?有它的标志吗?cabal
还是我必须向and的开发人员请求这种更改(添加标志、禁用版本解析)stack
?
为什么有任何解析?它对构建包有什么帮助?是否会cabal
或stack
自动增加某些事件的内部版本号?如果是,我在哪里可以阅读更多关于此的信息?我如何影响在cabal
和中实现版本编号递增的方式stack
?我希望 haskell 包的开发人员考虑到替代版本编号方法的可能性。
PS。对于所有感兴趣的人,我想快速总结一下“奇怪”版本号背后的想法,例如0.x.x
, 1.x.x
, 1.0.x
. 我使用带有x
's 的版本号来描述允许代码更改的开发流程,而 , , 等版本号1.0.0
用于1.1.0
描述2.35.46
开发的冻结状态(准确地说,它们用于发布的软件版本)。请注意,诸如0.x.0
、1.x.15
、之类的版本号2.x.23
也是可能的(用于软件的快照/构建),它们意味着代码库已从具有版本号的分支继承0.x.x
,1.x.x
并且2.x.x
相应地。
为什么我需要这样的版本号0.x.x
,1.x.x
并且根本不需要2.x.x
?简而言之,不同数量x
的 代表不同类型的分支。例如,版本号模式N.x.x
用于支持分支,而模式N.M.x
用于发布分支。支持分支背后的想法是,它们是由于相应代码库的不兼容而创建的。由于相应代码库中的功能冻结而创建了发布分支。例如,由于分支1.0.x
中的功能冻结(或发布)而创建了分支1.1.x
、、、...。1.2.x
1.x.x
我知道这很令人困惑,但我努力建立这种版本编号方法,并且我继续通过我的演示文稿和其他项目来提高对版本编号不一致的认识。一旦您更多地考虑semver 方法的缺陷,这一切都变得有意义(您可以在链接后找到有关此问题的详细幻灯片演示文稿)。但我现在不想为它辩护。就目前而言,我只想cabal
并stack
停止对我的项目执行他们认为的不合理的规则。希望你能帮助我。