Wie kann man bei einem GIT-Commit-Hash herausfinden, welches Kernel-Release es enthält?

24

Angenommen, ich habe ein Problem, das durch einen aktuellen Patch im offiziellen Linux-Git-Repository behoben wurde. Ich habe eine Problemumgehung, aber ich würde sie gerne rückgängig machen, wenn eine Veröffentlichung stattfindet, die meine Fehlerbehebung enthält. Ich kenne den genauen Git-Commit-Hash, z . B. f3a1ef9cee4812e2d08c855eb373f0d83433e34c .

Was ist der einfachste Weg, um die Frage zu beantworten: Welche Kernel-Releases enthalten diesen Patch bisher? Bonuspunkte, wenn kein lokales Linux-Git-Repository benötigt wird.

( LWM diskutiert einige Ideen, für die jedoch ein lokales Repository erforderlich ist.)

Joachim Breitner
quelle

Antworten:

21

Wie bei LWN erwähnt , ist das einfachste:

git describe --contains f3a1ef9cee4812e2d08c855eb373f0d83433e34c

Wenn Sie keinen lokalen Klon möchten, enthält das "normal" formatierte Commit von gitweb dieselben Informationen im X-Git-TagHeader. Leider ist kernel.org auf cgit umgestiegen, das diese Informationen anscheinend nicht preisgibt. Bisher war es möglich, dies so herauszufinden:

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

Hier X-Git-Tagfehlt im Moment tatsächlich, da dieses Commit nicht in einer getaggten Version in diesem Repository enthalten ist. Sie können sich jedoch ein früheres Commit ansehen, z.

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

Hier sehen Sie:

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

was mir sagt, dass das Tag "v3.4-rc1" das erste Tag war, das meinem Patch folgte, also würde ich erwarten, es in v3.4 zu sehen.

Jim Paris
quelle
1
Ich bin mir nicht sicher, ob diese Antwort noch gültig ist. X-Git-Tag erscheint nicht.
Ahmet Alp Balkan
Der erste Satz ist noch gültig. Die Antwort über gitweb zu finden, ist keine Option mehr, aber deshalb wurde diese Frage vor fast drei Jahren bearbeitet, um genau das zu sagen.
Jim Paris
1

Sie können so etwas verwenden

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

Dies erfordert lokales Git Repo.

ataraxisch
quelle
-1

Sie können das Commit auf dem Github-Quellenspiegel sehen. Ich nehme an, Sie könnten die Release-Tags mit dem Festschreibungsdatum korrelieren (in diesem Fall ist Ihr Festschreibungsdatum fünf Tage alt, das letzte mit dem Tag RC on masterist sieben), aber ehrlich gesagt ist dies einfacher, wenn Sie die Quelle lokal klonen.

Christopher
quelle
Das Korrelieren des Datums funktioniert noch nicht, da der Patch möglicherweise noch nicht mit einer Veröffentlichung zusammengeführt wurde oder ursprünglich für eine frühere Veröffentlichung geschrieben und erst in jüngerer Zeit zusammengeführt wurde.
Psusi
1
Heutzutage zeigt GitHub alle Tags mit einem bestimmten Commit direkt unter der Commit-Nachricht an, sodass keine Korrelation nach Datum mehr erforderlich ist.
Philipp Wendler