Dato un hash di commit git, come scoprire quale versione del kernel lo contiene?


24

Supponiamo di avere qualche problema risolto da una recente patch al repository git Linux ufficiale. Ho un lavoro in giro, ma vorrei annullarlo quando si verifica una versione che contiene la mia correzione. Conosco l'esatto hash di commit git, ad esempio f3a1ef9cee4812e2d08c855eb373f0d83433e34c .

Qual è il modo più semplice per rispondere alla domanda: quali versioni del kernel finora contengono questa patch? Punti bonus se non è necessario alcun repository git Linux locale.

( LWM discute alcune idee, ma queste richiedono un repository locale.)

Risposte:



21

Come menzionato su LWN , il più semplice è:

git describe --contains f3a1ef9cee4812e2d08c855eb373f0d83433e34c

Se non si desidera un clone locale, il commit in formato "normale" di gitweb contiene le stesse informazioni X-Git-Tagnell'intestazione. Sfortunatamente kernel.org è passato a cgit che apparentemente non rivela queste informazioni. In precedenza era possibile scoprirlo in questo modo:

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

Qui, X-Git-Tagal momento manca davvero perché quel commit non è in una versione taggata in quel repository. Ma puoi guardare un commit precedente, come:

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

Qui vedi:

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

che mi dice che il tag "v3.4-rc1" è stato il primo tag a seguire la mia patch, quindi mi aspetto di vederlo in v3.4.


1
Non sono sicuro che questa risposta sia più valida. X-Git-Tag non appare.
Ahmet Alp Balkan,

La prima frase è ancora valida. Trovare la risposta tramite gitweb non è più un'opzione, ma è per questo che questa domanda è stata modificata quasi 3 anni fa per dirlo.
Jim Paris,

1

Puoi usare qualcosa del genere

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

Ciò richiede repository git locale.


-1

Puoi vedere il commit sul mirror dei sorgenti di github. Suppongo che potresti correllare i tag di rilascio alla data di commit (in questo caso, il commit è vecchio di cinque giorni, l'ultimo RC con tag masterè di sette), ma francamente questo è più facile da ottenere se cloni la fonte localmente.


La correlazione della data non funzionerà poiché la patch potrebbe non essere ancora unita in nessuna versione, oppure potrebbe essere stata scritta originariamente per una versione precedente e non essere stata unita fino a poco tempo fa.
psusi,

1
Al giorno d'oggi GitHub mostra tutti i tag contenenti un commit specifico appena sotto il messaggio di commit, quindi non è più necessario correlare per data.
Philipp Wendler,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.