392 lines
20 KiB
ReStructuredText
392 lines
20 KiB
ReStructuredText
|
|
.. include:: ../disclaimer-sp.rst
|
|||
|
|
|
|||
|
|
:Original: Documentation/process/5.Posting.rst
|
|||
|
|
:Translator: Carlos Bilbao <carlos.bilbao.osdev@gmail.com> and Avadhut Naik <avadhut.naik@amd.com>
|
|||
|
|
|
|||
|
|
.. _sp_development_posting:
|
|||
|
|
|
|||
|
|
Publicación de parches
|
|||
|
|
======================
|
|||
|
|
|
|||
|
|
Tarde o temprano, llega el momento en que su trabajo esté listo para ser
|
|||
|
|
presentado a la comunidad para su revisión y, eventualmente, su inclusión
|
|||
|
|
en el kernel mainline. Como era de esperar, la comunidad de desarrollo del
|
|||
|
|
kernel ha desarrollado un conjunto de convenciones y procedimientos que se
|
|||
|
|
utilizan en la publicación de parches; seguirlos hará la vida mucho más
|
|||
|
|
fácil para todos los involucrados. Este documento intentará cubrir estas
|
|||
|
|
expectativas con un detalle razonable; también se puede encontrar más
|
|||
|
|
información en los archivos.
|
|||
|
|
:ref:`Documentation/translations/sp_SP/process/submitting-patches.rst <sp_submittingpatches>`
|
|||
|
|
and :ref:`Documentation/translations/sp_SP/process/submit-checklist.rst <sp_submitchecklist>`
|
|||
|
|
|
|||
|
|
Cuando publicar
|
|||
|
|
---------------
|
|||
|
|
|
|||
|
|
Hay una tentación constante de evitar publicar parches antes de que
|
|||
|
|
estén completamente “listos”. Para parches simples, eso no es un
|
|||
|
|
problema. Sin embargo, si el trabajo que se está realizando es complejo,
|
|||
|
|
hay mucho que ganar al obtener comentarios de la comunidad antes de que
|
|||
|
|
se complete el trabajo. Por lo tanto, se debería considerar publicar
|
|||
|
|
trabajo en progreso, o incluso poner a disposición un árbol de git para
|
|||
|
|
que los desarrolladores interesados puedan ponerse al día con su trabajo
|
|||
|
|
en cualquier momento.
|
|||
|
|
|
|||
|
|
Al publicar código que aún no se considera listo para su inclusión, es
|
|||
|
|
una buena idea decirlo en la propia publicación. Además, mencione
|
|||
|
|
cualquier trabajo importante que aún falte por hacer y cualquier problema
|
|||
|
|
conocido. Menos personas mirarán los parches que se sabe que están a
|
|||
|
|
medias, pero aquellos que lo hagan vendrán con la idea de que pueden
|
|||
|
|
ayudarlo a llevar el trabajo en la dirección correcta.
|
|||
|
|
|
|||
|
|
Antes de crear parches
|
|||
|
|
----------------------
|
|||
|
|
|
|||
|
|
Se deben hacer varias cosas antes de considerar enviar parches a la
|
|||
|
|
comunidad de desarrollo. Estas incluyen:
|
|||
|
|
|
|||
|
|
- Pruebe el código en la medida de lo posible. Utilice las herramientas
|
|||
|
|
de depuración del kernel, asegúrese de que el kernel se compilará con
|
|||
|
|
todas las combinaciones razonables de opciones de configuración, use
|
|||
|
|
compiladores cruzados para compilar para diferentes arquitecturas, etc.
|
|||
|
|
|
|||
|
|
- Asegúrese de que su código cumpla con las directrices de estilo de
|
|||
|
|
codificación del kernel.
|
|||
|
|
|
|||
|
|
- ¿Su cambio tiene implicaciones de rendimiento? Si es así, debe ejecutar
|
|||
|
|
puntos de referencia que muestren cuál es el impacto (o beneficio) de
|
|||
|
|
su cambio; se debe incluir un resumen de los resultados con el parche.
|
|||
|
|
|
|||
|
|
- Asegúrese de que tiene derecho a publicar el código. Si este trabajo
|
|||
|
|
se realizó para un empleador, es probable que el empleador tenga
|
|||
|
|
derecho al trabajo y debe estar de acuerdo con su lanzamiento bajo la
|
|||
|
|
GPL.
|
|||
|
|
|
|||
|
|
Como regla general, pensar un poco más antes de publicar el código casi
|
|||
|
|
siempre compensa el esfuerzo en poco tiempo.
|
|||
|
|
|
|||
|
|
Preparación del parche
|
|||
|
|
----------------------
|
|||
|
|
|
|||
|
|
La preparación de parches para su publicación puede ser una cantidad
|
|||
|
|
sorprendente de trabajo, pero, una vez más, intentar ahorrar tiempo aquí
|
|||
|
|
generalmente no es recomendable, ni siquiera a corto plazo.
|
|||
|
|
|
|||
|
|
Los parches deben prepararse contra una versión específica del kernel.
|
|||
|
|
Como regla general, un parche debe basarse en el mainline actual que se
|
|||
|
|
encuentra en el árbol git de Linus. Al basarse en el mainline, comience
|
|||
|
|
con un punto de lanzamiento bien conocido, una versión estable o -rc, en
|
|||
|
|
lugar de bifurcarse fuera del mainline en un punto arbitrario.
|
|||
|
|
|
|||
|
|
Puede ser necesario hacer revisiones contra -mm, linux-next o un árbol de
|
|||
|
|
subsistemas para facilitar pruebas y revisiones más amplias. Dependiendo
|
|||
|
|
del área de su parche y de lo que esté sucediendo en otros lugares, basar
|
|||
|
|
un parche en estos otros árboles puede requerir una cantidad significativa
|
|||
|
|
de trabajo para resolver conflictos y lidiar con los cambios de API.
|
|||
|
|
|
|||
|
|
Solo los cambios más simples deben formatearse como un solo parche; todo
|
|||
|
|
lo demás debe hacerse como una serie lógica de cambios. Dividir parches
|
|||
|
|
es un poco un arte; algunos desarrolladores pasan mucho tiempo averiguando
|
|||
|
|
cómo hacerlo de la manera que la comunidad espera. Sin embargo, hay
|
|||
|
|
algunas reglas generales que pueden ayudar considerablemente:
|
|||
|
|
|
|||
|
|
- La serie de parches que publique casi seguramente no será la serie de
|
|||
|
|
cambios que se encuentran en su sistema de control de revisiones. En su
|
|||
|
|
lugar, los cambios que ha realizado deben considerarse en su forma
|
|||
|
|
final y luego dividirse de manera que tengan sentido. A los
|
|||
|
|
desarrolladores les interesan los cambios discretos y autónomos, no el
|
|||
|
|
camino que tomó para llegar a esos cambios.
|
|||
|
|
|
|||
|
|
- Cada cambio lógicamente independiente debe formatearse como un parche
|
|||
|
|
separado. Estos cambios pueden ser pequeños (“agregar un campo a esta
|
|||
|
|
estructura”) o grandes (agregar un nuevo controlador significativo,
|
|||
|
|
por ejemplo), pero deben ser conceptualmente pequeños y susceptibles
|
|||
|
|
de una descripción de una línea. Cada parche debe hacer un cambio
|
|||
|
|
especifico que pueda ser revisado por sí mismo y verificado para hacer
|
|||
|
|
lo que dice que hace.
|
|||
|
|
|
|||
|
|
- Para reafirmar la pauta anterior: no mezcle diferentes tipos de cambios
|
|||
|
|
en el mismo parche. Si un solo parche corrige un error de seguridad
|
|||
|
|
crítico, reorganiza algunas estructuras y reformatea el código, es muy
|
|||
|
|
probable que se pase por alto y se pierda la solución importante.
|
|||
|
|
|
|||
|
|
- Cada parche debe producir un kernel que se compile y funcione
|
|||
|
|
correctamente; si su serie de parches se interrumpe en el medio, el
|
|||
|
|
resultado debería seguir siendo un kernel funcional. La aplicación
|
|||
|
|
parcial de una serie de parches es un escenario común cuando se
|
|||
|
|
utiliza la herramienta “git bisect” para encontrar regresiones; si
|
|||
|
|
el resultado es un kernel roto, hará la vida más difícil para los
|
|||
|
|
desarrolladores y usuarios que participan en el noble trabajo de
|
|||
|
|
rastrear problemas.
|
|||
|
|
|
|||
|
|
- Sin embargo, no lo exagere. Un desarrollador una vez publicó un conjunto
|
|||
|
|
de ediciones en un solo archivo como 500 parches separados – un acto
|
|||
|
|
que no lo convirtió en la persona más popular en la lista de correo del
|
|||
|
|
kernel. Un solo parche puede ser razonablemente grande si todavía
|
|||
|
|
contiene un solo cambio *lógico*.
|
|||
|
|
|
|||
|
|
- Puede ser tentador agregar una infraestructura completamente nueva con
|
|||
|
|
una serie de parches, pero dejar esa infraestructura sin usar hasta el
|
|||
|
|
parche final de la serie lo habilite todo. Esta tentación debe evitarse
|
|||
|
|
si es posible; si esa serie agrega regresiones, bisection señalará el
|
|||
|
|
ultimo parche como el que causó el problema, aunque el error real esté
|
|||
|
|
en otra parte. Siempre que sea posible, un parche que agregue código
|
|||
|
|
nuevo debe hacer que ese código se active de inmediato.
|
|||
|
|
|
|||
|
|
Trabajar para crear la serie de parches perfecta puede ser un proceso
|
|||
|
|
frustrante que lleva mucho tiempo y reflexión después de que el “trabajo
|
|||
|
|
real” se ha hecho. Sin embargo, cuando se hace correctamente, es un tiempo
|
|||
|
|
bien empleado.
|
|||
|
|
|
|||
|
|
Formato de parches y registros de cambios
|
|||
|
|
-----------------------------------------
|
|||
|
|
|
|||
|
|
Así que ahora tiene una serie perfecta de parches para publicar, pero el
|
|||
|
|
trabajo aún no se ha hecho. Cada parche necesita ser formateado en un
|
|||
|
|
mensaje que comunique rápida y claramente su propósito al resto del
|
|||
|
|
mundo. A tal fin, cada parche se compondrá de lo siguiente:
|
|||
|
|
|
|||
|
|
- Una línea opcional “From” que nombra al autor del parche. Esta línea
|
|||
|
|
solo es necesaria si pasa el parche de otra persona por correo
|
|||
|
|
electrónico, pero nunca está de más agregarla en caso de duda.
|
|||
|
|
|
|||
|
|
- Una descripción de una línea de lo que hace el parche. Este mensaje
|
|||
|
|
debería ser suficiente para que un lector que lo vea sin otro contexto
|
|||
|
|
pueda entender el alcance del parche; la línea aparecerá en los
|
|||
|
|
registros de cambios de “forma corta”. Este mensaje generalmente se
|
|||
|
|
formatea con el nombre del subsistema relevante primero, seguido del
|
|||
|
|
propósito del parche. Por ejemplo:
|
|||
|
|
|
|||
|
|
::
|
|||
|
|
|
|||
|
|
gpio: fix build on CONFIG_GPIO_SYSFS=n
|
|||
|
|
|
|||
|
|
- Una línea en blanco seguida de una descripción detallada del contenido
|
|||
|
|
del parche. Esta descripción puede ser tan larga como sea necesario;
|
|||
|
|
debería decir qué hace el parche y por qué debe aplicarse al kernel.
|
|||
|
|
|
|||
|
|
- Una o más líneas de etiquetas, con, como mínimo, una línea
|
|||
|
|
Signed-off-by: del autor del parche. Las etiquetas se describirán con
|
|||
|
|
más detalle a continuación.
|
|||
|
|
|
|||
|
|
Los elementos de arriba, juntos, forman el registro de cambios para el
|
|||
|
|
parche. Escribir buenos registros de cambios es un arte crucial, pero a
|
|||
|
|
menudo descuidado; vale la pena pasar otro momento discutiendo este tema.
|
|||
|
|
Al escribir un registro de cambios, debe recordar que muchas personas
|
|||
|
|
diferentes leerán sus palabras. Estos incluyen a los maintainers y
|
|||
|
|
revisores de subsistemas que necesitan decidir si el parche debe
|
|||
|
|
incluirse, a los distribuidores y otros maintainers que intentan
|
|||
|
|
determinar si un parche debe ser “backported” a otros kernels, a los
|
|||
|
|
cazadores de errores que se preguntan si el parche es responsable de un
|
|||
|
|
problema que están persiguiendo, a los usuarios que quieren saber cómo
|
|||
|
|
ha cambiado el kernel, y más. Un buen registro de cambios transmite la
|
|||
|
|
información necesaria a todas estas personas de la forma más directa y
|
|||
|
|
concisa posible.
|
|||
|
|
|
|||
|
|
Con ese fin, la línea de resumen debe describir los efectos y la
|
|||
|
|
motivación del cambio, así como lo mejor posible dada la restricción de
|
|||
|
|
una línea. La descripción detallada puede ampliar esos temas y
|
|||
|
|
proporcionar cualquier información adicional necesaria. Si el parche
|
|||
|
|
corrige un error, cita el commit que introdujo el error si es posible (y
|
|||
|
|
por favor, proporcione tanto el ID del commit como el título al citar
|
|||
|
|
commits). Si un problema está asociado con un registro específico o la
|
|||
|
|
salida del compilador, incluya esa salida para ayudar a otros usuarios a
|
|||
|
|
buscar una solución al mismo problema. Si el cambio está destinado a
|
|||
|
|
apoyar otros cambios que llegarán en un parche posterior, dígalo. Si se
|
|||
|
|
cambian las API internas, detalle esos cambios y cómo deben responder
|
|||
|
|
otros desarrolladores. En general, cuanto más pueda ponerse en los zapatos
|
|||
|
|
de todos los que leerán su registro de cambios, mejor será ese registro de
|
|||
|
|
cambios (y el kernel en su conjunto).
|
|||
|
|
|
|||
|
|
No hace falta decir que el registro de cambios debe ser el texto utilizado
|
|||
|
|
al realizar el commit en un sistema de control de revisiones. Será seguido
|
|||
|
|
por:
|
|||
|
|
|
|||
|
|
- El parche, en el formato unificado de parche (“-u”). Usar la opción
|
|||
|
|
“-p” en diff asociará los nombres de las funciones con los cambios, lo
|
|||
|
|
que hará que el parche resultante sea más fácil de leer para otros.
|
|||
|
|
|
|||
|
|
Debe evitar incluir cambios en archivos irrelevantes (los generados por
|
|||
|
|
el proceso de compilación, por ejemplo, o los archivos de respaldo del
|
|||
|
|
editor) en el parche. El archivo “dontdiff” en el directorio de
|
|||
|
|
Documentation puede ayudar en este sentido; páselo a diff con la
|
|||
|
|
opción “-X”.
|
|||
|
|
|
|||
|
|
Las etiquetas ya mencionadas brevemente anteriormente proporcionan
|
|||
|
|
información sobre cómo surgió el parche. Se describen en detalle en el
|
|||
|
|
documento
|
|||
|
|
:ref:`Documentation/translations/sp_SP/process/submitting-patches.rst <sp_submittingpatches>`;
|
|||
|
|
lo que sigue aquí es un breve resumen.
|
|||
|
|
|
|||
|
|
Una etiqueta se usa para referirse a commits anteriores que introdujeron
|
|||
|
|
problemas corregidos por el parche::
|
|||
|
|
|
|||
|
|
Fixes: 1f2e3d4c5b6a ("La primera línea del commit especificada por los primeros 12 caracteres de su ID SHA-1.")
|
|||
|
|
|
|||
|
|
Otra etiqueta se utiliza para vincular páginas web con información
|
|||
|
|
adicional o detalles, por ejemplo, una discusión previa que condujo al
|
|||
|
|
parche o un documento con una especificación implementada por el parche::
|
|||
|
|
|
|||
|
|
Link: https://example.com/somewhere.html otras cosas opcionales
|
|||
|
|
|
|||
|
|
Muchos maintainers, al aplicar un parche, también agregan esta etiqueta
|
|||
|
|
para vincular a la última publicación de revisión pública del parche; a
|
|||
|
|
menudo, eso se hace automáticamente mediante herramientas como b4 o git
|
|||
|
|
hook como el que se describe en
|
|||
|
|
'Documentation/maintainer/configure-git.rst'.
|
|||
|
|
|
|||
|
|
Si la URL apunta a un informe de error público que está siendo corregido
|
|||
|
|
por el parche, use la etiqueta “Closes:” (Cierra) en su lugar::
|
|||
|
|
|
|||
|
|
Closes: https://example.com/issues/1234 otras cosas opcionales
|
|||
|
|
|
|||
|
|
Algunos rastreadores de errores tienen la capacidad de cerrar problemas
|
|||
|
|
automáticamente cuando se aplica un commit con tal etiqueta. Algunos bots
|
|||
|
|
que monitorean listas de correo también pueden rastrear dichas etiquetas
|
|||
|
|
y realizar ciertas acciones. Los rastreadores de errores privados y las
|
|||
|
|
URL no válidas están prohibidos.
|
|||
|
|
|
|||
|
|
Otro tipo de etiqueta se utiliza para documentar quién estuvo involucrado
|
|||
|
|
en el desarrollo del parche. Cada uno de estos utiliza este formato::
|
|||
|
|
|
|||
|
|
tag: Full Name <email address> otras cosas opcionales
|
|||
|
|
|
|||
|
|
Las etiquetas de uso común son:
|
|||
|
|
|
|||
|
|
- Signed-off-by: esta es una certificación del desarrollador de que él
|
|||
|
|
o ella tiene el derecho de enviar el parche para su inclusión en el
|
|||
|
|
kernel. Es un acuerdo con el Certificado de Origen del Desarrollador,
|
|||
|
|
que se encuentra en
|
|||
|
|
:ref:`Documentation/translations/sp_SP/process/submitting-patches.rst <sp_submittingpatches>`.
|
|||
|
|
El código sin la firma adecuada no se puede fusionar en el mainline.
|
|||
|
|
|
|||
|
|
- Co-developed-by: indica que el parche fue co-creado por varios
|
|||
|
|
desarrolladores; se utiliza para atribuir a los coautores (además del
|
|||
|
|
autor atribuido por la etiqueta From:) cuando varias personas trabajan
|
|||
|
|
en un solo parche. Cada Co-developed-by: debe ir seguido inmediatamente
|
|||
|
|
por un Signedoff-by: del coautor asociado. Los detalles y ejemplos se
|
|||
|
|
pueden encontrar en
|
|||
|
|
:ref:`Documentation/translations/sp_SP/process/submitting-patches.rst <sp_submittingpatches>`.
|
|||
|
|
|
|||
|
|
- Acked-by: indica un acuerdo por parte de otro desarrollador (a menudo
|
|||
|
|
un maintainer del código relevante) de que el parche es apropiado para
|
|||
|
|
su inclusión en el kernel.
|
|||
|
|
|
|||
|
|
- Tested-by: indica que la persona nombrada ha probado el parche y ha
|
|||
|
|
encontrado que funciona.
|
|||
|
|
|
|||
|
|
- Reviewed-by: el desarrollador nombrado ha revisado el parche para
|
|||
|
|
verificar que sea correcto; consulte la declaración del revisor en
|
|||
|
|
:ref:`Documentation/translations/sp_SP/process/submitting-patches.rst <sp_submittingpatches>`
|
|||
|
|
para obtener más detalles.
|
|||
|
|
|
|||
|
|
- Reported-by: nombra a un usuario que informó un problema que se
|
|||
|
|
soluciona con este parche; esta etiqueta se utiliza para dar crédito
|
|||
|
|
a las personas (a menudo infravalorada) que prueban nuestro código y
|
|||
|
|
nos hacen saber cuándo las cosas no funcionan correctamente. Tenga en
|
|||
|
|
cuenta que esta etiqueta debe ir seguida de una etiqueta Closes: que
|
|||
|
|
apunte al informe, a menos que el informe no esté disponible en la
|
|||
|
|
web. La etiqueta Link: se puede usar en lugar de Closes: si el parche
|
|||
|
|
corrige una parte de los problemas reportados.
|
|||
|
|
|
|||
|
|
- Cc: la persona nombrada recibió una copia del parche y tuvo la
|
|||
|
|
oportunidad de comentar sobre él.
|
|||
|
|
|
|||
|
|
Tenga cuidado al agregar etiquetas a sus parches, ya que solo Cc: es
|
|||
|
|
apropiado para la adición sin el permiso explícito de la persona nombrada;
|
|||
|
|
usar Reported-by: está casi bien en su mayoría, pero pida permiso si el
|
|||
|
|
error fue reportado en privado.
|
|||
|
|
|
|||
|
|
Envió del parche
|
|||
|
|
----------------
|
|||
|
|
|
|||
|
|
Antes de enviar sus parches por correo, hay un par de cosas más de las
|
|||
|
|
que debe ocuparse:
|
|||
|
|
|
|||
|
|
- ¿Está seguro de que su correo no corromperá los parches? Los parches
|
|||
|
|
con cambios gratuitos de espacio en blanco o ajuste de línea
|
|||
|
|
realizados por el cliente de correo no se aplicarán en el otro
|
|||
|
|
extremo, y a menudo, no se examinarán en detalle. Si tiene alguna
|
|||
|
|
duda, envíese el parche por correo y convénzase de que parece
|
|||
|
|
intacto.
|
|||
|
|
|
|||
|
|
:ref:`Documentation/translations/sp_SP/process/email-clients.rst <sp_email_clients>`
|
|||
|
|
tiene algunos consejos útiles sobre cómo hacer que clientes de correo
|
|||
|
|
específicos funcionen para enviar parches.
|
|||
|
|
|
|||
|
|
- ¿Está seguro de que su parche está libre de errores tontos? Siempre
|
|||
|
|
debe ejecutar parches a través de scripts/checkpatch.pl y abordar las
|
|||
|
|
quejas que surjan. Por favor, tenga en cuenta que checkpatch.pl, aunque
|
|||
|
|
es la encarnación de una buena cantidad de pensamiento sobre cómo
|
|||
|
|
deberían ser los parches del kernel, no es más inteligente que usted.
|
|||
|
|
Si corregir una queja de checkpatch.pl empeoraría el código, no lo
|
|||
|
|
haga.
|
|||
|
|
|
|||
|
|
Los parches siempre deben enviarse como texto sin formato. Por favor, no
|
|||
|
|
los envíe como archivos adjuntos; eso hace que sea mucho más difícil para
|
|||
|
|
los revisores citar secciones del parche en sus respuestas. En su lugar,
|
|||
|
|
simplemente coloca el parche directamente en su mensaje.
|
|||
|
|
|
|||
|
|
Al enviar parches por correo, es importante enviar copias a cualquier
|
|||
|
|
persona que pueda estar interesada en ellos. A diferencia de otros
|
|||
|
|
proyectos, el kernel anima a la gente a equivocarse por el lado de enviar
|
|||
|
|
demasiadas copias; no asuma que las personas relevantes verán su
|
|||
|
|
publicación en las listas de correo. En particular, las copias deben
|
|||
|
|
ir a:
|
|||
|
|
|
|||
|
|
- El (los) maintainer(s) del (de los) subsistema(s) afectado(s). Como se
|
|||
|
|
describió anteriormente, el archivo MAINTAINERS es el primer lugar para
|
|||
|
|
buscar a estas personas.
|
|||
|
|
|
|||
|
|
- Otros desarrolladores que han estado trabajando en la misma
|
|||
|
|
área – especialmente aquellos que podrían estar trabajando allí ahora.
|
|||
|
|
Usar git para ver quién más ha modificado los archivos en los que está
|
|||
|
|
trabajando puede ser útil.
|
|||
|
|
|
|||
|
|
- Si está respondiendo a un informe de error o a una solicitud de
|
|||
|
|
función, copie también al autor.
|
|||
|
|
|
|||
|
|
- Envié una copia a la lista de correo relevante o, si no se aplica nada
|
|||
|
|
más, a la lista de linux-kernel.
|
|||
|
|
|
|||
|
|
- Si está corrigiendo un error, piense si la corrección debe incluirse en
|
|||
|
|
la próxima actualización estable. Si es así, stable@vger.kernel.org
|
|||
|
|
debería obtener una copia del parche. También agregue un
|
|||
|
|
"Cc: stable@vger.kernel.org" a las etiquetas dentro del parche; eso
|
|||
|
|
hará que el equipo estable reciba una notificación cuando su solución
|
|||
|
|
incluya en el mainline.
|
|||
|
|
|
|||
|
|
Al seleccionar destinatarios para un parche, es bueno saber quién cree que
|
|||
|
|
eventualmente aceptará el parche y lo fusionará. Aunque es posible enviar
|
|||
|
|
parches directamente a Linus Torvalds y hacer que los fusione, las cosas
|
|||
|
|
normalmente no se hacen de esa manera. Linus está ocupado y hay
|
|||
|
|
maintainers de subsistemas que vigilan partes específicas del kernel.
|
|||
|
|
Generalmente, querrá que ese maintainer fusione sus parches. Andrew Morton
|
|||
|
|
es a menudo el objetivo del parche de último recurso si no hay un
|
|||
|
|
maintainer obvio.
|
|||
|
|
|
|||
|
|
Los parches necesitan buenas líneas de asunto. El formato canónico de una
|
|||
|
|
línea de parche es algo así como:
|
|||
|
|
|
|||
|
|
::
|
|||
|
|
|
|||
|
|
[PATCH nn/mm] subsys: descripción en una línea del parche
|
|||
|
|
|
|||
|
|
donde “nn” es el número ordinal del parche, “”mm” es el número total de
|
|||
|
|
parches en la serie, y “subsys” es el nombre del subsistema afectado.
|
|||
|
|
Claramente, nn/mm se puede omitir para un parche único e independiente.
|
|||
|
|
|
|||
|
|
Si tiene una serie significativa de parches, es costumbre enviar una
|
|||
|
|
descripción introductoria como parte cero. Sin embargo, esta convención no
|
|||
|
|
se sigue universalmente; si la utiliza, recuerde que la información en la
|
|||
|
|
introducción no se incluye en los registros de cambios del kernel. Por lo
|
|||
|
|
tanto, asegúrese de que los parches, en sí mismos, tengan información
|
|||
|
|
completa del registro de cambios.
|
|||
|
|
|
|||
|
|
En general, la segunda y las siguientes partes de un parche de varias
|
|||
|
|
partes deben enviarse como una respuesta a la primera parte para que todas
|
|||
|
|
se hilen juntas en el extremo receptor. Herramientas como git y quilt
|
|||
|
|
tienen comandos para enviar por correo un conjunto de parches con el
|
|||
|
|
subproceso adecuado. Sin embargo, si tiene una serie larga y está usando
|
|||
|
|
git, por favor evite la opción –chain-reply-to para evitar crear un
|
|||
|
|
anidamiento excepcionalmente profundo.
|