【问题标题】:Semantic Versioning for command line tools命令行工具的语义版本控制
【发布时间】:2019-02-24 01:03:03
【问题描述】:

SemVer specs 状态应该增加

  1. 当您进行不兼容的 API 更改时的主要版本,
  2. 以向后兼容的方式添加功能时的次要版本,并且
  3. 当您进行向后兼容的错误修复时的 PATCH 版本。

在命令行界面的情况下,什么是向后兼容的?

一个简化的例子:

有一个命令行工具可以分析文本文件中的数字。它将返回最小值和最大值。

1.0.0 版的工作方式如下:

$ analyzertool numbers.txt
min: 12
max: 20

现在我添加一个有用的功能。该工具现在还将输出平均值:

$ analyzertool numbers.txt
min: 12
max: 20
avg: 17

这是主要还是次要变化?输出明显改变了,但minmax 的行仍然存在,所以有人在做

$ analyzertool numbers.txt | grep min
min: 12

仍会看到相同的输出。

我正在寻找现有的约定或相关示例。

【问题讨论】:

  • 我可能回答得太快了。您的文档是否说明最终可能会将其他统计信息附加到输出中?
  • 1.0.0 文档没有宣布任何可能即将添加的内容。

标签: command-line-interface versioning semantic-versioning


【解决方案1】:

在引用的示例中,您添加了一项功能,但没有以向后兼容的方式进行。您通过在回复中喷出更多数据来更改界面。这就像更改函数的返回数据类型一样;它肯定会坏掉。有一些用例不会被破坏的事实并不会改变还有其他用例会被破坏的事实。

除非您在文档中明确说明在添加功能时将附加数据附加到输出流中,否则您应该进行主要版本升级。

【讨论】:

    猜你喜欢
    • 2022-01-05
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 2017-02-07
    相关资源
    最近更新 更多