假设我有一些问题已通过官方 Linux git 存储库的最新补丁修复。我有一个解决方法,但我想在包含我的修复程序的版本发布时撤消它。我知道确切的 git 提交哈希,例如f3a1ef9cee4812e2d08c855eb373f0d83433e34c。
回答这个问题的最简单方法是什么:到目前为止哪些内核版本包含此补丁?如果不需要本地 Linux git 存储库,则有加分。
(轻波调制讨论了一些想法,但这些确实需要本地存储库。)
答案1
作为LWN 上提到,最简单的是:
git describe --contains f3a1ef9cee4812e2d08c855eb373f0d83433e34c
如果您不需要本地克隆,gitweb 的“plain”格式的提交包含相同的信息X-Git-Tag
标头中包含相同的信息。不幸的是 kernel.org 切换到了 cgit,它显然没有披露此信息。以前可以这样查找:
这里,X-Git-Tag
目前实际上丢失了,因为该提交不在该存储库的标记版本中。但您可以查看较早的提交,例如:
在这里,你会看到:
X-Git-Tag: v3.4-rc1~184^2~10
这告诉我标签“v3.4-rc1”是遵循我的补丁的第一个标签,所以我希望在 v3.4 中看到它。
答案2
在GitHub 内核存储库,您可以查看所有标签/内核版本。
示例dc0827c128c0ee5a58b822b99d662b59f4b8e970由...提供吉姆·帕里斯:
如果单击三个点,可以看到标签/内核版本的完整列表。
答案3
老问题,但令我惊讶的是没有答案:
git tag --contains <Commit ID>
来自 git tag 帮助消息:
Tag listing options
--contains <commit> print only tags that contain the commit
这需要本地 GIT 存储库。
由于这个问题是我在寻找解决方案时得到的第一个结果,我认为这对其他人会有帮助。
答案4
你可以看到提交github源码镜像。我想你可以将发布标签到提交日期(在这种情况下,您的提交是五天前的,最近标记的 RCmaster
是七天),但坦率地说,如果您在本地克隆源,这更容易获得。