xref: /linux/Documentation/translations/pt_BR/process/5.Posting.rst (revision 72fdff1416e280e2baaa3cca69574defb998437e)
1*29d38431SDaniel Pereira.. SPDX-License-Identifier: GPL-2.0
2*29d38431SDaniel Pereira
3*29d38431SDaniel PereiraEnviando patches
4*29d38431SDaniel Pereira================
5*29d38431SDaniel Pereira
6*29d38431SDaniel PereiraCedo ou tarde, chega o momento em que seu trabalho está pronto para ser
7*29d38431SDaniel Pereiraapresentado à comunidade para revisão e, eventualmente, inclusão no kernel
8*29d38431SDaniel Pereiramainline. Sem surpresa, a comunidade de desenvolvimento do kernel evoluiu um
9*29d38431SDaniel Pereiraconjunto de convenções e procedimentos que são usados no envio de patches;
10*29d38431SDaniel Pereirasegui-los tornará a vida muito mais fácil para todos os envolvidos. Este
11*29d38431SDaniel Pereiradocumento tentará cobrir essas expectativas em detalhes razoáveis; mais
12*29d38431SDaniel Pereirainformações também podem ser encontradas nos arquivos
13*29d38431SDaniel Pereira:ref:`Documentation/process/submitting-patches.rst <submittingpatches>`
14*29d38431SDaniel Pereirae :ref:`Documentation/process/submit-checklist.rst <submitchecklist>`.
15*29d38431SDaniel Pereira
16*29d38431SDaniel Pereira
17*29d38431SDaniel PereiraQuando enviar
18*29d38431SDaniel Pereira-------------
19*29d38431SDaniel Pereira
20*29d38431SDaniel PereiraExiste uma tentação constante de evitar o envio de patches antes que eles
21*29d38431SDaniel Pereiraestejam completamente "prontos". Para patches simples, isso não é um problema.
22*29d38431SDaniel PereiraNo entanto, se o trabalho que está sendo feito for complexo, há muito a se
23*29d38431SDaniel Pereiraganhar obtendo feedback da comunidade antes que o trabalho esteja concluído.
24*29d38431SDaniel PereiraPortanto, você deve considerar o envio de trabalhos em andamento, ou até mesmo
25*29d38431SDaniel Pereiradisponibilizar uma árvore git para que os desenvolvedores interessados possam
26*29d38431SDaniel Pereiraacompanhar o seu trabalho a qualquer momento.
27*29d38431SDaniel Pereira
28*29d38431SDaniel PereiraAo enviar um código que ainda não é considerado pronto para inclusão, é uma boa
29*29d38431SDaniel Pereiraideia dizer isso no próprio envio. Mencione também qualquer trabalho importante
30*29d38431SDaniel Pereiraque ainda precise ser feito e quaisquer problemas conhecidos. Menos pessoas vão
31*29d38431SDaniel Pereiraolhar para patches que sabidamente estão "meio cozidos" (half-baked), mas aqueles
32*29d38431SDaniel Pereiraque o fizerem virão com a ideia de que podem ajudá-lo a conduzir o trabalho na
33*29d38431SDaniel Pereiradireção certa.
34*29d38431SDaniel Pereira
35*29d38431SDaniel Pereira
36*29d38431SDaniel PereiraAntes de criar patches
37*29d38431SDaniel Pereira----------------------
38*29d38431SDaniel Pereira
39*29d38431SDaniel PereiraHá uma série de coisas que devem ser feitas antes de você considerar o envio
40*29d38431SDaniel Pereirade patches para la comunidade de desenvolvimento. Elas incluem:
41*29d38431SDaniel Pereira
42*29d38431SDaniel Pereira - Teste o código tanto quanto puder. Faça uso das ferramentas de depuração
43*29d38431SDaniel Pereira   do kernel, garanta que o kernel seja compilado com todas as combinações
44*29d38431SDaniel Pereira   razoáveis de opções de configuração, use compiladores cruzados (cross-
45*29d38431SDaniel Pereira   compilers) para compilar para diferentes arquiteturas, etc. Adicione testes,
46*29d38431SDaniel Pereira   provavelmente usando um framework de testes existente como o KUnit, e
47*29d38431SDaniel Pereira   inclua-os como um membro separado da sua série (veja a próxima seção para
48*29d38431SDaniel Pereira   mais informações sobre séries de patches). Note que isso pode ser
49*29d38431SDaniel Pereira   obrigatório ao afetar alguns subsistemas. Por exemplo, funções de biblioteca
50*29d38431SDaniel Pereira   (localizadas sob lib/) são amplamente utilizadas em quase todos os lugares e
51*29d38431SDaniel Pereira   espera-se que sejam testadas adequadamente.
52*29d38431SDaniel Pereira
53*29d38431SDaniel Pereira - Certifique-se de que seu código esteja em conformidade com as diretrizes de
54*29d38431SDaniel Pereira   estilo de codificação do kernel.
55*29d38431SDaniel Pereira
56*29d38431SDaniel Pereira - Sua alteração tem implicações no desempenho? Se sim, você deve executar
57*29d38431SDaniel Pereira   benchmarks mostrando qual é o impacto (ou benefício) da sua mudança; um
58*29d38431SDaniel Pereira   resumo dos resultados deve ser incluído junto ao patch.
59*29d38431SDaniel Pereira
60*29d38431SDaniel Pereira - Tenha certeza de que você tem o direito de enviar o código. Se este
61*29d38431SDaniel Pereira   trabalho foi feito para um empregador, o empregador provavelmente tem direito
62*29d38431SDaniel Pereira   sobre o trabalho e deve estar de acordo com a sua liberação sob a GPL.
63*29d38431SDaniel Pereira
64*29d38431SDaniel PereiraComo regra geral, dedicar um pouco de reflexão extra antes de enviar o código
65*29d38431SDaniel Pereiraquase sempre compensa o esforço em pouco tempo.
66*29d38431SDaniel Pereira
67*29d38431SDaniel Pereira
68*29d38431SDaniel PereiraPreparação de patches
69*29d38431SDaniel Pereira---------------------
70*29d38431SDaniel Pereira
71*29d38431SDaniel PereiraA preparação de patches para envio pode dar uma quantidade surpreendente de
72*29d38431SDaniel Pereiratrabalho, mas, mais uma vez, tentar economizar tempo aqui geralmente não é
73*29d38431SDaniel Pereiraaconselhável, mesmo a curto prazo.
74*29d38431SDaniel Pereira
75*29d38431SDaniel PereiraOs patches devem ser preparados contra uma versão específica do kernel. Como
76*29d38431SDaniel Pereiraregra geral, um patch deve ser baseado no mainline atual encontrado na árvore
77*29d38431SDaniel Pereiragit do Linus. Ao basear-se no mainline, comece a partir de um ponto de
78*29d38431SDaniel Pereiralançamento bem conhecido — um release estável ou -rc —, em vez de criar uma
79*29d38431SDaniel Pereirabifurcação (branch) a partir do mainline em um ponto arbitrário.
80*29d38431SDaniel Pereira
81*29d38431SDaniel PereiraNo entanto, pode tornar-se necessário criar versões contra a árvore -mm,
82*29d38431SDaniel Pereiralinux-next ou a árvore de um subsistema, para facilitar testes e revisões mais
83*29d38431SDaniel Pereiraamplos. Dependendo da área do seu patch e do que está acontecendo em outros
84*29d38431SDaniel Pereiralugares, basear um patch contra essas outras árvores pode exigir uma quantidade
85*29d38431SDaniel Pereirasignificativa de trabalho para resolver conflitos e lidar com mudanças de API.
86*29d38431SDaniel Pereira
87*29d38431SDaniel PereiraApenas as alterações mais simples devem ser formatadas como um único patch; tudo
88*29d38431SDaniel Pereirao mais deve ser feito como uma série lógica de mudanças. Dividir patches é uma
89*29d38431SDaniel Pereiraarte; alguns desenvolvedores passam muito tempo descobrindo como fazer isso da
90*29d38431SDaniel Pereiramaneira que a comunidade espera. Existem algumas regras práticas, no entanto,
91*29d38431SDaniel Pereiraque podem ajudar consideravelmente:
92*29d38431SDaniel Pereira
93*29d38431SDaniel Pereira - A série de patches que você envia quase certamente não será a série de
94*29d38431SDaniel Pereira   alterações encontrada no seu sistema de controle de versão de trabalho. Em
95*29d38431SDaniel Pereira   vez disso, as mudanças que você fez precisam ser consideradas em sua forma
96*29d38431SDaniel Pereira   final e, então, divididas de maneiras que façam sentido. Os desenvolvedores
97*29d38431SDaniel Pereira   estão interessados em alterações discretas e autocontidas, não no caminho
98*29d38431SDaniel Pereira   que você percorreu para chegar a essas alterações.
99*29d38431SDaniel Pereira
100*29d38431SDaniel Pereira - Cada alteração logicamente independente deve ser formatada como um patch separado.
101*29d38431SDaniel Pereira   Essas alterações podem ser pequenas ("adicionar um campo a esta estrutura") ou
102*29d38431SDaniel Pereira   grandes (adicionar um driver totalmente novo, por exemplo), mas devem ser
103*29d38431SDaniel Pereira   conceitualmente pequenas e passíveis de uma descrição de uma única linha. Cada
104*29d38431SDaniel Pereira   patch deve fazer uma alteração específica que possa ser revisada por si só e
105*29d38431SDaniel Pereira   verificada para garantir que faz o que diz fazer.
106*29d38431SDaniel Pereira
107*29d38431SDaniel Pereira - Como uma forma de reafirmar a diretriz acima: não misture diferentes tipos de
108*29d38431SDaniel Pereira   alterações no mesmo patch. Se um único patch corrige uma falha crítica de
109*29d38431SDaniel Pereira   segurança, reorganiza algumas estruturas e reformatará o código, há uma grande
110*29d38431SDaniel Pereira   chance de que ele seja ignorado e a correção importante seja perdida.
111*29d38431SDaniel Pereira
112*29d38431SDaniel Pereira - Cada patch deve resultar em um kernel que compile e funcione corretamente; se
113*29d38431SDaniel Pereira   sua série de patches for interrompida no meio, o resultado ainda deve ser um
114*29d38431SDaniel Pereira   kernel funcional. A aplicação parcial de uma série de patches é um cenário
115*29d38431SDaniel Pereira   comum quando a ferramenta "git bisect" é usada para encontrar regressões; se o
116*29d38431SDaniel Pereira   resultado for um kernel quebrado, você tornará a vida mais difícil para os
117*29d38431SDaniel Pereira   desenvolvedores e usuários que estão engajados no nobre trabalho de rastrear
118*29d38431SDaniel Pereira   problemas.
119*29d38431SDaniel Pereira
120*29d38431SDaniel Pereira - No entanto, não exagere. Certa vez, um desenvolvedor enviou um conjunto de
121*29d38431SDaniel Pereira   edições em um único arquivo como 500 patches separados — um ato que não o
122*29d38431SDaniel Pereira   tornou a pessoa mais popular na lista de discussão do kernel. Um único patch
123*29d38431SDaniel Pereira   pode ser razoavelmente grande, desde que ainda contenha uma única alteração
124*29d38431SDaniel Pereira   *lógica*.
125*29d38431SDaniel Pereira
126*29d38431SDaniel Pereira - Pode ser tentador adicionar toda uma nova infraestrutura com uma série de
127*29d38431SDaniel Pereira   patches, mas deixar essa infraestrutura sem uso até que o patch final da série
128*29d38431SDaniel Pereira   ative tudo. Essa tentação deve ser evitada, se possível; se essa série
129*29d38431SDaniel Pereira   adicionar regressões, a bisseção (bisection) apontará o último patch como aquele
130*29d38431SDaniel Pereira   que causou o problema, mesmo que o bug real esteja em outro lugar. Sempre que
131*29d38431SDaniel Pereira   possível, um patch que adiciona código novo deve tornar esse código ativo
132*29d38431SDaniel Pereira   imediatamente.
133*29d38431SDaniel Pereira
134*29d38431SDaniel PereiraTrabalhar para criar a série de patches perfeita pode ser um processo
135*29d38431SDaniel Pereirafrustrante, que exige bastante tempo e reflexão após o "trabalho real" ter sido
136*29d38431SDaniel Pereiraconcluído. Quando feito corretamente, no entanto, é um tempo bem gasto.
137*29d38431SDaniel Pereira
138*29d38431SDaniel Pereira
139*29d38431SDaniel PereiraFormatação de patches e logs de alterações
140*29d38431SDaniel Pereira------------------------------------------
141*29d38431SDaniel Pereira
142*29d38431SDaniel PereiraEntão agora você tem uma série perfeita de patches para enviar, mas o trabalho
143*29d38431SDaniel Pereiraainda não terminou. Cada patch precisa ser formatado em uma mensagem que comunique
144*29d38431SDaniel Pereirade forma rápida e clara o seu propósito para o resto do mundo. Para esse fim,
145*29d38431SDaniel Pereiracada patch será composto pelo seguinte:
146*29d38431SDaniel Pereira
147*29d38431SDaniel Pereira - Uma linha "From" opcional que nomeia o autor do patch. Esta linha só é
148*29d38431SDaniel Pereira   necessária se você estiver repassando o patch de outra pessoa via e-mail,
149*29d38431SDaniel Pereira   mas nunca é demais adicioná-la em caso de dúvida.
150*29d38431SDaniel Pereira
151*29d38431SDaniel Pereira - Uma descrição de uma única linha sobre o que o patch faz. Esta mensagem deve
152*29d38431SDaniel Pereira   ser suficiente para que um leitor que a veja sem outro contexto consiga
153*29d38431SDaniel Pereira   compreender o escopo do patch; esta é a linha que aparecerá nos logs de
154*29d38431SDaniel Pereira   alterações (changelogs) de "forma curta". Esta mensagem geralmente é formatada
155*29d38431SDaniel Pereira   com o nome do subsistema relevante primeiro, seguido pelo propósito do patch.
156*29d38431SDaniel Pereira   Por exemplo:
157*29d38431SDaniel Pereira
158*29d38431SDaniel Pereira   ::
159*29d38431SDaniel Pereira
160*29d38431SDaniel Pereira     gpio: fix build on CONFIG_GPIO_SYSFS=n
161*29d38431SDaniel Pereira
162*29d38431SDaniel Pereira - Uma linha em branco seguida por uma descrição detalhada do conteúdo do
163*29d38431SDaniel Pereira   patch. Esta descrição pode ser tão longa quanto necessário; ela deve dizer
164*29d38431SDaniel Pereira   o que o patch faz e por que ele deve ser aplicado ao kernel.
165*29d38431SDaniel Pereira
166*29d38431SDaniel Pereira - Uma ou mais linhas de marcadores (tags) com, no mínimo, uma linha
167*29d38431SDaniel Pereira   "Signed-off-by:" do autor do patch. Os marcadores serão descritos em mais
168*29d38431SDaniel Pereira   detalhes abaixo.
169*29d38431SDaniel Pereira
170*29d38431SDaniel PereiraOs itens acima, juntos, formam o log de alterações (changelog) do patch. Escrever
171*29d38431SDaniel Pereirabons changelogs é uma arte crucial, mas frequentemente negligenciada; vale a
172*29d38431SDaniel Pereirapena dedicar mais um momento para discutir esse assunto. Ao escrever um
173*29d38431SDaniel Pereirachangelog, você deve ter em mente que várias pessoas diferentes lerão suas
174*29d38431SDaniel Pereirapalavras. Elas incluem mantenedores de subsistemas e revisores que precisam
175*29d38431SDaniel Pereiradecidir se o patch deve ser incluído, distribuidores e outros mantenedores
176*29d38431SDaniel Pereiratentando decidir se um patch deve ser retroportado (backported) para outros
177*29d38431SDaniel Pereirakernels, caçadores de bugs se perguntando se o patch é responsável por um
178*29d38431SDaniel Pereiraproblema que estão perseguindo, usuários que querem saber como o kernel mudou e
179*29d38431SDaniel Pereiramuito mais. Um bom changelog transmite a informação necessária para todas essas
180*29d38431SDaniel Pereirapessoas da maneira mais direta e concisa possível.
181*29d38431SDaniel Pereira
182*29d38431SDaniel PereiraPara esse fim, a linha de resumo deve descrever os efeitos e a motivação da
183*29d38431SDaniel Pereiraalteração o melhor possível, dada a restrição de uma única linha. A descrição
184*29d38431SDaniel Pereiradetalhada pode então ampliar esses tópicos e fornecer qualquer informação
185*29d38431SDaniel Pereiraadicional necessária. Se o patch corrige um bug, cite o commit que introduziu o
186*29d38431SDaniel Pereirabug, se possível (e, por favor, forneça tanto o ID do commit quanto o título ao
187*29d38431SDaniel Pereiracitar commits). Se um problema estiver associado a uma saída específica de log
188*29d38431SDaniel Pereiraou do compilador, inclua essa saída para ajudar outras pessoas que buscam uma
189*29d38431SDaniel Pereirasolução para o mesmo problema. Se a mudança tem o objetivo de dar suporte a
190*29d38431SDaniel Pereiraoutras alterações que virão em um patch posterior, informe isso. Se as APIs
191*29d38431SDaniel Pereirainternas forem alteradas, detalhe essas mudanças e como outros desenvolvedores
192*29d38431SDaniel Pereiradevem reagir. Em geral, quanto mais você puder se colocar no lugar de todos que
193*29d38431SDaniel Pereiralerão seu changelog, melhor será esse changelog (e o kernel como um todo).
194*29d38431SDaniel Pereira
195*29d38431SDaniel PereiraDesnecessário dizer que o changelog deve ser o texto usado ao submeter (commit)
196*29d38431SDaniel Pereiraa alteração em um sistema de controle de versão. Ele será seguido por:
197*29d38431SDaniel Pereira
198*29d38431SDaniel Pereira - O patch em si, no formato de patch unificado ("-u"). O uso da opção "-p" no
199*29d38431SDaniel Pereira   diff associará os nomes das funções às alterações, tornando o patch resultante
200*29d38431SDaniel Pereira   mais fácil de ser lido por outras pessoas.
201*29d38431SDaniel Pereira
202*29d38431SDaniel PereiraAs tags  já mencionadas brevemente acima são usados para fornecer
203*29d38431SDaniel Pereirainformações sobre como o patch surgiu. Eles são descritos em detalhes no
204*29d38431SDaniel Pereiradocumento :ref:`Documentation/process/submitting-patches.rst <submittingpatches>`;
205*29d38431SDaniel Pereirao que se segue aqui é um breve resumo.
206*29d38431SDaniel Pereira
207*29d38431SDaniel PereiraUm marcador é usado para se referir a commits anteriores que introduziram os
208*29d38431SDaniel Pereiraproblemas corrigidos pelo patch::
209*29d38431SDaniel Pereira
210*29d38431SDaniel Pereira	Fixes: 1f2e3d4c5b6a ("The first line of the commit specified by the first 12 characters of its SHA-1 ID")
211*29d38431SDaniel Pereira
212*29d38431SDaniel PereiraOutro marcador é usado para vincular páginas da web com contextos ou detalhes
213*29d38431SDaniel Pereiraadicionais, por exemplo, uma discussão anterior que levou ao patch ou um
214*29d38431SDaniel Pereiradocumento com uma especificação implementada pelo patch::
215*29d38431SDaniel Pereira
216*29d38431SDaniel Pereira  Link: https://example.com/somewhere.html  optional-other-stuff
217*29d38431SDaniel Pereira
218*29d38431SDaniel PereiraDe acordo com as orientações do Pinguim-Chefe, um marcador Link
219*29d38431SDaniel Pereirasó deve ser adicionado a um commit se ele levar a informações úteis que não
220*29d38431SDaniel Pereirasão encontradas no próprio commit.
221*29d38431SDaniel Pereira
222*29d38431SDaniel PereiraSe a URL apontar para um relatório de bug público que está sendo corrigido pelo
223*29d38431SDaniel Pereirapatch, use o marcador "Closes:" em seu lugar::
224*29d38431SDaniel Pereira
225*29d38431SDaniel Pereira	Closes: https://example.com/issues/1234  optional-other-stuff
226*29d38431SDaniel Pereira
227*29d38431SDaniel PereiraAlguns rastreadores de bugs têm a capacidade de fechar problemas de forma
228*29d38431SDaniel Pereiraautomática quando um commit com tal marcador é aplicado. Alguns bots que
229*29d38431SDaniel Pereiramonitoram listas de discussão também podem rastrear esses marcadores e tomar certas
230*29d38431SDaniel Pereiraações. Rastreadores de bugs privados e URLs inválidas são proibidos.
231*29d38431SDaniel Pereira
232*29d38431SDaniel PereiraOutro tipo de marcador é usado para documentar quem esteve envolvido no
233*29d38431SDaniel Pereiradesenvolvimento do patch. Cada um deles usa este formato::
234*29d38431SDaniel Pereira
235*29d38431SDaniel Pereira  tag: Full Name <email address>  optional-other-stuff
236*29d38431SDaniel Pereira
237*29d38431SDaniel PereiraOs marcadores de uso comum são:
238*29d38431SDaniel Pereira
239*29d38431SDaniel Pereira - Signed-off-by: esta é uma certificação do desenvolvedor de que ele ou ela
240*29d38431SDaniel Pereira   tem o direito de enviar o patch para inclusão no kernel. É um acordo com o
241*29d38431SDaniel Pereira   Developer's Certificate of Origin (Certificado de Origem do Desenvolvedor),
242*29d38431SDaniel Pereira   cujo texto completo pode ser encontrado em
243*29d38431SDaniel Pereira   :ref:`Documentation/process/submitting-patches.rst <submittingpatches>`.
244*29d38431SDaniel Pereira   Códigos sem um signoff adequado não podem ser mesclados (merged) no mainline.
245*29d38431SDaniel Pereira
246*29d38431SDaniel Pereira - Co-developed-by: afirma que o patch foi criado em coautoria por vários
247*29d38431SDaniel Pereira   desenvolvedores; é usado para dar atribuição aos coautores (além do autor
248*29d38431SDaniel Pereira   atribuído pelo marcador From:) quando várias pessoas trabalham em um único
249*29d38431SDaniel Pereira   patch. Cada Co-developed-by: deve ser imediatamente seguido por um
250*29d38431SDaniel Pereira   Signed-off-by: do coautor associado. Detalhes e exemplos podem ser encontrados
251*29d38431SDaniel Pereira   em :ref:`Documentation/process/submitting-patches.rst <submittingpatches>`.
252*29d38431SDaniel Pereira
253*29d38431SDaniel Pereira - Acked-by: indica o acordo de outro desenvolvedor (frequentemente um
254*29d38431SDaniel Pereira   mantenedor do código relevante) de que o patch é apropriado para inclusão
255*29d38431SDaniel Pereira   no kernel.
256*29d38431SDaniel Pereira
257*29d38431SDaniel Pereira - Tested-by: afirma que a pessoa nomeada testou o patch e verificou que ele
258*29d38431SDaniel Pereira   funciona.
259*29d38431SDaniel Pereira
260*29d38431SDaniel Pereira - Reviewed-by: o desenvolvedor nomeado revisou o patch para verificar sua
261*29d38431SDaniel Pereira   correção; veja a declaração do revisor em
262*29d38431SDaniel Pereira   :ref:`Documentation/process/submitting-patches.rst <submittingpatches>`
263*29d38431SDaniel Pereira   para mais detalhes.
264*29d38431SDaniel Pereira
265*29d38431SDaniel Pereira - Reported-by: nomeia um usuário que relatou o problema que é corrigido por este
266*29d38431SDaniel Pereira   patch; este marcador é usado para dar crédito às pessoas (frequentemente sub-
267*29d38431SDaniel Pereira   valorizadas) que testam nosso código e nos informam quando as coisas não
268*29d38431SDaniel Pereira   funcionam corretamente. Nota: este marcador deve ser seguido por um marcador
269*29d38431SDaniel Pereira   Closes: apontando para o relato, a menos que o relato não esteja disponível na
270*29d38431SDaniel Pereira   web. O marcador Link: pode ser usado em vez de Closes: se o patch corrigir
271*29d38431SDaniel Pereira   apenas uma parte do(s) problema(s) relatado(s).
272*29d38431SDaniel Pereira
273*29d38431SDaniel Pereira - A Suggested-by: este marcador indica que a ideia do patch foi sugerida pela
274*29d38431SDaniel Pereira   pessoa nomeada e garante o crédito a ela pela ideia. Isso, espera-se, irá
275*29d38431SDaniel Pereira   inspirá-la a nos ajudar novamente no futuro.
276*29d38431SDaniel Pereira
277*29d38431SDaniel Pereira - Cc: a pessoa nomeada recebeu uma cópia do patch e teve a oportunidade de
278*29d38431SDaniel Pereira   comentar sobre ele.
279*29d38431SDaniel Pereira
280*29d38431SDaniel PereiraTenha cuidado ao adicionar os marcadores mencionados acima aos seus patches, pois
281*29d38431SDaniel Pereiratodos, exceto Cc:, Reported-by: e Suggested-by:, precisam de permissão explícita
282*29d38431SDaniel Pereirafontes da pessoa nomeada. Para esses três, a permissão implícita é suficiente se
283*29d38431SDaniel Pereiraa pessoa contribuiu para o kernel Linux usando esse nome e endereço de e-mail de
284*29d38431SDaniel Pereiraacordo com os arquivos do lore ou o histórico de commits — e, no caso de
285*29d38431SDaniel PereiraReported-by: e Suggested-by:, se fizeram o relato ou a sugestão publicamente.
286*29d38431SDaniel PereiraNota: o bugzilla.kernel.org é um local público nesse sentido, mas os endereços
287*29d38431SDaniel Pereirade e-mail usados lá são privados; portanto, não os exponha em marcadores, a menos
288*29d38431SDaniel Pereiraque a pessoa os tenha usado em contribuições anteriores.
289*29d38431SDaniel Pereira
290*29d38431SDaniel Pereira
291*29d38431SDaniel PereiraEnviando o patch
292*29d38431SDaniel Pereira-----------------
293*29d38431SDaniel Pereira
294*29d38431SDaniel PereiraAntes de enviar seus patches por e-mail, há algumas outras coisas com as quais
295*29d38431SDaniel Pereiravocê deve se preocupar:
296*29d38431SDaniel Pereira
297*29d38431SDaniel Pereira - Você tem certeza de que seu cliente de e-mail não vai corromper os patches?
298*29d38431SDaniel Pereira   Patches que sofreram alterações desnecessárias de espaço em branco ou quebra
299*29d38431SDaniel Pereira   de linha causadas pelo cliente de e-mail não serão aplicados na outra ponta
300*29d38431SDaniel Pereira   e, frequentemente, não serão examinados em detalhes. Se houver qualquer
301*29d38431SDaniel Pereira   dúvida, envie o patch para você mesmo e certifique-se de que ele chegue intacto.
302*29d38431SDaniel Pereira
303*29d38431SDaniel Pereira   O documento :ref:`Documentation/process/email-clients.rst <email_clients>`
304*29d38431SDaniel Pereira   possui algumas dicas úteis sobre como fazer clientes de e-mail específicos
305*29d38431SDaniel Pereira   funcionarem para o envio de patches.
306*29d38431SDaniel Pereira
307*29d38431SDaniel Pereira - Você tem certeza de que seu patch está livre de erros bobos? Você deve sempre
308*29d38431SDaniel Pereira   passar os patches pelo scripts/checkpatch.pl e corrigir as reclamações que
309*29d38431SDaniel Pereira   ele apresentar. Por favor, tenha em mente que o checkpatch.pl, embora seja a
310*29d38431SDaniel Pereira   personificação de uma quantidade razoável de reflexão sobre como os patches do
311*29d38431SDaniel Pereira   kernel devem parecer, não é mais inteligente que você. Se corrigir uma
312*29d38431SDaniel Pereira   reclamação do checkpatch.pl piorar o código, não o faça.
313*29d38431SDaniel Pereira
314*29d38431SDaniel PereiraOs patches devem sempre ser enviados como texto simples (plain text). Por favor,
315*29d38431SDaniel Pereiranão os envie como anexos; isso torna muito mais difícil para os revisores citarem
316*29d38431SDaniel Pereiratrechos do patch em suas respostas. Em vez disso, coloque o patch diretamente no
317*29d38431SDaniel Pereiracorpo da sua mensagem.
318*29d38431SDaniel Pereira
319*29d38431SDaniel PereiraAo enviar patches por e-mail, é importante enviar cópias para qualquer pessoa
320*29d38431SDaniel Pereiraque possa estar interessada neles. Ao contrário de alguns outros projetos, o
321*29d38431SDaniel Pereirakernel incentiva as pessoas a pecarem pelo excesso, enviando cópias demais; não
322*29d38431SDaniel Pereiraassuma que as pessoas relevantes verão sua publicação nas listas de discussão. Em
323*29d38431SDaniel Pereiraparticular, as cópias devem ir para:
324*29d38431SDaniel Pereira
325*29d38431SDaniel Pereira- O(s) mantenedor(es) do(s) subsistema(s) afetado(s). Como descrito antes, o
326*29d38431SDaniel Pereira   arquivo MAINTAINERS é o primeiro lugar para procurar por essas pessoas.
327*29d38431SDaniel Pereira
328*29d38431SDaniel Pereira - Outros desenvolvedores que estiveram trabalhando na mesma área — especialmente
329*29d38431SDaniel Pereira   aqueles que possam estar trabalhando lá agora. Usar o git para ver quem mais
330*29d38431SDaniel Pereira   modificou os arquivos nos quais você está trabalhando pode ser útil.
331*29d38431SDaniel Pereira
332*29d38431SDaniel Pereira - Se você estiver respondendo a um relato de bug ou a uma solicitação de recurso
333*29d38431SDaniel Pereira   (feature request), envie uma cópia também para o autor original.
334*29d38431SDaniel Pereira
335*29d38431SDaniel Pereira - Envie uma cópia para a lista de discussão relevante ou, se nada mais se
336*29d38431SDaniel Pereira   aplicar, para a lista linux-kernel.
337*29d38431SDaniel Pereira
338*29d38431SDaniel Pereira - Se você estiver corrigindo um bug, pense se a correção deve ir para a próxima
339*29d38431SDaniel Pereira   atualização estável (stable update). Se sim, stable@vger.kernel.org deve
340*29d38431SDaniel Pereira   receber uma cópia do patch. Adicione também um "Cc: stable@vger.kernel.org"
341*29d38431SDaniel Pereira   aos marcadores (tags) dentro do próprio patch; isso fará com que a equipe do
342*29d38431SDaniel Pereira   stable receba uma notificação quando sua correção for integrada ao mainline.
343*29d38431SDaniel Pereira
344*29d38431SDaniel PereiraAo selecionar os destinatários para um patch, é bom ter uma ideia de quem você
345*29d38431SDaniel Pereiraacha que eventualmente aceitará o patch e fará a mesclagem (merge). Embora seja
346*29d38431SDaniel Pereirapossível enviar patches diretamente para Linus Torvalds e fazer com que ele os
347*29d38431SDaniel Pereiramescle, as coisas normalmente não são feitas dessa forma. Linus está ocupado, e
348*29d38431SDaniel Pereiraexistem mantenedores de subsistemas que vigiam partes específicas do kernel. Em
349*29d38431SDaniel Pereirageral, você desejará que esse mantenedor mescle seus patches. Se não houver um
350*29d38431SDaniel Pereiramantenedor óbvio, Andrew Morton costuma ser o destino de patch de último recurso.
351*29d38431SDaniel Pereira
352*29d38431SDaniel PereiraOs patches precisam de boas linhas de assunto (subject lines). O formato canônico
353*29d38431SDaniel Pereirapara a linha de um patch é algo como:
354*29d38431SDaniel Pereira
355*29d38431SDaniel Pereira::
356*29d38431SDaniel Pereira
357*29d38431SDaniel Pereira
358*29d38431SDaniel Pereira  [PATCH nn/mm] subsys: descrição de uma linha do patch
359*29d38431SDaniel Pereira
360*29d38431SDaniel Pereiraonde "nn" é o número ordinal do patch, "mm" é o número total de patches na
361*29d38431SDaniel Pereirasérie, e "subsys" é o nome do subsistema afetado. Claramente, nn/mm pode ser
362*29d38431SDaniel Pereiraomitido no caso de um patch único e isolado (standalone).
363*29d38431SDaniel Pereira
364*29d38431SDaniel PereiraSe você tiver uma série significativa de patches, é costumeiro enviar uma
365*29d38431SDaniel Pereiradescrição introdutória como a parte zero. Essa convenção não é seguida
366*29d38431SDaniel Pereirauniversalmente, no entanto; se você a utilizar, lembre-se de que as informações
367*29d38431SDaniel Pereirada introdução não entram nos changelogs do kernel. Portanto, certifique-se de
368*29d38431SDaniel Pereiraque os patches, em si, possuam informações completas em seus changelogs.
369*29d38431SDaniel Pereira
370*29d38431SDaniel PereiraEm geral, a segunda parte e as subsequentes de um patch de múltiplas partes devem
371*29d38431SDaniel Pereiraser enviadas como uma resposta à primeira parte, de modo que todas formem uma
372*29d38431SDaniel Pereiraúnica linha de discussão (thread) na ponta receptora. Ferramentas como o git e o
373*29d38431SDaniel Pereiraquilt possuem comandos para enviar por e-mail um conjunto de patches com o
374*29d38431SDaniel Pereiraencadeamento correto. Se você tiver uma série longa, contudo, e estiver usando o
375*29d38431SDaniel Pereiragit, por favor, evite a opção --chain-reply-to para não criar um aninhamento
376*29d38431SDaniel Pereiraexcepcionalmente profundo.
377