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


10

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

对于Linux工具,尤其是GNU Core Utils,有什么快速的方法来权威地回答这一问题?按精度降低的一些可能性:

  • 通过运行不同版本的二进制二进制搜索(sic)当然是最终的答案,但到目前为止是最耗时的。出于安全原因,较旧的安装通常不可用。
  • 读取代码几乎一样好,但是如果模糊地命名功能,名称不直接对应于变量/函数/对象名称,或者在启用该功能之前就已实现,则可能会浪费大量时间。
  • 更改日志(如果可用)通常将功能更改连接到软件版本。
  • 提交日志可以提供提示,但不知道它们将包含在哪个版本中。
  • 手册页很少提及日期。
  • 这同样适用于谷歌搜索,你也不得不排除所有非权威渠道很难。

您能否详细说明这个问题背后的原因?
Faheem Mitha

ISTM指出,如果必须将软件移植到这些不同的平台,则必须在某处安装“最旧的”安装。因此,一个相当快速而权威的答案是在该平台上尝试一下。理想情况下,在所有平台上(如果您将测试用例作为脚本编写,则可以将其推送到所有移植平台,并获得一系列的是/否响应)。
roaima '17

Answers:


7

通常,有一个变更日志。实际上,GPL要求此更改(或其他“显着的更改通知”)!(至少,对于具有多个贡献者的任何事物,至少是有效的,请参阅GPLv2第2a节。)

对于GNU coreutils软件包—以及直接从GNU项目中获得的几乎所有其他内容—该文件绝对是查找的第一位,并且应该在95%的时间内回答您的问题。


您是否有对coreutils更改日志的引用?我可以找到的最新版本是2007
。–

2
GNU Coreutils的更新日志尚未自2007年以来更新 cvs.savannah.gnu.org/viewvc/coreutils/... 你必须在git的日志,看看现在。
Mikel

2
它可以从git日志中自动生成。我的Fedora系统上有一个ChangeLog.bz2in /usr/share/doc/coreutils-8.10,最上面的条目来自2011-02-04。也有可能这是RH前叉-我将在今天晚些时候进行检查。
mattdm 2011年

@mattdm:在Ubuntu上有/usr/share/doc/coreutils/changelog.gz-谢谢!不幸的是,它只能追溯到2008年,对于某些相关工具而言,这已经太迟了。我想它接管了最后一个结局。
2011年


4

为什么不使用X附带的源代码控件来搜索特征Y?源回购是确定何时引入特定功能的最佳方法。

对于coreutils,您可以访问http://git.savannah.gnu.org/cgit/coreutils.git,并在日志消息或您标识为属于Y的特定代码行中搜索与Y相关的关键字。直接或什至更好的Web界面,将源存储库克隆到您的工作站,并使用git-bisectgit-blamegit-log --grep搜索

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

您可以根据X及其源代码控制采用上述方法。


您如何确定哪个版本的提交/行进入哪个版本的软件?另外,Savannah搜索严重中断 -显然没有出现在同一日志消息中的字符串没有结果。
2011年

使用git-describe找出最接近特定命令的标签。标签主要用于版本号。至于大草原被打破,你不能做太多。Git将存储库克隆到您的盒子中,然后使用我在帖子中描述的git命令来工作。
Shinnok 2011年

1

Debian和Debian衍生的平台(例如Ubuntu)上

sudo apt-get changelog coreutils > changelog.txt 

一直提供到GNU Core Utilities的changelog到version 4.5.1-1

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.