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

Joa*_*ner 25 linux source git linux-kernel

假设我有一些问题已由官方 Linux git 存储库的最新补丁修复。我有一个变通方法,但是当发布包含我的修复程序的版本时,我想撤消它。我知道确切的 git commit hash,例如f3a1ef9cee4812e2d08c855eb373f0d83433e34c

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

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

Jim*_*ris 21

正如LWN 上提到的,最简单的是:

git describe --contains f3a1ef9cee4812e2d08c855eb373f0d83433e34c
Run Code Online (Sandbox Code Playgroud)

如果您不想要本地克隆,gitweb 的“普通”格式提交在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
Run Code Online (Sandbox Code Playgroud)

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


小智 7

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

Jim Paris提供的dc0827c128c0ee5a58b822b99d662b59f4b8e970示例:

提交 dc0827c@GitHub

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