X 的哪个版本引入了功能 Y?

X 的哪个版本引入了功能 Y?

我日常工作的很大一部分是开发在具有相同软件的不同版本的机器上使用的软件,例如bashfindgrep。当遇到某个功能(例如简化代码)有用时,了解该功能在最旧的安装工具中是否可用非常重要。对于关键的东西,了解此功能是新功能还是在最旧的安装工具中已存在多年也很有用。

有什么快速的方法可以回答这个问题权威地对于 Linux 工具,尤其是 GNU Core Utils?一些可能性(按照准确度递减的顺序):

  • 二分二分查找(原文如此)通过运行不同的版本当然是最终的答案,但也是迄今为止最耗时的。出于安全原因,较旧的安装通常不可用。
  • 阅读代码几乎同样好,但如果该功能的命名含糊,该名称与变量/函数/对象名称不直接对应,或者在启用之前就已实现,则可能会非常耗时。
  • 变更日志,如果可用,通常将功能更改与软件版本相关联。
  • 提交日志可以提供提示,但不知道它们会包含在哪个版本中。
  • 手册页很少提及日期。
  • 这同样适用于谷歌搜索,而且您也很难排除所有非权威来源。

答案1

一般来说,有一个变更日志。事实上,这个(或其他变化的“显着通知”)是 GPL 所要求的! (至少,对于任何有多个贡献者的事情来说都是如此——请参阅 GPLv2 第 2a 节。)

对于 GNU coreutils 包——以及直接来自 GNU 项目的几乎所有其他内容——这个文件绝对是第一个要查看的地方,并且应该在 95% 的情况下回答您的问题。

答案2

为什么不使用传入 X 的源控制来搜索特征 Y?源存储库是识别何时引入特定功能的最佳方式。

对于 coreutils,您可以前往http://git.savannah.gnu.org/cgit/coreutils.git并在日志消息中搜索与 Y 相关的关键字或您识别为属于 Y 的特定代码行。您可以直接在 Web 界面上执行此操作,或者更好的是,将源存储库克隆到您的站点并使用git 二等分,git 责备git 日志 --grep

然后使用git 描述找出标签与特定提交最接近。标签主要用于版本号,因此它将为您提供引入提交的版本。

您可以根据 X 及其源代码控制来调整上述方法。

答案3

德班以及 Debian 衍生平台,例如乌班图:

sudo apt-get changelog coreutils > changelog.txt 

提供 GNU Core Utilities 的变更日志直至版本4.5.1-1

不确定其他平台上是否有类似方便的解决方案。

答案4

检查coreutils新闻文件来自其git 仓库

相关内容