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


24

假设我有一个问题,该问题已由官方Linux git存储库的最新补丁修复。我有一个解决方法,但是当包含我的修复程序的发行版出现时,我想撤消它。我知道确切的git commit哈希,例如f3a1ef9cee4812e2d08c855eb373f0d83433e34c

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

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

Answers:



21

LWN所述,最简单的方法是:

git describe --contains f3a1ef9cee4812e2d08c855eb373f0d83433e34c

如果您不希望本地克隆,则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

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


1
不确定此答案是否有效。X-Git-Tag不出现。
Ahmet Alp Balkan

第一句话仍然有效。通过gitweb查找答案已不再是一个选择,但这就是为什么这个问题在大约3年前被编辑以这样说的原因。
吉姆·巴黎

1

你可以用这样的东西

git-show f3a1ef9cee4812e2d08c855eb373f0d83433e34c:Makefile \
         | head -4 | awk -vORS='.' '{print $3}' | sed 's/\.*$//'

这需要本地git repo。


-1

您可以在github源镜像上看到提交我想您可以将发布标记与提交日期相关联(在这种情况下,您的提交已存在五天了,最近标记的RC master是七天),但是坦率地说,如果在本地克隆源,则更容易实现。


由于补丁程序可能尚未合并到任何发行版中,或者可能是最初为先前的发行版编写的,直到最近才合并,因此无法关联日期。
psusi 2012年

1
如今,GitHub在提交消息的下方显示了包含特定提交的所有标签,因此不再需要按日期进行关联。
Philipp Wendler
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.