162306a36Sopenharmony_ci.. include:: ../disclaimer-sp.rst 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci:Original: :ref:`Documentation/process/submitting-patches.rst <submittingpatches>` 462306a36Sopenharmony_ci:Translator: Carlos Bilbao <carlos.bilbao@amd.com> 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci.. _sp_submittingpatches: 762306a36Sopenharmony_ci 862306a36Sopenharmony_ciEnvío de parches: la guía esencial para incluir su código en el kernel 962306a36Sopenharmony_ci======================================================================= 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ciPara una persona o empresa que desee enviar un cambio al kernel Linux, 1262306a36Sopenharmony_ciel proceso puede en ocasiones resultar desalentador si no se está 1362306a36Sopenharmony_cifamiliarizado con "el sistema". Este texto es una colección de sugerencias 1462306a36Sopenharmony_cique pueden aumentar considerablemente las posibilidades de que se acepte su 1562306a36Sopenharmony_cicambio. 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ciEste documento contiene una gran cantidad de sugerencias en un formato 1862306a36Sopenharmony_cirelativamente conciso. Para obtener información detallada sobre cómo 1962306a36Sopenharmony_cifunciona el proceso de desarrollo del kernel, consulte 2062306a36Sopenharmony_ciDocumentation/process/development-process.rst. Además, lea 2162306a36Sopenharmony_ciDocumentation/process/submit-checklist.rst para obtener una lista de 2262306a36Sopenharmony_cielementos a verificar antes de enviar código. Para los parches de 2362306a36Sopenharmony_ci"binding" del árbol de dispositivos, lea 2462306a36Sopenharmony_ciDocumentation/devicetree/bindings/submitting-patches.rst. 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ciEsta documentación asume que está usando ``git`` para preparar sus parches. 2762306a36Sopenharmony_ciSi no está familiarizado con ``git``, le recomendamos que aprenda a 2862306a36Sopenharmony_ciusarlo, le hará la vida como desarrollador del kernel y en general mucho 2962306a36Sopenharmony_cimás sencilla. 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ciAlgunos subsistemas y árboles de mantenimiento cuentan con información 3262306a36Sopenharmony_ciadicional sobre su flujo de trabajo y expectativas, consulte 3362306a36Sopenharmony_ci:ref:`Documentation/process/maintainer-handbooks.rst <maintainer_handbooks_main>`. 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ciObtenga el código fuente actual 3662306a36Sopenharmony_ci-------------------------------- 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ciSi no tiene a mano un repositorio con el código fuente actual del kernel, 3962306a36Sopenharmony_ciuse ``git`` para obtener uno. Querrá comenzar con el repositorio principal, 4062306a36Sopenharmony_cique se puede descargar con:: 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ciTenga en cuenta, sin embargo, que es posible que no desee desarrollar con 4562306a36Sopenharmony_ciel árbol principal directamente. La mayoría de los maintainers de 4662306a36Sopenharmony_cisubsistemas usan sus propios árboles de código fuente y quieren ver parches 4762306a36Sopenharmony_cipreparados para esos árboles. Revise el campo **T:** para el subsistema 4862306a36Sopenharmony_cien el archivo MAINTAINERS para encontrar dicho árbol, o simplemente 4962306a36Sopenharmony_cipregunte al maintainer si el árbol no está listado allí. 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci.. _sp_describe_changes: 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ciDescriba sus cambios 5462306a36Sopenharmony_ci--------------------- 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ciDescriba su problema. Sea su parche una corrección de un error de una 5762306a36Sopenharmony_cilínea o 5000 líneas para una nuevo "feature", debe haber un problema 5862306a36Sopenharmony_cisubyacente que le motivó a hacer ese trabajo. Convenza al revisor de que 5962306a36Sopenharmony_cihay un problema que merece la pena solucionar y de que tiene sentido que 6062306a36Sopenharmony_cilea más allá del primer párrafo. 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ciDescriba el impacto relativo al usuario. Cosas que estropeen el kernel y 6362306a36Sopenharmony_cilos bloqueos son bastante convincentes, pero no todos los errores son tan 6462306a36Sopenharmony_cievidentes. Incluso si se detectó un problema durante la revisión del 6562306a36Sopenharmony_cicódigo, describa el impacto que cree pueda tener en los usuarios. Tenga en 6662306a36Sopenharmony_cicuenta que la mayoría de instalaciones de Linux ejecutan kernels desde 6762306a36Sopenharmony_ciárboles estables secundarios o árboles específicos de proveedor/producto 6862306a36Sopenharmony_cique seleccionan ("cherry-pick") solo parches específicos de upstream, así 6962306a36Sopenharmony_cique incluya cualquier cosa que pueda ayudar a dirigir su cambio 7062306a36Sopenharmony_ciaguas abajo: circunstancias que producen cierta situación, extractos de 7162306a36Sopenharmony_cidmesg, descripciones del error fatal, regresiones de rendimiento, picos de 7262306a36Sopenharmony_cilatencia, bloqueos, etc. 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ciCuantifique optimizaciones y beneficios/perdidas. Si asegura mejoras en 7562306a36Sopenharmony_cirendimiento, consumo de memoria, huella del stack o tamaño de binario, 7662306a36Sopenharmony_ciincluya números que lo respalden. Pero también describa costes no obvios. 7762306a36Sopenharmony_ciLas optimizaciones generalmente no son gratuitas, sino un equilibrio entre 7862306a36Sopenharmony_ciCPU, memoria y legibilidad; o, cuando se trata de heurísticas, entre 7962306a36Sopenharmony_cidiferentes cargas de trabajo. Describa las desventajas esperadas de su 8062306a36Sopenharmony_cioptimización para que el revisor pueda comparar las perdidas con los 8162306a36Sopenharmony_cibeneficios. 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ciUna vez establecido el problema, describa lo que realmente está haciendo 8462306a36Sopenharmony_cial respecto en detalles técnicos. Es importante describir el cambio en 8562306a36Sopenharmony_cilenguaje sencillo para que el revisor verifique que el código se está 8662306a36Sopenharmony_cicomportando como se pretende. 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ciEl maintainer le agradecerá que escriba la descripción de su parche en un 8962306a36Sopenharmony_ciformato que se pueda incorporar fácilmente en la gestión del código fuente 9062306a36Sopenharmony_cidel sistema, ``git``, como un "commit log" (registros de los commits). 9162306a36Sopenharmony_ciConsulte :ref:`sp_the_canonical_patch_format`. 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ciResuelva solo un problema por parche. Si su descripción comienza a ser muy 9462306a36Sopenharmony_cilarga, eso es una señal de que probablemente necesite dividir su parche. 9562306a36Sopenharmony_ciLea :ref:`split_changes`. 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ciCuando envíe o vuelva a enviar un parche o una serie de parches, incluya la 9862306a36Sopenharmony_cidescripción completa del parche y justificación del mismo. No se limite a 9962306a36Sopenharmony_cidecir que esa es la versión N del parche (serie). No espere que el 10062306a36Sopenharmony_cimaintainer del subsistema referencie versiones de parches anteriores o use 10162306a36Sopenharmony_cireferencias URL para encontrar la descripción del parche y colocarla en el 10262306a36Sopenharmony_ciparche. Es decir, el parche (serie) y su descripción deben ser 10362306a36Sopenharmony_ciindependientes. Esto beneficia tanto a los maintainers como a los 10462306a36Sopenharmony_cirevisores. Algunos revisores probablemente ni siquiera recibieran versiones 10562306a36Sopenharmony_cianteriores del parche. 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ciDescriba sus cambios en la forma imperativa, por ejemplo, "hacer que xyzzy 10862306a36Sopenharmony_cihaga frotz" en lugar de "[Este parche] hace que xyzzy haga frotz" o "[Yo] 10962306a36Sopenharmony_ciCambié xyzzy para que haga frotz", como si estuviera dando órdenes al 11062306a36Sopenharmony_cicódigo fuente para cambiar su comportamiento. 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ciSi desea hacer referencia a un commit específico, no se limite a hacer 11362306a36Sopenharmony_cireferencia al ID SHA-1 del commit. Incluya también el resumen de una línea 11462306a36Sopenharmony_cidel commit, para que sea más fácil para los revisores saber de qué se 11562306a36Sopenharmony_citrata. 11662306a36Sopenharmony_ciEjemplo:: 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_ci Commit e21d2170f36602ae2708 ("video: quitar platform_set_drvdata() 11962306a36Sopenharmony_ci innecesario") eliminó innecesario platform_set_drvdata(), pero dejó la 12062306a36Sopenharmony_ci variable "dev" sin usar, bórrese. 12162306a36Sopenharmony_ci 12262306a36Sopenharmony_ciTambién debe asegurarse de utilizar al menos los primeros doce caracteres 12362306a36Sopenharmony_cidel identificador SHA-1. El repositorio del kernel contiene muchos *muchos* 12462306a36Sopenharmony_ciobjetos, por lo que las colisiones con identificaciones más cortas son una 12562306a36Sopenharmony_ciposibilidad real. Tenga en cuenta que, aunque no hay colisión con su 12662306a36Sopenharmony_ciidentificación de seis caracteres ahora, esa condición puede cambiar dentro 12762306a36Sopenharmony_cide cinco años. 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ciSi las discusiones relacionadas o cualquier otra información relativa al 13062306a36Sopenharmony_cicambio se pueden encontrar en la web, agregue las etiquetas 'Link:' que 13162306a36Sopenharmony_ciapunten a estos. En caso de que su parche corrija un error, por poner un 13262306a36Sopenharmony_ciejemplo, agregue una etiqueta con una URL que haga referencia al informe en 13362306a36Sopenharmony_cilos archivos de las listas de correo o un rastreador de errores; si el 13462306a36Sopenharmony_ciparche es el resultado de alguna discusión anterior de la lista de correo o 13562306a36Sopenharmony_cialgo documentado en la web, referencie esto. 13662306a36Sopenharmony_ci 13762306a36Sopenharmony_ciCuando se vincule a archivos de listas de correo, preferiblemente use el 13862306a36Sopenharmony_ciservicio de archivador de mensajes lore.kernel.org. Para crear la URL del 13962306a36Sopenharmony_cienlace, utilice el contenido del encabezado ("header") ``Message-Id`` del 14062306a36Sopenharmony_cimensaje sin los corchetes angulares que lo rodean. 14162306a36Sopenharmony_ciPor ejemplo:: 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ci Link: https://lore.kernel.org/r/30th.anniversary.repost@klaava.Helsinki.FI/ 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_ciVerifique el enlace para asegurarse de que realmente funciona y apunta al 14662306a36Sopenharmony_cimensaje correspondiente. 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_ciSin embargo, intente que su explicación sea comprensible sin recursos 14962306a36Sopenharmony_ciexternos. Además de dar una URL a un archivo o error de la lista de correo, 15062306a36Sopenharmony_ciresuma los puntos relevantes de la discusión que condujeron al parche tal y 15162306a36Sopenharmony_cicomo se envió. 15262306a36Sopenharmony_ci 15362306a36Sopenharmony_ciSi su parche corrige un error en un commit específico, por ejemplo 15462306a36Sopenharmony_ciencontró un problema usando ``git bisect``, utilice la etiqueta 'Fixes:' 15562306a36Sopenharmony_cicon los primeros 12 caracteres del ID SHA-1 y el resumen de una línea. No 15662306a36Sopenharmony_cidivida la etiqueta en varias líneas, las etiquetas están exentas de la 15762306a36Sopenharmony_ciregla "ajustar a 75 columnas" para simplificar análisis de scripts. Por 15862306a36Sopenharmony_ciejemplo:: 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci Fixes: 54a4f0239f2e ("KVM: MMU: hacer que kvm_mmu_zap_page() 16162306a36Sopenharmony_ci devuelva la cantidad de páginas que realmente liberó") 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ciLas siguientes configuraciones de ``git config`` se pueden usar para 16462306a36Sopenharmony_ciagregar un bonito formato y generar este estilo con los comandos 16562306a36Sopenharmony_ci``git log`` o ``git show``:: 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ci [core] 16862306a36Sopenharmony_ci abbrev = 12 16962306a36Sopenharmony_ci [pretty] 17062306a36Sopenharmony_ci fixes = Fixes: %h (\"%s\") 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ciUn ejemplo de uso:: 17362306a36Sopenharmony_ci 17462306a36Sopenharmony_ci $ git log -1 --pretty=fixes 54a4f0239f2e 17562306a36Sopenharmony_ci Fixes: 54a4f0239f2e ("KVM: MMU: hacer que kvm_mmu_zap_page() devuelva la cantidad de páginas que realmente liberó") 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_ci.. _sp_split_changes: 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ciSepare sus cambios 18062306a36Sopenharmony_ci------------------- 18162306a36Sopenharmony_ci 18262306a36Sopenharmony_ciSepare cada **cambio lógico** en un parche separado. 18362306a36Sopenharmony_ci 18462306a36Sopenharmony_ciPor ejemplo, si sus cambios incluyen correcciones de errores y mejoras en 18562306a36Sopenharmony_ciel rendimiento de un controlador, separe esos cambios en dos o más parches. 18662306a36Sopenharmony_ciSi sus cambios incluyen una actualización de la API y una nueva controlador 18762306a36Sopenharmony_cique usa esta nueva API, sepárelos en dos parches. 18862306a36Sopenharmony_ci 18962306a36Sopenharmony_ciPor otro lado, si realiza un solo cambio en numerosos archivos, agrupe esos 19062306a36Sopenharmony_cicambios en un solo parche. Por lo tanto, un solo cambio lógico estará 19162306a36Sopenharmony_cicontenido en un solo parche. 19262306a36Sopenharmony_ci 19362306a36Sopenharmony_ciEl punto a recordar es que cada parche debe realizar un cambio que puede 19462306a36Sopenharmony_ciser verificado por los revisores fácilmente. Cada parche debe ser 19562306a36Sopenharmony_cijustificable por sus propios méritos. 19662306a36Sopenharmony_ci 19762306a36Sopenharmony_ciSi un parche depende de otro parche para que un cambio sea completo, eso 19862306a36Sopenharmony_ciestá bien. Simplemente incluya que **"este parche depende del parche X"** 19962306a36Sopenharmony_cien la descripción de su parche. 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_ciCuando divida su cambio en una serie de parches, tenga especial cuidado en 20262306a36Sopenharmony_ciasegurarse de que el kernel se compila y ejecuta correctamente después de 20362306a36Sopenharmony_cicada parche en la serie. Los desarrolladores que usan ``git bisect`` 20462306a36Sopenharmony_cipara rastrear un problema pueden terminar dividiendo su serie de parches en 20562306a36Sopenharmony_cicualquier punto; no le agradecerán si introdujo errores a la mitad. 20662306a36Sopenharmony_ci 20762306a36Sopenharmony_ciSi no puede condensar su conjunto de parches en un conjunto más pequeño de 20862306a36Sopenharmony_ciparches, solo publique, más o menos 15 a la vez, y espere la revisión e 20962306a36Sopenharmony_ciintegración. 21062306a36Sopenharmony_ci 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_ciRevise el estilo en sus cambios 21362306a36Sopenharmony_ci-------------------------------- 21462306a36Sopenharmony_ci 21562306a36Sopenharmony_ciRevise su parche para ver si hay violaciones de estilo básico, cuyos 21662306a36Sopenharmony_cidetalles pueden ser encontrados en Documentation/process/coding-style.rst. 21762306a36Sopenharmony_ciNo hacerlo simplemente desperdicia el tiempo de los revisores y su parche 21862306a36Sopenharmony_ciserá rechazado, probablemente sin siquiera ser leído. 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_ciUna excepción importante es cuando se mueve código de un archivo a otro. 22162306a36Sopenharmony_ciEn tal caso, en absoluto debe modificar el código movido en el mismo parche 22262306a36Sopenharmony_cien que lo mueve. Esto divide claramente el acto de mover el código y sus 22362306a36Sopenharmony_cicambios. Esto ayuda mucho a la revisión de la diferencias reales y permite 22462306a36Sopenharmony_cique las herramientas rastreen mejor el historial del código en sí. 22562306a36Sopenharmony_ci 22662306a36Sopenharmony_ciVerifique sus parches con el verificador de estilo de parches antes de 22762306a36Sopenharmony_cienviarlos (scripts/checkpatch.pl). Tenga en cuenta, sin embargo, que el 22862306a36Sopenharmony_civerificador de estilo debe ser visto como una guía, no como un reemplazo 22962306a36Sopenharmony_cidel juicio humano. Si su código es mejor con una violación entonces 23062306a36Sopenharmony_ciprobablemente sea mejor dejarlo estar. 23162306a36Sopenharmony_ci 23262306a36Sopenharmony_ciEl verificador informa a tres niveles: 23362306a36Sopenharmony_ci - ERROR: cosas que es muy probable que estén mal 23462306a36Sopenharmony_ci - WARNING: Advertencia. Cosas que requieren una revisión cuidadosa 23562306a36Sopenharmony_ci - CHECK: Revisar. Cosas que requieren pensarlo 23662306a36Sopenharmony_ci 23762306a36Sopenharmony_ciDebe poder justificar todas las violaciones que permanezcan en su parche. 23862306a36Sopenharmony_ci 23962306a36Sopenharmony_ci 24062306a36Sopenharmony_ciSeleccione los destinatarios de su parche 24162306a36Sopenharmony_ci------------------------------------------ 24262306a36Sopenharmony_ci 24362306a36Sopenharmony_ciSiempre debe incluir en copia a los apropiados maintainers del subsistema 24462306a36Sopenharmony_cien cualquier parche con código que mantengan; revise a través del archivo 24562306a36Sopenharmony_ciMAINTAINERS y el historial de revisión del código fuente para ver quiénes 24662306a36Sopenharmony_cison esos maintainers. El script scripts/get_maintainer.pl puede ser muy 24762306a36Sopenharmony_ciútil en este paso (pase rutas a sus parches como argumentos para 24862306a36Sopenharmony_ciscripts/get_maintainer.pl). Si no puede encontrar un maintainer del 24962306a36Sopenharmony_cisubsistema en el que está trabajando, Andrew Morton 25062306a36Sopenharmony_ci(akpm@linux-foundation.org) sirve como maintainer de último recurso. 25162306a36Sopenharmony_ci 25262306a36Sopenharmony_ciNormalmente, también debe elegir al menos una lista de correo para recibir 25362306a36Sopenharmony_ciuna copia de su conjunto de parches. linux-kernel@vger.kernel.org debe 25462306a36Sopenharmony_ciusarse de forma predeterminada para todos los parches, pero el volumen en 25562306a36Sopenharmony_ciesta lista ha hecho que muchos desarrolladores se desconecten. Busque en el 25662306a36Sopenharmony_ciarchivo MAINTAINERS una lista específica de los subsistemas; su parche 25762306a36Sopenharmony_ciprobablemente recibirá más atención allí. Sin embargo, no envíe spam a 25862306a36Sopenharmony_cilistas no relacionadas. 25962306a36Sopenharmony_ci 26062306a36Sopenharmony_ciMuchas listas relacionadas con el kernel están alojadas en vger.kernel.org; 26162306a36Sopenharmony_cipuedes encontrar un listado de estas en 26262306a36Sopenharmony_cihttp://vger.kernel.org/vger-lists.html. Existen listas relacionadas con el 26362306a36Sopenharmony_cikernel alojadas en otros lugares, no obstante. 26462306a36Sopenharmony_ci 26562306a36Sopenharmony_ci¡No envíe más de 15 parches a la vez a las listas de correo de vger! 26662306a36Sopenharmony_ci 26762306a36Sopenharmony_ciLinus Torvalds es el árbitro final de todos los cambios aceptados en el 26862306a36Sopenharmony_cikernel de Linux. Su dirección de correo electrónico es 26962306a36Sopenharmony_ci<torvalds@linux-foundation.org>. Recibe muchos correos electrónicos y, en 27062306a36Sopenharmony_cieste momento, muy pocos parches pasan por Linus directamente, por lo que 27162306a36Sopenharmony_cinormalmente debe hacer todo lo posible para -evitar- enviarle un correo 27262306a36Sopenharmony_cielectrónico. 27362306a36Sopenharmony_ci 27462306a36Sopenharmony_ciSi tiene un parche que corrige un error de seguridad explotable, envíe ese 27562306a36Sopenharmony_ciparche a security@kernel.org. Para errores graves, se debe mantener un 27662306a36Sopenharmony_cipoco de discreción y permitir que los distribuidores entreguen el parche a 27762306a36Sopenharmony_cilos usuarios; en esos casos, obviamente, el parche no debe enviarse a 27862306a36Sopenharmony_cininguna lista pública. Revise también 27962306a36Sopenharmony_ciDocumentation/process/security-bugs.rst. 28062306a36Sopenharmony_ci 28162306a36Sopenharmony_ciLos parches que corrigen un error grave en un kernel en uso deben dirigirse 28262306a36Sopenharmony_cihacia los maintainers estables poniendo una línea como esta:: 28362306a36Sopenharmony_ci 28462306a36Sopenharmony_ci CC: stable@vger.kernel.org 28562306a36Sopenharmony_ci 28662306a36Sopenharmony_cien el área de sign-off de su parche (es decir, NO un destinatario de correo 28762306a36Sopenharmony_cielectrónico). También debe leer 28862306a36Sopenharmony_ciDocumentation/process/stable-kernel-rules.rst además de este documento. 28962306a36Sopenharmony_ci 29062306a36Sopenharmony_ciSi los cambios afectan las interfaces del kernel para el usuario, envíe al 29162306a36Sopenharmony_cimaintainer de las MAN-PAGES (como se indica en el archivo MAINTAINERS) un 29262306a36Sopenharmony_ciparche de páginas de manual, o al menos una notificación del cambio, para 29362306a36Sopenharmony_cique alguna información se abra paso en las páginas del manual. Los cambios 29462306a36Sopenharmony_cide la API del espacio de usuario también deben copiarse en 29562306a36Sopenharmony_cilinux-api@vger.kernel.org. 29662306a36Sopenharmony_ci 29762306a36Sopenharmony_ci 29862306a36Sopenharmony_ciSin MIME, enlaces, compresión o archivos adjuntos. Solo texto plano 29962306a36Sopenharmony_ci-------------------------------------------------------------------- 30062306a36Sopenharmony_ci 30162306a36Sopenharmony_ciLinus y otros desarrolladores del kernel deben poder leer y comentar sobre 30262306a36Sopenharmony_cilos cambios que está enviando. Es importante para un desarrollador kernel 30362306a36Sopenharmony_cipoder "citar" sus cambios, utilizando herramientas estándar de correo 30462306a36Sopenharmony_cielectrónico, de modo que puedan comentar sobre partes específicas de su 30562306a36Sopenharmony_cicódigo. 30662306a36Sopenharmony_ci 30762306a36Sopenharmony_ciPor este motivo, todos los parches deben enviarse por correo electrónico 30862306a36Sopenharmony_ci"inline". La forma más sencilla de hacerlo es con ``git send-email``, que 30962306a36Sopenharmony_cies muy recomendable. Un tutorial interactivo para ``git send-email`` está 31062306a36Sopenharmony_cidisponible en https://git-send-email.io. 31162306a36Sopenharmony_ci 31262306a36Sopenharmony_ciSi elige no usar ``git send-email``: 31362306a36Sopenharmony_ci 31462306a36Sopenharmony_ci.. warning:: 31562306a36Sopenharmony_ci 31662306a36Sopenharmony_ci Tenga cuidado con el ajuste de palabras de su editor que corrompe su 31762306a36Sopenharmony_ci parche, si elige cortar y pegar su parche. 31862306a36Sopenharmony_ci 31962306a36Sopenharmony_ciNo adjunte el parche como un archivo adjunto MIME, comprimido o no. Muchas 32062306a36Sopenharmony_cipopulares aplicaciones de correo electrónico no siempre transmiten un MIME 32162306a36Sopenharmony_ciarchivo adjunto como texto sin formato, por lo que es imposible comentar 32262306a36Sopenharmony_cien su código. Linus también necesita un poco más de tiempo para procesar un 32362306a36Sopenharmony_ciarchivo adjunto MIME, disminuyendo la probabilidad de que se acepte su 32462306a36Sopenharmony_cicambio adjunto en MIME. 32562306a36Sopenharmony_ci 32662306a36Sopenharmony_ciExcepción: si su proveedor de correo está destrozando parches, entonces 32762306a36Sopenharmony_cialguien puede pedir que los vuelva a enviar usando MIME. 32862306a36Sopenharmony_ci 32962306a36Sopenharmony_ciConsulte Documentation/process/email-clients.rst para obtener sugerencias 33062306a36Sopenharmony_cisobre cómo configurar su cliente de correo electrónico para que envíe sus 33162306a36Sopenharmony_ciparches intactos. 33262306a36Sopenharmony_ci 33362306a36Sopenharmony_ciResponda a los comentarios de revisión 33462306a36Sopenharmony_ci--------------------------------------- 33562306a36Sopenharmony_ci 33662306a36Sopenharmony_ciEs casi seguro que su parche recibirá comentarios de los revisores sobre 33762306a36Sopenharmony_cimaneras en que se pueda mejorar el parche, en forma de respuesta a su 33862306a36Sopenharmony_cicorreo electrónico. Debe responder a esos comentarios; ignorar a los 33962306a36Sopenharmony_cirevisores es una buena manera de ser ignorado de vuelta. Simplemente puede 34062306a36Sopenharmony_ciresponder a sus correos electrónicos para contestar a sus comentarios. 34162306a36Sopenharmony_ciRevisiones a los comentarios o preguntas que no conduzcan a un cambio de 34262306a36Sopenharmony_cicódigo deben casi con certeza generar un comentario o una entrada en el 34362306a36Sopenharmony_ci"changelog" para que el próximo revisor entienda lo que está pasando. 34462306a36Sopenharmony_ci 34562306a36Sopenharmony_ciAsegúrese de decirles a los revisores qué cambios está haciendo y de 34662306a36Sopenharmony_ciagradecerles que dediquen su tiempo. La revisión del código es un proceso 34762306a36Sopenharmony_ciagotador y lento, y los revisores a veces se ponen de mal humor. Sin 34862306a36Sopenharmony_ciembargo, incluso en ese caso, responda cortésmente y aborde los problemas 34962306a36Sopenharmony_cique hayan señalado. Al enviar un siguiente versión, agregue un 35062306a36Sopenharmony_ci``patch changelog`` (registro de cambios en los parches) a la carta de 35162306a36Sopenharmony_cipresentación ("cover letter") o a parches individuales explicando la 35262306a36Sopenharmony_cidiferencia con la presentación anterior (ver 35362306a36Sopenharmony_ci:ref:`sp_the_canonical_patch_format`). 35462306a36Sopenharmony_ci 35562306a36Sopenharmony_ciConsulte Documentation/process/email-clients.rst para obtener 35662306a36Sopenharmony_cirecomendaciones sobre clientes de correo electrónico y normas de etiqueta 35762306a36Sopenharmony_cien la lista de correo. 35862306a36Sopenharmony_ci 35962306a36Sopenharmony_ci.. _sp_resend_reminders: 36062306a36Sopenharmony_ci 36162306a36Sopenharmony_ciNo se desanime o impaciente 36262306a36Sopenharmony_ci--------------------------- 36362306a36Sopenharmony_ci 36462306a36Sopenharmony_ciDespués de haber entregado su cambio, sea paciente y espere. Los revisores 36562306a36Sopenharmony_cison personas ocupadas y es posible que no lleguen a su parche de inmediato. 36662306a36Sopenharmony_ci 36762306a36Sopenharmony_ciÉrase una vez, los parches solían desaparecer en el vacío sin comentarios, 36862306a36Sopenharmony_cipero el proceso de desarrollo funciona mejor que eso ahora. Debería 36962306a36Sopenharmony_cirecibir comentarios dentro de una semana más o menos; si eso no sucede, 37062306a36Sopenharmony_ciasegúrese de que ha enviado sus parches al lugar correcto. Espere un mínimo 37162306a36Sopenharmony_cide una semana antes de volver a enviar o hacer ping a los revisores, 37262306a36Sopenharmony_ciposiblemente más durante periodos de mucho trabajo ocupados como "merge 37362306a36Sopenharmony_ciwindows". 37462306a36Sopenharmony_ci 37562306a36Sopenharmony_ciTambién está bien volver a enviar el parche o la serie de parches después 37662306a36Sopenharmony_cide un par de semanas con la palabra "RESEND" (reenviar) añadida a la línea 37762306a36Sopenharmony_cide asunto:: 37862306a36Sopenharmony_ci 37962306a36Sopenharmony_ci [PATCH Vx RESEND] sub/sys: Resumen condensado de parche 38062306a36Sopenharmony_ci 38162306a36Sopenharmony_ciNo incluya "RESEND" cuando envíe una versión modificada de su parche o 38262306a36Sopenharmony_ciserie de parches: "RESEND" solo se aplica al reenvío de un parche o serie 38362306a36Sopenharmony_cide parches que no hayan sido modificados de ninguna manera con respecto a 38462306a36Sopenharmony_cila presentación anterior. 38562306a36Sopenharmony_ci 38662306a36Sopenharmony_ci 38762306a36Sopenharmony_ciIncluya PATCH en el asunto 38862306a36Sopenharmony_ci-------------------------- 38962306a36Sopenharmony_ci 39062306a36Sopenharmony_ciDebido al alto tráfico de correo electrónico a Linus y al kernel de Linux, 39162306a36Sopenharmony_cies común prefijar su línea de asunto con [PATCH]. Esto le permite a Linus 39262306a36Sopenharmony_ciy otros desarrolladores del kernel distinguir más fácilmente los parches de 39362306a36Sopenharmony_ciotras discusiones por correo electrónico. 39462306a36Sopenharmony_ci 39562306a36Sopenharmony_ci``git send-email`` lo hará automáticamente. 39662306a36Sopenharmony_ci 39762306a36Sopenharmony_ci 39862306a36Sopenharmony_ciFirme su trabajo: el Certificado de Origen del Desarrollador 39962306a36Sopenharmony_ci------------------------------------------------------------ 40062306a36Sopenharmony_ci 40162306a36Sopenharmony_ciPara mejorar el seguimiento de quién hizo qué, especialmente con parches 40262306a36Sopenharmony_cique pueden filtrarse hasta su destino final a través de varias capas de 40362306a36Sopenharmony_cimaintainers, hemos introducido un procedimiento de "sign-off" (aprobación) 40462306a36Sopenharmony_cien parches que se envían por correo electrónico. 40562306a36Sopenharmony_ci 40662306a36Sopenharmony_ciLa aprobación es una simple línea al final de la explicación del parche, 40762306a36Sopenharmony_cique certifica que usted lo escribió o que tiene derecho a enviarlo como un 40862306a36Sopenharmony_ciparche de código abierto. Las reglas son bastante simples: si usted puede 40962306a36Sopenharmony_cicertificar lo siguiente: 41062306a36Sopenharmony_ci 41162306a36Sopenharmony_ciCertificado de Origen del Desarrollador 1.1 41262306a36Sopenharmony_ci^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 41362306a36Sopenharmony_ci 41462306a36Sopenharmony_ciAl hacer una contribución a este proyecto, certifico que: 41562306a36Sopenharmony_ci 41662306a36Sopenharmony_ci (a) La contribución fue creada en su totalidad o en parte por mí y 41762306a36Sopenharmony_ci tengo derecho a enviarlo bajo la licencia de código abierto 41862306a36Sopenharmony_ci indicada en el documento; o 41962306a36Sopenharmony_ci 42062306a36Sopenharmony_ci (b) La contribución se basa en trabajo previo que, hasta donde yo 42162306a36Sopenharmony_ci soy consciente, está cubierto por una licencia de código 42262306a36Sopenharmony_ci abierto apropiada y tengo el derecho bajo esa licencia de 42362306a36Sopenharmony_ci presentar tal trabajo con modificaciones, ya sean creadas en su 42462306a36Sopenharmony_ci totalidad o en parte por mí, bajo la misma licencia de código 42562306a36Sopenharmony_ci (salvo que sea permitido presentar bajo una licencia diferente), 42662306a36Sopenharmony_ci tal y como se indica en el documento; o 42762306a36Sopenharmony_ci 42862306a36Sopenharmony_ci (c) La contribución me fue proporcionada directamente por alguna 42962306a36Sopenharmony_ci otra persona que certificó (a), (b) o (c) y no he modificado 43062306a36Sopenharmony_ci esto. 43162306a36Sopenharmony_ci 43262306a36Sopenharmony_ci (d) Entiendo y acepto que este proyecto y la contribución 43362306a36Sopenharmony_ci son públicos y que un registro de la contribución (incluyendo 43462306a36Sopenharmony_ci toda la información personal que envío con él, incluida mi 43562306a36Sopenharmony_ci firma) es mantenida indefinidamente y puede ser redistribuida 43662306a36Sopenharmony_ci de manera consistente con este proyecto o la(s) licencia(s) de 43762306a36Sopenharmony_ci código abierto involucradas. 43862306a36Sopenharmony_ci 43962306a36Sopenharmony_cientonces simplemente incluya una línea que rece:: 44062306a36Sopenharmony_ci 44162306a36Sopenharmony_ci Signed-off-by: Random J Developer <random@developer.example.org> 44262306a36Sopenharmony_ci 44362306a36Sopenharmony_ciusando su nombre real (lamentablemente, no pseudónimos ni contribuciones 44462306a36Sopenharmony_cianónimas). Esto se hará por usted automáticamente si usa ``git commit -s``. 44562306a36Sopenharmony_ciLas reversiones de código también deben incluir "Signed-off-by". 44662306a36Sopenharmony_ci``git revert -s`` hace eso por usted. 44762306a36Sopenharmony_ci 44862306a36Sopenharmony_ciAlgunas personas también ponen etiquetas adicionales al final. Simplemente 44962306a36Sopenharmony_ciserán ignoradas por ahora, pero puede hacer esto para marcar procedimientos 45062306a36Sopenharmony_ciinternos de su empresa o simplemente señalar algún detalle especial sobre 45162306a36Sopenharmony_cila firma. 45262306a36Sopenharmony_ci 45362306a36Sopenharmony_ciCualquier otro SoB (Signed-off-by:) después del SoB del autor es de 45462306a36Sopenharmony_cipersonas que manipulen y transporten el parche, pero no participaron en su 45562306a36Sopenharmony_cidesarrollo. Las cadenas de SoB deben reflejar la ruta **real** del parche 45662306a36Sopenharmony_cide cómo se propagó a los maintainers y, en última instancia, a Linus, con 45762306a36Sopenharmony_cila primera entrada de SoB que señala la autoría principal de un solo autor. 45862306a36Sopenharmony_ci 45962306a36Sopenharmony_ci 46062306a36Sopenharmony_ciCuándo usar Acked-by:, Cc: y Co-developed-by por: 46162306a36Sopenharmony_ci------------------------------------------------- 46262306a36Sopenharmony_ci 46362306a36Sopenharmony_ciLa etiqueta Signed-off-by: indica que el firmante estuvo involucrado en el 46462306a36Sopenharmony_cidesarrollo del parche, o que él/ella se encontraba en el camino de entrega 46562306a36Sopenharmony_cidel parche. 46662306a36Sopenharmony_ci 46762306a36Sopenharmony_ciSi una persona no estuvo directamente involucrada en la preparación o 46862306a36Sopenharmony_ciadministración de un parche pero desea expresar y registrar su aprobación, 46962306a36Sopenharmony_cientonces puede pedir que se agregue una línea Acked-by: al registro de 47062306a36Sopenharmony_cicambios del parche. 47162306a36Sopenharmony_ci 47262306a36Sopenharmony_ciAcked-by: a menudo lo usa el maintainer del código afectado cuando ese 47362306a36Sopenharmony_cimaintainer no contribuyó ni envió el parche. 47462306a36Sopenharmony_ci 47562306a36Sopenharmony_ciAcked-by: no es tan formal como Signed-off-by:. Es una manera de marcar que 47662306a36Sopenharmony_ciel "acker" ha revisado al menos ese parche y ha indicado su aceptación. Por 47762306a36Sopenharmony_cilos merge de parches a veces convertirán manualmente el "sí, me parece bien" 47862306a36Sopenharmony_cide un acker en un Acked-by: (pero tenga en cuenta que por lo general es 47962306a36Sopenharmony_cimejor pedir un acuse de recibo explícito). 48062306a36Sopenharmony_ci 48162306a36Sopenharmony_ciAcked-by: no necesariamente indica el reconocimiento de todo el parche. 48262306a36Sopenharmony_ciPor ejemplo, si un parche afecta a varios subsistemas y tiene un 48362306a36Sopenharmony_ciAcked-by: de un maintainer del subsistema, entonces esto generalmente 48462306a36Sopenharmony_ciindica el reconocimiento de solo la parte que afecta el código de ese 48562306a36Sopenharmony_cimaintainer. Buen juicio debe ejercitarse aquí. En caso de duda, la gente 48662306a36Sopenharmony_cidebe consultar la discusión original en los archivos de la lista de correo. 48762306a36Sopenharmony_ci 48862306a36Sopenharmony_ciSi una persona ha tenido la oportunidad de comentar un parche, pero no lo 48962306a36Sopenharmony_ciha hecho, puede incluir opcionalmente una etiqueta ``Cc:`` al parche. 49062306a36Sopenharmony_ciEsta es la única etiqueta que se puede agregar sin una acción explícita por 49162306a36Sopenharmony_ciparte de la persona a la que se nombre - pero debe indicar que esta persona 49262306a36Sopenharmony_cifue copiada en el parche. Esta etiqueta documenta que las partes 49362306a36Sopenharmony_cipotencialmente interesadas han sido incluidas en la discusión. 49462306a36Sopenharmony_ci 49562306a36Sopenharmony_ciCo-developed-by: establece que el parche fue co-creado por múltiples 49662306a36Sopenharmony_cidesarrolladores; se utiliza para dar atribución a los coautores (además del 49762306a36Sopenharmony_ciautor atribuido por la etiqueta From:) cuando varias personas trabajan en 49862306a36Sopenharmony_ciun solo parche. Ya que Co-developed-by: denota autoría, cada 49962306a36Sopenharmony_ciCo-developed-by: debe ser inmediatamente seguido de Signed-off-by: del 50062306a36Sopenharmony_cicoautor asociado. Se mantiene el procedimiento estándar, es decir, el orden 50162306a36Sopenharmony_cide las etiquetas Signed-off-by: debe reflejar el historial cronológico del 50262306a36Sopenharmony_ciparche en la medida de lo posible, independientemente de si el autor se 50362306a36Sopenharmony_ciatribuye a través de From: o Co-developed-by:. Cabe destacar que el último 50462306a36Sopenharmony_ciSigned-off-by: siempre debe ser del desarrollador que envía el parche. 50562306a36Sopenharmony_ci 50662306a36Sopenharmony_ciTenga en cuenta que la etiqueta From: es opcional cuando el autor From: es 50762306a36Sopenharmony_citambién la persona (y correo electrónico) enumerados en la línea From: del 50862306a36Sopenharmony_ciencabezado del correo electrónico. 50962306a36Sopenharmony_ci 51062306a36Sopenharmony_ciEjemplo de un parche enviado por el From: autor:: 51162306a36Sopenharmony_ci 51262306a36Sopenharmony_ci <changelog> 51362306a36Sopenharmony_ci 51462306a36Sopenharmony_ci Co-developed-by: Primer coautor <primer@coauthor.example.org> 51562306a36Sopenharmony_ci Signed-off-by: Primer coautor <primer@coauthor.example.org> 51662306a36Sopenharmony_ci Co-developed-by: Segundo coautor <segundo@coautor.ejemplo.org> 51762306a36Sopenharmony_ci Signed-off-by: Segundo coautor <segundo@coautor.ejemplo.org> 51862306a36Sopenharmony_ci Signed-off-by: Autor del From <from@author.example.org> 51962306a36Sopenharmony_ci 52062306a36Sopenharmony_ciEjemplo de un parche enviado por un Co-developed-by: autor:: 52162306a36Sopenharmony_ci 52262306a36Sopenharmony_ci From: Autor del From <from@author.example.org> 52362306a36Sopenharmony_ci 52462306a36Sopenharmony_ci <changelog> 52562306a36Sopenharmony_ci 52662306a36Sopenharmony_ci Co-developed-by: Co-Autor aleatorio <aleatorio@coauthor.example.org> 52762306a36Sopenharmony_ci Signed-off-by: Coautor aleatorio <aleatorio@coauthor.example.org> 52862306a36Sopenharmony_ci Signed-off-by: Autor del From <from@author.example.org> 52962306a36Sopenharmony_ci Co-developed-by: Coautor que envió <sub@coauthor.example.org> 53062306a36Sopenharmony_ci Signed-off-by: Coautor que envía <sub@coauthor.example.org> 53162306a36Sopenharmony_ci 53262306a36Sopenharmony_ciUso de Reported-by:, Tested-by:, Reviewed-by:, Suggested-by: y Fixes: 53362306a36Sopenharmony_ci---------------------------------------------------------------------- 53462306a36Sopenharmony_ci 53562306a36Sopenharmony_ciLa etiqueta Reported-by (Reportado-por) otorga crédito a las personas que 53662306a36Sopenharmony_ciencuentran errores y los reportan. Por favor, tenga en cuenta que si se 53762306a36Sopenharmony_ciinformó de un error en privado, debe pedir primero permiso antes de usar la 53862306a36Sopenharmony_cietiqueta Reported-by. La etiqueta está destinada a errores; por favor no la 53962306a36Sopenharmony_ciuse para acreditar peticiones de características. 54062306a36Sopenharmony_ci 54162306a36Sopenharmony_ciUna etiqueta Tested-by: indica que el parche se probó con éxito (en algún 54262306a36Sopenharmony_cientorno) por la persona nombrada. Esta etiqueta informa a los maintainers 54362306a36Sopenharmony_cide que se han realizado algunas pruebas, proporciona un medio para ubicar 54462306a36Sopenharmony_ci"testers" (gente que pruebe) otros parches futuros y asegura el crédito 54562306a36Sopenharmony_cipara los testers. 54662306a36Sopenharmony_ci 54762306a36Sopenharmony_ciReviewed-by: en cambio, indica que el parche ha sido revisado y encontrado 54862306a36Sopenharmony_ciaceptable de acuerdo con la Declaración del Revisor: 54962306a36Sopenharmony_ci 55062306a36Sopenharmony_ciDeclaración de Supervisión del Revisor 55162306a36Sopenharmony_ci^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 55262306a36Sopenharmony_ci 55362306a36Sopenharmony_ciAl ofrecer mi etiqueta Reviewed-by:, afirmo que: 55462306a36Sopenharmony_ci 55562306a36Sopenharmony_ci(a) He llevado a cabo una revisión técnica de este parche para 55662306a36Sopenharmony_cievaluar su idoneidad y preparación para su inclusión en 55762306a36Sopenharmony_ciel kernel principal. 55862306a36Sopenharmony_ci 55962306a36Sopenharmony_ci(b) Cualquier problema, inquietud o pregunta relacionada con el parche 56062306a36Sopenharmony_cihan sido comunicados al remitente. Estoy satisfecho 56162306a36Sopenharmony_cicon la respuesta del remitente a mis comentarios. 56262306a36Sopenharmony_ci 56362306a36Sopenharmony_ci(c) Si bien puede haber cosas que podrían mejorarse con esta 56462306a36Sopenharmony_cientrega, creo que es, en este momento, (1) una 56562306a36Sopenharmony_cimodificación valiosa al kernel, y (2) libre de conocidas 56662306a36Sopenharmony_cicuestiones que argumentarían en contra de su inclusión. 56762306a36Sopenharmony_ci 56862306a36Sopenharmony_ci(d) Si bien he revisado el parche y creo que es correcto, 56962306a36Sopenharmony_cino hago (a menos que se indique explícitamente en otro lugar) ninguna 57062306a36Sopenharmony_cigarantía o avales de que logrará su definido 57162306a36Sopenharmony_cipropósito o función en cualquier situación dada. 57262306a36Sopenharmony_ci 57362306a36Sopenharmony_ciUna etiqueta Reviewed-by es una declaración de opinión de que el parche es 57462306a36Sopenharmony_ciuna modificación apropiada al kernel sin que haya ningún problema grave 57562306a36Sopenharmony_cia nivel técnico. Cualquier revisor interesado (que haya hecho el trabajo) 57662306a36Sopenharmony_cipuede ofrecer una etiqueta Reviewed-by para un parche. Esta etiqueta sirve 57762306a36Sopenharmony_cipara dar crédito a revisores e informar a los maintainers del grado de 57862306a36Sopenharmony_cirevisión que se ha hecho en el parche. Las etiquetas Reviewed-by, cuando 57962306a36Sopenharmony_cilas otorgan revisores conocidos por entender del tema y realizar 58062306a36Sopenharmony_cirevisiones exhaustivas, normalmente aumentan la probabilidad de que su 58162306a36Sopenharmony_ciparche entre en el kernel. 58262306a36Sopenharmony_ci 58362306a36Sopenharmony_ciLas etiquetas Tested-by y Reviewed-by, una vez recibidas en la lista de 58462306a36Sopenharmony_cicorreo por el tester o revisor, deben ser incluidas por el autor de los 58562306a36Sopenharmony_ciparches pertinentes al enviar próximas versiones. Sin embargo, si el parche 58662306a36Sopenharmony_ciha cambiado sustancialmente en la siguiente versión, es posible que estas 58762306a36Sopenharmony_cietiquetas ya no sean aplicables y, por lo tanto, deben eliminarse. Por lo 58862306a36Sopenharmony_cigeneral, se debe mencionar la eliminación de las etiquetas Tested-by o 58962306a36Sopenharmony_ciReviewed-by de alguien en el registro de cambios del parche (después del 59062306a36Sopenharmony_ciseparador '---'). 59162306a36Sopenharmony_ci 59262306a36Sopenharmony_ciUna etiqueta Suggested-by: indica que la idea del parche es sugerida por la 59362306a36Sopenharmony_cipersona nombrada y asegura el crédito a la persona por la idea. Tenga en 59462306a36Sopenharmony_cicuenta que esto no debe agregarse sin el permiso del "reporter", 59562306a36Sopenharmony_ciespecialmente si la idea no fue publicada en un foro público. Dicho esto, 59662306a36Sopenharmony_cisi diligentemente acreditamos a los reporters de ideas, con suerte, se 59762306a36Sopenharmony_cisentirán inspirados para ayudarnos nuevamente en el futuro. 59862306a36Sopenharmony_ci 59962306a36Sopenharmony_ciUna etiqueta Fixes: indica que el parche corrige un problema en un commit 60062306a36Sopenharmony_cianterior. Esto se utiliza para facilitar descubrir dónde se originó un 60162306a36Sopenharmony_cierror, lo que puede ayudar a revisar una corrección de errores. Esta 60262306a36Sopenharmony_cietiqueta también ayuda al equipo del kernel estable a determinar qué 60362306a36Sopenharmony_civersiones estables del kernel deberían recibir su corrección. Este es el 60462306a36Sopenharmony_cimétodo preferido para indicar un error corregido por el parche. Revise 60562306a36Sopenharmony_ci:ref:`describe_changes` para más detalles. 60662306a36Sopenharmony_ci 60762306a36Sopenharmony_ciNota: Adjuntar una etiqueta Fixes: no subvierte las reglas estables del 60862306a36Sopenharmony_ciproceso del kernel ni el requisito de CC: stable@vger.kernel.org en todos 60962306a36Sopenharmony_cilos parches candidatos de ramas estables. Para obtener más información, lea 61062306a36Sopenharmony_ciDocumentation/process/stable-kernel-rules.rst. 61162306a36Sopenharmony_ci 61262306a36Sopenharmony_ci.. _sp_the_canonical_patch_format: 61362306a36Sopenharmony_ci 61462306a36Sopenharmony_ciFormato de parche canónico 61562306a36Sopenharmony_ci--------------------------- 61662306a36Sopenharmony_ci 61762306a36Sopenharmony_ciEsta sección describe cómo debe darse formato al propio parche. Tenga en 61862306a36Sopenharmony_cicuenta que, si tiene sus parches almacenados en un repositorio ``git``, el 61962306a36Sopenharmony_ciparche con formato adecuado se puede obtener con ``git format-patch``. Las 62062306a36Sopenharmony_ciherramientas no pueden crear el texto necesario, sin embargo, así que lea 62162306a36Sopenharmony_cilas instrucciones a continuación de todos modos. 62262306a36Sopenharmony_ci 62362306a36Sopenharmony_ciLa línea de asunto del parche canónico es:: 62462306a36Sopenharmony_ci 62562306a36Sopenharmony_ci Asunto: [PATCH 001/123] subsistema: frase de resumen 62662306a36Sopenharmony_ci 62762306a36Sopenharmony_ciEl cuerpo del mensaje del parche canónico contiene lo siguiente: 62862306a36Sopenharmony_ci 62962306a36Sopenharmony_ci - Una línea ``from`` que especifica el autor del parche, seguida de una 63062306a36Sopenharmony_ci línea vacía (solo es necesario si la persona que envía el parche no es 63162306a36Sopenharmony_ci el autor). 63262306a36Sopenharmony_ci 63362306a36Sopenharmony_ci - El cuerpo de la explicación, línea envuelta en 75 columnas, que se 63462306a36Sopenharmony_ci copiara en el registro de cambios permanente para describir este parche. 63562306a36Sopenharmony_ci 63662306a36Sopenharmony_ci - Una línea vacía. 63762306a36Sopenharmony_ci 63862306a36Sopenharmony_ci - Las líneas ``Signed-off-by:``, descritas anteriormente, que 63962306a36Sopenharmony_ci también vaya en el registro de cambios. 64062306a36Sopenharmony_ci 64162306a36Sopenharmony_ci - Una línea de marcador que contiene simplemente ``---``. 64262306a36Sopenharmony_ci 64362306a36Sopenharmony_ci - Cualquier comentario adicional que no sea adecuado para el registro de 64462306a36Sopenharmony_ci cambios. 64562306a36Sopenharmony_ci 64662306a36Sopenharmony_ci - El parche real (output de ``diff``). 64762306a36Sopenharmony_ci 64862306a36Sopenharmony_ciEl formato de la línea de asunto hace que sea muy fácil ordenar los correos 64962306a36Sopenharmony_cielectrónicos alfabéticamente por línea de asunto - prácticamente cualquier 65062306a36Sopenharmony_cilector de correo electrónico permite esto, ya que debido a que el número de 65162306a36Sopenharmony_cisecuencia se rellena con ceros, el orden numérico y alfabético es el mismo. 65262306a36Sopenharmony_ci 65362306a36Sopenharmony_ciEl ``subsistema`` en el asunto del correo electrónico debe identificar qué 65462306a36Sopenharmony_ciárea o subsistema del kernel está siendo parcheado. 65562306a36Sopenharmony_ci 65662306a36Sopenharmony_ciLa ``frase de resumen`` en el Asunto del correo electrónico debe describir 65762306a36Sopenharmony_cide forma concisa el parche que contiene ese correo electrónico. La 65862306a36Sopenharmony_ci``frase resumen`` no debe ser un nombre de archivo. No use la mismo ``frase 65962306a36Sopenharmony_ciresumen`` para cada parche en una serie completa de parches (donde una 66062306a36Sopenharmony_ci`` serie de parches`` (patch series) es una secuencia ordenada de múltiples 66162306a36Sopenharmony_ciparches relacionados). 66262306a36Sopenharmony_ci 66362306a36Sopenharmony_ciTenga en cuenta que la ``frase de resumen`` de su correo electrónico se 66462306a36Sopenharmony_ciconvierte en un identificador global único para ese parche. Se propaga por 66562306a36Sopenharmony_cihasta el registro de cambios de ``git``. La ``frase resumida`` se puede 66662306a36Sopenharmony_ciusar más adelante en discusiones de desarrolladores que se refieran al 66762306a36Sopenharmony_ciparche. La gente querrá buscar en Google la ``frase de resumen`` para leer 66862306a36Sopenharmony_cila discusión al respecto del parche. También será lo único que la gente 66962306a36Sopenharmony_cipodrá ver rápidamente cuando, dos o tres meses después, estén pasando por 67062306a36Sopenharmony_ciquizás miles de parches usando herramientas como ``gitk`` o ``git log 67162306a36Sopenharmony_ci--oneline``. 67262306a36Sopenharmony_ci 67362306a36Sopenharmony_ciPor estas razones, el ``resumen`` no debe tener más de 70-75 caracteres, y 67462306a36Sopenharmony_cidebe describir tanto lo que cambia el parche como por qué el parche podría 67562306a36Sopenharmony_ciser necesario. Es un reto ser tanto sucinto como descriptivo, pero eso es 67662306a36Sopenharmony_cilo que un resumen bien escrito debería hacer. 67762306a36Sopenharmony_ci 67862306a36Sopenharmony_ciLa ``frase de resumen`` puede estar precedida por etiquetas encerradas en 67962306a36Sopenharmony_cicorchetes: "Asunto: [PATCH <etiqueta>...] <frase de resumen>". Las 68062306a36Sopenharmony_cietiquetas no se consideran parte de la frase de resumen, pero describen 68162306a36Sopenharmony_cicómo debería ser tratado el parche. Las etiquetas comunes pueden incluir un 68262306a36Sopenharmony_cidescriptor de versión si las múltiples versiones del parche se han enviado 68362306a36Sopenharmony_cien respuesta a comentarios (es decir, "v1, v2, v3") o "RFC" para indicar 68462306a36Sopenharmony_ciuna solicitud de comentarios. 68562306a36Sopenharmony_ci 68662306a36Sopenharmony_ciSi hay cuatro parches en una serie de parches, los parches individuales 68762306a36Sopenharmony_cipueden enumerarse así: 1/4, 2/4, 3/4, 4/4. Esto asegura que los 68862306a36Sopenharmony_cidesarrolladores entiendan el orden en que se deben aplicar los parches y 68962306a36Sopenharmony_cique han revisado o aplicado todos los parches de la serie de parches. 69062306a36Sopenharmony_ci 69162306a36Sopenharmony_ciAquí hay algunos buenos ejemplos de Asuntos:: 69262306a36Sopenharmony_ci 69362306a36Sopenharmony_ci Asunto: [PATCH 2/5] ext2: mejorar la escalabilidad de la búsqueda de mapas de bits 69462306a36Sopenharmony_ci Asunto: [PATCH v2 27/01] x86: corregir el seguimiento de eflags 69562306a36Sopenharmony_ci Asunto: [PATCH v2] sub/sys: resumen conciso del parche 69662306a36Sopenharmony_ci Asunto: [PATCH v2 M/N] sub/sys: resumen conciso del parche 69762306a36Sopenharmony_ci 69862306a36Sopenharmony_ciLa línea ``from`` debe ser la primera línea en el cuerpo del mensaje, 69962306a36Sopenharmony_ciy tiene la forma:: 70062306a36Sopenharmony_ci 70162306a36Sopenharmony_ci From: Autor del parche <autor@ejemplo.com> 70262306a36Sopenharmony_ci 70362306a36Sopenharmony_ciLa línea ``From`` especifica quién será acreditado como el autor del parche 70462306a36Sopenharmony_cien el registro de cambios permanente. Si falta la línea ``from``, entonces 70562306a36Sopenharmony_cila línea ``From:`` del encabezado del correo electrónico se usará para 70662306a36Sopenharmony_cideterminar el autor del parche en el registro de cambios. 70762306a36Sopenharmony_ci 70862306a36Sopenharmony_ciLa explicación estará incluida en el commit del changelog permanente, por 70962306a36Sopenharmony_cilo que debería tener sentido para un lector competente que hace mucho tiempo 71062306a36Sopenharmony_ciha olvidado los detalles de la discusión que podrían haber llevado a 71162306a36Sopenharmony_cieste parche. Incluidos los síntomas del fallo que el parche trate 71262306a36Sopenharmony_ci(mensajes de registro del kernel, mensajes de oops, etc.) son especialmente 71362306a36Sopenharmony_ciútiles para personas que podrían estar buscando en los registros de 71462306a36Sopenharmony_cicommits en busca de la aplicación del parche. El texto debe estar escrito 71562306a36Sopenharmony_cicon tal detalle que cuando se lea semanas, meses o incluso años después, 71662306a36Sopenharmony_cipueda dar al lector la información necesaria y detalles para comprender el 71762306a36Sopenharmony_cirazonamiento de **por qué** se creó el parche. 71862306a36Sopenharmony_ci 71962306a36Sopenharmony_ciSi un parche corrige una falla de compilación, puede que no sea necesario 72062306a36Sopenharmony_ciincluir _todos_ los errores de compilación; pero lo suficiente como para 72162306a36Sopenharmony_cique sea probable que alguien que busque el parche puede encontrarlo. Como 72262306a36Sopenharmony_cien la ``frase de resumen``, es importante ser tanto sucinto como 72362306a36Sopenharmony_cidescriptivo. 72462306a36Sopenharmony_ci 72562306a36Sopenharmony_ciLa línea marcadora ``---`` cumple el propósito esencial de marcar para 72662306a36Sopenharmony_ciherramientas de manejo de parches donde termina el mensaje de registro de 72762306a36Sopenharmony_cicambios. 72862306a36Sopenharmony_ci 72962306a36Sopenharmony_ciUn buen uso de los comentarios adicionales después del marcador ``---`` es 73062306a36Sopenharmony_cipara ``diffstat``, para mostrar qué archivos han cambiado, y el número de 73162306a36Sopenharmony_cilíneas insertadas y eliminadas por archivo. Un ``diffstat`` es 73262306a36Sopenharmony_ciespecialmente útil en parches más grandes. Si va a incluir un ``diffstat`` 73362306a36Sopenharmony_cidespués del marcador ``---``, utilice las opciones ``diffstat`` 73462306a36Sopenharmony_ci``-p 1 -w 70`` para que los nombres de archivo se enumeran desde la parte 73562306a36Sopenharmony_cisuperior del árbol de fuentes del kernel y no use demasiado espacio 73662306a36Sopenharmony_cihorizontal (que encaje fácilmente en 80 columnas, tal vez con alguna 73762306a36Sopenharmony_ciindentación). (``git`` genera diffstats apropiados por defecto). 73862306a36Sopenharmony_ci 73962306a36Sopenharmony_ciOtros comentarios relevantes solo en el momento o para el maintainer, pero 74062306a36Sopenharmony_cino adecuados para el registro de cambios permanente, también debe ir aquí. 74162306a36Sopenharmony_ciUn buen ejemplo de tales comentarios podría ser ``registros de cambios de 74262306a36Sopenharmony_ciparches`` que describen qué ha cambiado entre la versión v1 y v2 del 74362306a36Sopenharmony_ciparche. 74462306a36Sopenharmony_ci 74562306a36Sopenharmony_ciPor favor, ponga esta información **después** de la línea ``---`` que 74662306a36Sopenharmony_cisepara el registro de cambios del resto del parche. La información de la 74762306a36Sopenharmony_civersión no forma parte del registro de cambios que se incluye con el árbol 74862306a36Sopenharmony_cigit. Es información adicional para los revisores. Si se coloca encima de la 74962306a36Sopenharmony_cietiquetas de commit, necesita interacción manual para eliminarlo. Si esta 75062306a36Sopenharmony_cidebajo de la línea de separación, se quita automáticamente al aplicar el 75162306a36Sopenharmony_ciparche:: 75262306a36Sopenharmony_ci 75362306a36Sopenharmony_ci <mensaje de commit> 75462306a36Sopenharmony_ci ... 75562306a36Sopenharmony_ci Signed-off-by: Autor <autor@correo> 75662306a36Sopenharmony_ci --- 75762306a36Sopenharmony_ci V2 -> V3: función auxiliar redundante eliminada 75862306a36Sopenharmony_ci V1 -> V2: estilo de código limpio y comentarios de revisión abordados 75962306a36Sopenharmony_ci 76062306a36Sopenharmony_ci ruta/al/archivo | 5+++-- 76162306a36Sopenharmony_ci ... 76262306a36Sopenharmony_ci 76362306a36Sopenharmony_ciRevise más detalles sobre el formato de parche adecuado en las siguientes 76462306a36Sopenharmony_cireferencias 76562306a36Sopenharmony_ci 76662306a36Sopenharmony_ci.. _sp_backtraces: 76762306a36Sopenharmony_ci 76862306a36Sopenharmony_ciRetrocesos en mensajes de confirmación 76962306a36Sopenharmony_ci^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 77062306a36Sopenharmony_ci 77162306a36Sopenharmony_ciLos "backtraces" (deshacer el camino) ayuda a documentar la cadena de 77262306a36Sopenharmony_cillamadas que conducen a un problema. Sin embargo, no todos los rastreos son 77362306a36Sopenharmony_ciútiles. Por ejemplo, las tempranas cadenas de llamadas de inicio son únicas 77462306a36Sopenharmony_ciy obvias. Sin embargo, al copiar la salida completa de dmesg textualmente, 77562306a36Sopenharmony_ciincluye información que distrae, como marcas de tiempo, listas de módulos, 77662306a36Sopenharmony_ciregistro y volcados de pila. 77762306a36Sopenharmony_ci 77862306a36Sopenharmony_ciPor lo tanto, los backtraces más útiles deben contener los datos 77962306a36Sopenharmony_cirelevantes de la información vertida, lo que hace que sea más fácil 78062306a36Sopenharmony_cicentrarse en el verdadero tema. Este es un ejemplo de un backtrace bien 78162306a36Sopenharmony_cirecortado:: 78262306a36Sopenharmony_ci 78362306a36Sopenharmony_ci error de acceso de MSR no verificado: WRMSR a 0xd51 (intentó escribir 0x0000000000000064) 78462306a36Sopenharmony_ci en rIP: 0xffffffffae059994 (native_write_msr+0x4/0x20) 78562306a36Sopenharmony_ci Rastreo de llamadas: 78662306a36Sopenharmony_ci mba_wrmsr 78762306a36Sopenharmony_ci update_domains 78862306a36Sopenharmony_ci rdtgroup_mkdir 78962306a36Sopenharmony_ci 79062306a36Sopenharmony_ci.. _sp_explicit_in_reply_to: 79162306a36Sopenharmony_ci 79262306a36Sopenharmony_ciIn-Reply-To explicitos en las cabeceras 79362306a36Sopenharmony_ci--------------------------------------- 79462306a36Sopenharmony_ci 79562306a36Sopenharmony_ciPuede ser útil agregar manualmente encabezados In-Reply-To: a un parche 79662306a36Sopenharmony_ci(por ejemplo, al usar ``git send-email``) para asociar el parche con una 79762306a36Sopenharmony_cidiscusión anterior relevante, por ejemplo para vincular una corrección de 79862306a36Sopenharmony_cierrores al correo electrónico con el informe de errores. Sin embargo, para 79962306a36Sopenharmony_ciuna serie de parches múltiples, generalmente es mejor evitar usar 80062306a36Sopenharmony_ciIn-Reply-To: para vincular a versiones anteriores de la serie. De esta 80162306a36Sopenharmony_ciforma, varias versiones del parche no se convierten en un inmanejable 80262306a36Sopenharmony_cibosque de referencias en clientes de correo electrónico. Si un enlace es 80362306a36Sopenharmony_ciútil, puede usar el redirector https://lore.kernel.org/ (por ejemplo, en 80462306a36Sopenharmony_ciel texto de la carta de introducción del correo electrónico) para vincular 80562306a36Sopenharmony_cia una versión anterior de la serie de parches. 80662306a36Sopenharmony_ci 80762306a36Sopenharmony_ci 80862306a36Sopenharmony_ciProporcionar información de árbol base 80962306a36Sopenharmony_ci-------------------------------------- 81062306a36Sopenharmony_ci 81162306a36Sopenharmony_ciCuando otros desarrolladores reciben sus parches y comienzan el proceso de 81262306a36Sopenharmony_cirevisión, a menudo es útil para ellos saber en qué parte del historial del 81362306a36Sopenharmony_ciárbol deben colocar su trabajo. Esto es particularmente útil para CI 81462306a36Sopenharmony_ciautomatizado de procesos que intentan ejecutar una serie de pruebas para 81562306a36Sopenharmony_ciestablecer la calidad de su envío antes de que el maintainer comience la 81662306a36Sopenharmony_cirevisión. 81762306a36Sopenharmony_ci 81862306a36Sopenharmony_ciSi está utilizando ``git format-patch`` para generar sus parches, puede 81962306a36Sopenharmony_ciincluir automáticamente la información del árbol base en su envío usando el 82062306a36Sopenharmony_ciparámetro ``--base``. La forma más fácil y conveniente de usar esta opción 82162306a36Sopenharmony_cies con "topical branches" (ramas de temas):: 82262306a36Sopenharmony_ci 82362306a36Sopenharmony_ci $ git checkout -t -b my-topical-branch master 82462306a36Sopenharmony_ci Branch 'my-topical-branch' set up to track local branch 'master'. 82562306a36Sopenharmony_ci Switched to a new branch 'my-topical-branch' 82662306a36Sopenharmony_ci 82762306a36Sopenharmony_ci [realice sus cambios y ediciones] 82862306a36Sopenharmony_ci 82962306a36Sopenharmony_ci $ git format-patch --base=auto --cover-letter -o outgoing/ master 83062306a36Sopenharmony_ci outgoing/0000-cover-letter.patch 83162306a36Sopenharmony_ci outgoing/0001-First-Commit.patch 83262306a36Sopenharmony_ci outgoing/... 83362306a36Sopenharmony_ci 83462306a36Sopenharmony_ciCuando abra ``outgoing/0000-cover-letter.patch`` para editar, tenga en 83562306a36Sopenharmony_cicuenta que tendrá el tráiler ``base-commit:`` al final, que proporciona al 83662306a36Sopenharmony_cirevisor y a las herramientas de CI suficiente información para realizar 83762306a36Sopenharmony_cicorrectamente ``git am`` sin preocuparse por los conflictos:: 83862306a36Sopenharmony_ci 83962306a36Sopenharmony_ci $ git checkout -b patch-review [base-commit-id] 84062306a36Sopenharmony_ci Switched to a new branch 'patch-review' 84162306a36Sopenharmony_ci $ git am patches.mbox 84262306a36Sopenharmony_ci Applying: First Commit 84362306a36Sopenharmony_ci Applying: ... 84462306a36Sopenharmony_ci 84562306a36Sopenharmony_ciConsulte ``man git-format-patch`` para obtener más información al respecto 84662306a36Sopenharmony_cide esta opción. 84762306a36Sopenharmony_ci 84862306a36Sopenharmony_ci.. Note:: 84962306a36Sopenharmony_ci 85062306a36Sopenharmony_ci La función ``--base`` se introdujo en la versión 2.9.0 de git. 85162306a36Sopenharmony_ci 85262306a36Sopenharmony_ciSi no está utilizando git para dar forma a sus parches, aún puede incluir 85362306a36Sopenharmony_ciel mismo tráiler ``base-commit`` para indicar el hash de confirmación del 85462306a36Sopenharmony_ciárbol en que se basa su trabajo. Debe agregarlo en la carta de presentación 85562306a36Sopenharmony_cio en el primer parche de la serie y debe colocarse ya sea bajo la línea 85662306a36Sopenharmony_ci``---`` o en la parte inferior de todos los demás contenido, justo antes de 85762306a36Sopenharmony_cisu firma del correo electrónico. 85862306a36Sopenharmony_ci 85962306a36Sopenharmony_ci 86062306a36Sopenharmony_ciReferencias 86162306a36Sopenharmony_ci----------- 86262306a36Sopenharmony_ci 86362306a36Sopenharmony_ci"The perfect patch" (tpp) por Andrew Morton. 86462306a36Sopenharmony_ci <https://www.ozlabs.org/~akpm/stuff/tpp.txt> 86562306a36Sopenharmony_ci 86662306a36Sopenharmony_ci"Linux kernel patch submission format" por Jeff Garzik. 86762306a36Sopenharmony_ci <https://web.archive.org/web/20180829112450/http://linux.yyz.us/patch-format.html> 86862306a36Sopenharmony_ci 86962306a36Sopenharmony_ci"How to piss off a kernel subsystem maintainer" por Greg Kroah-Hartman. 87062306a36Sopenharmony_ci <http://www.kroah.com/log/linux/maintainer.html> 87162306a36Sopenharmony_ci 87262306a36Sopenharmony_ci <http://www.kroah.com/log/linux/maintainer-02.html> 87362306a36Sopenharmony_ci 87462306a36Sopenharmony_ci <http://www.kroah.com/log/linux/maintainer-03.html> 87562306a36Sopenharmony_ci 87662306a36Sopenharmony_ci <http://www.kroah.com/log/linux/maintainer-04.html> 87762306a36Sopenharmony_ci 87862306a36Sopenharmony_ci <http://www.kroah.com/log/linux/maintainer-05.html> 87962306a36Sopenharmony_ci 88062306a36Sopenharmony_ci <http://www.kroah.com/log/linux/maintainer-06.html> 88162306a36Sopenharmony_ci 88262306a36Sopenharmony_ciNO!!!! Gente, no mas bombas enormes de parches a linux-kernel@vger.kernel.org! 88362306a36Sopenharmony_ci <https://lore.kernel.org/r/20050711.125305.08322243.davem@davemloft.net> 88462306a36Sopenharmony_ci 88562306a36Sopenharmony_ciKernel Documentation/process/coding-style.rst 88662306a36Sopenharmony_ci 88762306a36Sopenharmony_ciEmail de Linus Torvalds sobre la forma canónica de los parches: 88862306a36Sopenharmony_ci <https://lore.kernel.org/r/Pine.LNX.4.58.0504071023190.28951@ppc970.osdl.org> 88962306a36Sopenharmony_ci 89062306a36Sopenharmony_ci"On submitting kernel patches" por Andi Kleen 89162306a36Sopenharmony_ci Algunas estrategias para conseguir incluir cambios complicados o 89262306a36Sopenharmony_ci controvertidos. 89362306a36Sopenharmony_ci 89462306a36Sopenharmony_ci http://halobates.de/on-submitting-patches.pdf 895