Учитывая хеш git commit, как узнать, какой выпуск ядра содержит его?

24

Предположим, у меня есть проблема, которая была исправлена ​​недавним патчем к официальному репозиторию Linux git. У меня есть обходной путь, но я бы хотел отменить его, когда выйдет релиз, содержащий мое исправление. Я знаю точный хеш коммита git, например f3a1ef9cee4812e2d08c855eb373f0d83433e34c .

Какой самый простой способ ответить на вопрос: какие выпуски ядра до сих пор содержат этот патч? Бонусные баллы, если не требуется локальный репозиторий git для Linux.

( LWM обсуждает некоторые идеи, но они требуют локального хранилища.)

Иоахим Брейтнер
источник

Ответы:

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 не появляется.
Ахмет Алп Балкан
Первое предложение остается в силе. Поиск ответа через gitweb больше не вариант, но именно поэтому этот вопрос был отредактирован почти 3 года назад, чтобы сказать именно это.
Джим Пэрис
1

Вы можете использовать что-то вроде этого

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

Это требует локального git-репо.

транквилизатор
источник
-1

Вы можете увидеть коммит на исходном зеркале github. Я полагаю, что вы могли бы соотнести теги релиза с датой фиксации (в этом случае ваш коммит имеет пять дней, последний помеченный RC master- семь), но, честно говоря, это проще сделать, если вы клонируете источник локально.

Кристофер
источник
Корреляция даты не будет работать, поскольку патч еще не может быть объединен с каким-либо выпуском или он может быть изначально написан для предыдущего выпуска и просто не объединен до недавнего времени.
psusi
1
В настоящее время GitHub отображает все теги, содержащие определенный коммит чуть ниже сообщения коммита, поэтому больше не нужно коррелировать по дате.
Филипп Вендлер