Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Language agnostic 依赖于库的程序版本控制_Language Agnostic_Versioning - Fatal编程技术网

Language agnostic 依赖于库的程序版本控制

Language agnostic 依赖于库的程序版本控制,language-agnostic,versioning,Language Agnostic,Versioning,我有一套程序,每个都有自己的版本。所有这些程序都依赖于一个库,同样也有自己的版本。比如说 Foo-1.0.3 Bar-2.1.5 Baz-1.3.4 它们取决于libfrobniz-1.4.5。碰巧我不得不对库进行一次大的检修(涉及大量的重构)。这意味着它将打破一切(Foo、Bar和Baz)。当然,由于这是一个主要的向后不兼容的返工,库将升级到libfrobniz-2.0.0 我的问题是关于foobar和Baz的版本。我将升级它们以使用libfrobniz-2.0.0,但我不会更改它们的功能。

我有一套程序,每个都有自己的版本。所有这些程序都依赖于一个库,同样也有自己的版本。比如说

Foo-1.0.3
Bar-2.1.5
Baz-1.3.4
它们取决于
libfrobniz-1.4.5
。碰巧我不得不对库进行一次大的检修(涉及大量的重构)。这意味着它将打破一切(Foo、Bar和Baz)。当然,由于这是一个主要的向后不兼容的返工,库将升级到
libfrobniz-2.0.0


我的问题是关于foobar和Baz的版本。我将升级它们以使用libfrobniz-2.0.0,但我不会更改它们的功能。这三个程序的新版本可以像旧版本一样使用,因此完全兼容。但是,它们将依赖于完全不同版本的
libfrobniz
。您建议增加他们的版本主版本号,还是只增加补丁级别?

请记住,更改依赖项的主版本号对最终用户来说是一项重大更改。这绝对不是补丁级别,我要说的是坚持使用major,除非你有很好的理由不这么做。

我会保持Foo、Bar和Baz的版本号不变。由于您没有为这些面向用户的产品引入新功能或错误修复,因此无需增加版本号。此外,如果您决定更改版本号,可能会导致用户混淆。您的用户可能想知道,为什么您的产品有一个新的版本号,而没有任何新的记录功能或错误修复


在三个面向用户的应用程序中,您可能会有一个窗格/窗口,指出该产品依赖于libfrobniz,并且已经升级。

您的版本控制方案取决于您的业务和技术需求

一些公司每年都会发布“重大”升级,以获得关注和一些升级收入。 他们中的一些仍然发布beta,直到对软件质量感到满意为止

准备自己的方案,并让客户知道。
通常情况下,第一个字母是主要版本号,用于主要更改,然后用于改进,然后用于构建和修补程序。

这与构建32位与64位版本的库不一样吗?32位依赖于32位libs,而64位依赖于64位libs

当然,这是一项主要的、向后不兼容的返工工作,因此请遵循您将用于类似操作的规则

我记得有一段时间,如果某个软件供应商有勇气破坏向后兼容性,客户有权让该软件供应商濒临破产,在向后兼容性恢复之前拒绝花钱

软件供应商总是让步

今天,似乎他们可以做任何他们想做的事,每个客户都会无脑地跟随他们,有点像《1984》中最底层的人

但也许我过于悲观了

编辑


有人指出,只有一个客户,我自己。在这种情况下,我不希望有任何“版本控制”的需要。这样的客户只对一件事感兴趣:软件是否正常工作,并且只对一个版本感兴趣:一个应该与他最近的规格相对应的版本。

不是复制品。您建议的帖子讨论了版本控制的特定样式。我问的是一般规则,着眼于我的具体问题。@Stafano:好的,这可能是重复的,但不是我发布的重复。针对我的具体问题修改了问题,这正是我现在关心的。你知道,有些情况下,你只有一个客户,你自己。作为对编辑的回应。不是真的。我需要对我使用的东西进行版本控制,因为如果在三年内,我必须重新计算东西,我必须知道我使用的软件的哪个版本来产生这个结果。如果依赖库从更改后的库中暴露类型,这对最终用户来说肯定是一个重大的变化。如果什么都没有公开,可能不会?不,libfrobniz的任何内容都不会向最终用户公开。事实上,这种更改类似于重构。我只更改了内部(内部是整个库),但没有任何最终的软件功能被以任何方式触及或更改。如果它们是不同的JAR,它们应该有不同的版本号,否则,当您收到错误报告时,您将不知道在哪个代码流中复制错误。如果您区分面向用户的版本号和libfrobniz的版本号,那么您将知道使用哪个代码流来复制潜在的错误