Dado un hash git commit, ¿cómo averiguar qué versión del kernel lo contiene?


24

Supongamos que tengo un problema que fue solucionado por un parche reciente en el repositorio oficial de Linux git. Tengo una solución alternativa, pero me gustaría deshacerla cuando ocurra una versión que contenga mi solución. Sé el hash exacto de git commit, por ejemplo, f3a1ef9cee4812e2d08c855eb373f0d83433e34c .

¿Cuál es la forma más fácil de responder la pregunta: qué versiones de kernel contienen hasta ahora este parche? Puntos de bonificación si no se necesita un repositorio git de Linux local.

( LWM analiza algunas ideas, pero estas requieren un repositorio local).

Respuestas:



21

Como se mencionó en LWN , lo más fácil es:

git describe --contains f3a1ef9cee4812e2d08c855eb373f0d83433e34c

Si no desea un clon local, la confirmación formateada "simple" de gitweb contiene la misma información en el X-Git-Tagencabezado. Desafortunadamente kernel.org cambió a cgit que aparentemente no revela esta información. Anteriormente era posible descubrirlo así:

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

Aquí, en X-Git-Tagrealidad falta en este momento porque esa confirmación no está en una versión etiquetada en ese repositorio. Pero puede ver una confirmación anterior, como:

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

Aquí ves:

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

que me dice que la etiqueta "v3.4-rc1" fue la primera etiqueta que siguió a mi parche, por lo que esperaría verla en la v3.4.


1
No estoy seguro si esta respuesta es válida más. X-Git-Tag no aparece.
Ahmet Alp Balkan

La primera oración sigue siendo válida. Encontrar la respuesta a través de gitweb ya no es una opción, pero es por eso que esta pregunta fue editada hace casi 3 años para decir exactamente eso.
Jim Paris

1

Puedes usar algo como esto

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

Esto requiere un repositorio local de git.


-1

Puedes ver el commit en el espejo fuente de github. Supongo que podría correlacionar las etiquetas de lanzamiento a la fecha de confirmación (en este caso, su confirmación tiene cinco días, el RC etiquetado más reciente masteres siete), pero, francamente, es más fácil de encontrar si clona la fuente localmente.


Correlacionar la fecha no funcionará, ya que el parche puede no estar fusionado en ninguna versión todavía, o puede haber sido escrito originalmente para una versión anterior y simplemente no se ha fusionado hasta más recientemente.
psusi

1
Hoy en día, GitHub muestra todas las etiquetas que contienen una confirmación específica justo debajo del mensaje de confirmación, por lo que ya no es necesario correlacionar por fecha.
Philipp Wendler
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.