给定一个 git commit 哈希值,如何找出哪个内核版本包含它?

给定一个 git commit 哈希值,如何找出哪个内核版本包含它?

假设我有一些问题已通过官方 Linux git 存储库的最新补丁修复。我有一个解决方法,但我想在包含我的修复程序的版本发布时撤消它。我知道确切的 git 提交哈希,例如f3a1ef9cee4812e2d08c855eb373f0d83433e34c

回答这个问题的最简单方法是什么:到目前为止哪些内核版本包含此补丁?如果不需要本地 Linux git 存储库,则有加分。

轻波调制讨论了一些想法,但这些确实需要本地存储库。)

答案1

作为LWN 上提到,最简单的是:

git describe --contains f3a1ef9cee4812e2d08c855eb373f0d83433e34c

如果您不需要本地克隆,gitweb 的“plain”格式的提交包含相同的信息X-Git-Tag标头中包含相同的信息。不幸的是 kernel.org 切换到了 cgit,它显然没有披露此信息。以前可以这样查找:

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff_plain;h=f3a1ef9cee4812e2d08c855eb373f0d83433e34c

这里,X-Git-Tag目前实际上丢失了,因为该提交不在该存储库的标记版本中。但您可以查看较早的提交,例如:

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff_plain;h=dc0827c128c0ee5a58b822b99d662b59f4b8e970

在这里,你会看到:

X-Git-Tag: v3.4-rc1~184^2~10

这告诉我标签“v3.4-rc1”是遵循我的补丁的第一个标签,所以我希望在 v3.4 中看到它。

答案2

GitHub 内核存储库,您可以查看所有标签/内核版本。

示例dc0827c128c0ee5a58b822b99d662b59f4b8e970由...提供吉姆·帕里斯:

提交dc0827c@GitHub

如果单击三个点,可以看到标签/内核版本的完整列表。

答案3

老问题,但令我惊讶的是没有答案:

git tag --contains <Commit ID>

来自 git tag 帮助消息:

Tag listing options
     --contains <commit>   print only tags that contain the commit

这需要本地 GIT 存储库。

由于这个问题是我在寻找解决方案时得到的第一个结果,我认为这对其他人会有帮助。

答案4

你可以看到提交github源码镜像。我想你可以将发布标签到提交日期(在这种情况下,您的提交是五天前的,最近标记的 RCmaster是七天),但坦率地说,如果您在本地克隆源,这更容易获得。

相关内容