Este é um miniguia de comandos usados para enviar um patch para o código fonte do kernel Linux.

Navegue até o diretório do repositório contendo o kernel do linux para o qual você fez alterações:

Por exemplo

cd ~/linux-iio/iio/

Neste diretório estarão subdiretórios importantes como arch, drivers, scripts, entre outros.

Utilize uma ferramenta para verificar o estilo do seu código e conferir se as suas alterações respeitam o kernel coding style.

Opção número 1) Instale o KWorkflow e utilize o seu codestyle:

kw codestyle <arquivo que você alterou>

Exemplo:

kw codestyle drivers/staging/iio/impedance-analyzer/ad5933.c

Opção número 2) Use ferramentas já presentes no kernel:

perl scripts/checkpatch.pl --terse --no-tree --color=always -strict --file <camiho do arquivo>

Exemplo:

perl scripts/checkpatch.pl --terse --no-tree --color=always -strict --file drivers/staging/iio/impedance-analyzer/ad5933.c

Tenha certeza de que as suas alterações compilam antes de enviar seu código para revisão da comunidade. Para isso use o Makefile na raiz do kernel.

make M=<diretório que contém os arquivos que você alterou> clean
make M=<diretório que contém os arquivos que você alterou>

Exemplo:

make M=drivers/staging/iio/impedance-analyzer clean
make M=drivers/staging/iio/impedance-analyzer

Também é recomendado instalar o kernel modificado em uma máquina virtual e iniciá-la (dar boot) mas isso é assunto para um outro post.

Revise as coisas que você fez com git diff.

git diff <arquivo que você alterou>

Exemplo:

git diff drivers/staging/iio/impedance-analyzer/ad5933.c

Adicione o arquivo com as alterações feitas aos arquivos marcados para commit.

git add <arquivo que você alterou>

Exemplo:

git add drivers/staging/iio/impedance-analyzer/ad5933.c

Faça um commit.

git commit -s -v

Escreva o título e mensagem de commit descrevendo quais alterações você fez e por que. Este post explica como escrever boas mensagens de commit.

Obtenha a lista de revisores para os quais você deve enviar o e-mail com as suas modificações.

Opção 1)

kw m <caminho do arquivo>

Exemplo:

kw m drivers/staging/iio/impedance-analyzer/ad5933.c

Opção 2)

perl scripts/get_maintainer.pl <caminho do arquivo>

Exemplo:

perl scripts/get_maintainer.pl drivers/staging/iio/impedance-analyzer/ad5933.c

Obtenha o hash o commit anterior ao commit que você fez

git log

Utilize o git format-patch para criar o e-mail que você mandará para a lista a lista de e-mails do subsistema em que está trabalhando e responsáveis pelos arquivos modificados. Substitua os e-mails após --to pelos e-mails obtidos dos mantenedores do(s) arquivos que você alterou. No final coloque o hash do commit anterior ao commit das suas alterações.

git format-patch -o <local onde salvar o patch> --to="mandenedor1@dominio.com,mantenedor2@dominio2.org,mantenedorN@outrodominio.org" --cc="listadeemail1@dominio.org,listadeemail2@dominio.org,listadeemailN@outro.org" <hash do último commit antes do seu>

Exemplo:

git format-patch -o ~/ --to="mandenedor1@dominio.com,mantenedor2@dominio2.org,mantenedorN@outrodominio.org" --cc="listadeemail1@dominio.org,listadeemail2@dominio.org,listadeemailN@outro.org" e27aea341e1739b0f784e4656ed1c57d057dd8b3

Navegue até o local onde você salvou o seu pacth.

Exemplo:

cd ~/

Você pode abrir o seu patch com um editor de texto e confirir novamente as alterações feitas e endereços de e-mail.

Exemplo:

vim ~/0001-staging-iio-ad5933-replaced-kfifo-by-triggered_buffer.patch 

Se tudo estiver certo você pode mandar o seu patch para os mantenedores utilizando o cliente de e-mail neomutt.

neomutt -H <arquivo com o seu patch> 

Exemplo:

neomutt -H 0001-staging-iio-ad5933-replaced-kfifo-by-triggered_buffer.patch 

Pronto, o patch com suas alterações foi enviado para os mantenedores para que eles possam revisar o seu código e talvez incluí-lo ao restante do código do kernel linux.