Dado um hash de commit do git, como descobrir qual versão do kernel o contém?


24

Suponha que eu tenha algum problema que foi corrigido por um patch recente no repositório oficial do Linux git. Eu tenho uma solução alternativa, mas gostaria de desfazê-la quando ocorrer um lançamento que contenha minha correção. Eu sei o hash exato de confirmação do git, por exemplo, f3a1ef9cee4812e2d08c855eb373f0d83433e34c .

Qual é a maneira mais fácil de responder à pergunta: Quais lançamentos de kernel até agora contêm esse patch? Pontos de bônus se nenhum repositório git local do Linux for necessário.

(O LWM discute algumas idéias, mas elas exigem um repositório local.)

Respostas:



21

Como mencionado no LWN , o mais fácil é:

git describe --contains f3a1ef9cee4812e2d08c855eb373f0d83433e34c

Se você não deseja um clone local, o commit formatado "simples" do gitweb contém as mesmas informações no X-Git-Tagcabeçalho. Infelizmente, o kernel.org mudou para o cgit, que aparentemente não divulga essas informações. Anteriormente, era possível descobrir assim:

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

Aqui, X-Git-Tagestá realmente ausente no momento, porque esse commit não está em um release marcado nesse repositório. Mas você pode olhar para um commit anterior, como:

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

Aqui você vê:

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

que me diz que a tag "v3.4-rc1" foi a primeira tag a seguir o meu patch, então eu esperaria vê-la na v3.4.


1
Não tenho certeza se essa resposta é mais válida. O X-Git-Tag não aparece.
Ahmet Alp Balkan

A primeira frase ainda é válida. Encontrar a resposta através do gitweb não é mais uma opção, mas é por isso que esta pergunta foi editada há quase 3 anos para dizer exatamente isso.
Jim Paris

1

Você pode usar algo como isto

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

Isso requer repo git local.


-1

Você pode ver o commit no espelho de origem do github. Suponho que você possa correlacionar as tags de lançamento até a data de confirmação (nesse caso, seu commit tem cinco dias, o RC marcado com mais recente masteré sete), mas, francamente, isso é mais fácil de obter se você clonar a fonte localmente.


Correlacionar a data não funcionará, pois o patch ainda não pode ser mesclado em nenhuma versão, ou pode ter sido escrito originalmente para uma versão anterior e não ter sido mesclado até mais recentemente.
Psusi 9/08/12

1
Atualmente, o GitHub mostra todas as tags que contêm um commit específico logo abaixo da mensagem de commit, portanto, não é mais necessário correlacionar por data.
Philipp Wendler
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.