¿Cómo enviar parches por correo electrónico formateados con formatting git-patch?

Tengo una serie de parches que quiero enviar a un proyecto de código abierto, pero no puedo averiguar cómo formatear correctamente un correo electrónico. Intenté ejecutar un command git format-patch y luego los adjunté a un correo electrónico de Thunderbird, pero todos fueron rechazados porque se supone que cada parche debe ser un correo electrónico por separado. Quiero evitar los commands de correo electrónico de git porque tengo un código en el mismo tree que es privado y otro que debo enviar, lo que significa que necesito poder revisar cada correo electrónico manualmente antes de que se envíe.

Quiero seguir utilizando Thunderbird, pero parece que hay problemas, ya que envuelve las líneas y hace que los parches no se puedan usar. También intenté configurar fetchmail y mutt, pero después de literalmente 10 horas de lectura e bash, me rendí. ¿Existe alguna solución que no sea fetchmail ni thunderbird para enviar parches de git?

git help format-patch tiene una sección "SUGERENCIAS ESPECÍFICAS DE MUA" que menciona tres enfoques para hacer que Thunderbird pueda usarse específicamente con git:

  • el complemento Toggle Word Wrap
  • configurar Thunderbird para no manchar parches
  • o usando un editor externo

Por lo general, puede simplemente drag and drop los files generados por git format-patch en su carpeta Borradores. Sé que esto al less funciona con el cliente de correo de Evolution.

Permítanme pegar generosamente la documentation del proyecto Linux . No lo estoy limitando a Thunderbird porque el título de tu pregunta indica interés general, en lugar de Thunderbird solamente. Además, verifique el origen de las actualizaciones a través del enlace mencionado anteriormente, ya que es probable que las actualizaciones no se propaguen a esta respuesta.

Información de clientes de correo electrónico para Linux

Git

Actualmente, la mayoría de los desarrolladores usan git send-email lugar de clientes de correo electrónico normales. La página de manual para esto es bastante buena. En el extremo receptor, los mantenedores usan git am para aplicar los parches.

Si eres nuevo en git, envía tu primer parche a ti mismo. Guárdelo como text sin formatting, incluidos todos los encabezados. Ejecute git am raw_email.txt y luego revise el logging de cambios con git log . Cuando eso funcione, envíe el parche a la (s) list (s) de correo correspondiente.

preferences generales

Los parches para el kernel de Linux se envían por correo electrónico, preferiblemente como text en línea en el cuerpo del correo electrónico. Algunos mantenedores aceptan files adjuntos, pero luego los files adjuntos deben tener un tipo de contenido "text / plain". Sin embargo, los files adjuntos son generalmente mal visto porque hace que citar porciones del parche sea más difícil en el process de revisión del parche.

Los clientes de correo electrónico que se utilizan para parches de kernel de Linux deben enviar el text del parche intacto. Por ejemplo, no deberían modificar o eliminar tabs o espacios, ni siquiera al principio ni al final de las líneas.

No envíe parches con "format = flowed". Esto puede causar saltos de línea inesperados y no deseados.

No permita que su cliente de correo electrónico realice envolvimiento automático de palabras por usted. Esto también puede dañar tu parche.

Los clientes de correo electrónico no deben modificar la encoding del set de caracteres del text. Los parches enviados por correo electrónico deben estar en encoding ASCII o UTF-8 solamente. Si configura su cliente de correo electrónico para enviar correos electrónicos con encoding UTF-8, evitará algunos posibles problemas de juego de caracteres.

Los clientes de correo electrónico deben generar y mantener References: o In-Reply-To: encabezados para que el correo no se rompa.

Copiar y pegar (o cortar y pegar) generalmente no funciona para los parches porque las tabs se convierten en espacios. El uso de xclipboard, xclip y / o xcutsel puede funcionar, pero es mejor probarlo usted mismo o simplemente evitar copyr y pegar.

No use las firmas PGP / GPG en el correo que contiene parches. Esto rompe muchos scripts que leen y aplican los parches. (Esto debería ser reparable)

Es una buena idea enviarte un parche, save el post recibido y aplicarlo con éxito con 'parche' antes de enviar parches a las lists de correo de Linux.

Algunas sugerencias de clientes de correo electrónico (MUA)

Aquí hay algunos consejos específicos de configuration de MUA para editar y enviar parches para el kernel de Linux. Estos no están destinados a ser resúmenes completos de la configuration del package de software.

Leyenda: TUI = Interfaz de usuario basada en text GUI = Interfaz gráfica de usuario

Alpine (TUI)

Opciones de configuration: en la sección "Preferences de envío":

  • "No enviar text fluido" debe estar habilitado
  • "Franja de espacio en blanco antes del envío" debe estar deshabilitado

Al networkingactar el post, el cursor debe colocarse donde debería aparecer el parche y luego presionar CTRL-R le permite especificar el file de parche para insert en el post.

Claws Mail (GUI)

Trabajos. Algunas personas usan esto con éxito para parches.

Para insert un parche, utilice Mensaje-> Insertar file (CTRL + i) o un editor externo.

Si el parche insertado debe editarse en la window de composition de Garras, se debe desactivar "Envoltorio automático" en Configuración-> Preferences-> Componer-> Envolver.

Evolución (GUI)

Algunas personas usan esto con éxito para parches.

Al componer el correo, select: Preformat desde Formato-> Estilo de párrafo-> Preformateado (Ctrl-7) o la barra de herramientas

Luego use: Insertar-> Archivo de text … (Alt-n x) para insert el parche.

También puede "diff -Nru old.c new.c | xclip", seleccionar Preformat, luego pegar con el button central.

Kmail (GUI)

Algunas personas usan Kmail con éxito para parches.

La configuration pnetworkingeterminada de no componer en HTML es apropiada; no lo habilite

Al networkingactar un correo electrónico, en Opciones, desmarque "ajuste de palabra". La única desventaja es que cualquier text que escriba en el correo electrónico no se envolverá en palabras, por lo que tendrá que ajustar manualmente el text antes del parche. La forma más fácil de solucionar esto es networkingactar su correo electrónico con la function de ajuste de text habilitada, luego guárdelo como borrador. Una vez que lo levante nuevamente de sus borradores, ahora es difícil envolverlo por palabras y puede desmarcar el "ajuste de palabras" sin perder el ajuste existente.

En la parte inferior de su correo electrónico, coloque el delimitador de parches comúnmente utilizado antes de insert su parche: tres guiones (—).

Luego, desde el elemento del menu "Mensaje", selecciona insert file y elige tu parche. Como beneficio adicional, puede personalizar el menu de la barra de herramientas de creación de posts y colocar allí el ícono de "insert file".

Haga que la window del compositor sea lo suficientemente ancha para que no se formen líneas. A partir de KMail 1.13.5 (KDE 4.5.4), KMail aplicará el ajuste de palabras al enviar el correo electrónico si las líneas se envuelven en la window del autor. Tener el ajuste de palabras desactivado en el menu de Opciones no es suficiente. Por lo tanto, si su parche tiene líneas muy largas, debe hacer que la window del compositor sea muy amplia antes de enviar el correo electrónico. Ver: https://bugs.kde.org/show_bug.cgi?id=174034

Puede con security adjuntar files GPG, pero el text en línea es preferible para los parches, por lo que GPG no los debe firmar. Los parches de firma que se han insertado como text integrado dificultarán la extracción de su encoding de 7 bits.

Si debe enviar parches como files adjuntos en lugar de marcarlos como text, haga clic derecho en el file adjunto y select properties, y resalte "Sugerir visualización automática" para que el file adjunto esté en línea para que sea más visible.

Cuando guarde parches que se envían como text en línea, select el correo electrónico que contiene el parche desde el panel de la list de posts, haga clic con el button derecho y select "save como". Puede usar todo el correo electrónico sin modificar como un parche si se compuso correctamente. Actualmente no hay una opción para save el correo electrónico cuando lo está viendo en su propia window: se ha presentado una request en bugzilla de kmail y esperamos que esto se solucione. Los correos electrónicos se guardan como de lectura y escritura solo para el usuario, por lo que deberá modificarlos para que sean legibles en grupo y en todo el mundo si los copy en otro lugar.

Lotus Notes (GUI)

Huir de eso.

Mutt (TUI)

Muchos desarrolladores de Linux usan mutt, por lo que debe funcionar bastante bien.

Mutt no viene con un editor, por lo que cualquier editor que use debe usarse de forma que no haya saltos de línea automáticos. La mayoría de los editores tienen una opción de "insert file" que inserta el contenido de un file sin modificaciones.

Para usar 'vim' con mutt: set editor = "vi"

Si usa xclip, escriba el command: establecer pegar antes del button central o shift-insert o usar: r nombre de file

si quieres include el parche en línea (a) ttach funciona bien sin "establecer pegar".

También puede generar parches con 'git format-patch' y luego usar Mutt para enviarlos: $ mutt -H 0001-some-bug-fix.patch

Opciones de configuration: debería funcionar con la configuration pnetworkingeterminada. Sin embargo, es una buena idea configurar el "send_charset" para: establecer send_charset = "us-ascii: utf-8"

Mutt es altamente personalizable. Aquí hay una configuration mínima para comenzar a usar Mutt para enviar parches a través de Gmail:

 # .muttrc # ================ IMAP ==================== set imap_user = 'yourusername@gmail.com' set imap_pass = 'yourpassword' set spoolfile = imaps://imap.gmail.com/INBOX set folder = imaps://imap.gmail.com/ set record="imaps://imap.gmail.com/[Gmail]/Sent Mail" set postponed="imaps://imap.gmail.com/[Gmail]/Drafts" set mbox="imaps://imap.gmail.com/[Gmail]/All Mail" # ================ SMTP ==================== set smtp_url = "smtp://username@smtp.gmail.com:587/" set smtp_pass = $imap_pass set ssl_force_tls = yes # Require encrypted connection # ================ Composition ==================== set editor = `echo \$EDITOR` set edit_headers = yes # See the headers when editing set charset = UTF-8 # value of $LANG; also fallback for send_charset # Sender, email address, and sign-off line must match unset use_domain # because joe@localhost is just embarrassing set realname = "YOUR NAME" set from = "username@gmail.com" set use_from = yes 

Los documentos de Mutt tienen mucha más información: http://dev.mutt.org/trac/wiki/UseCases/Gmail http://dev.mutt.org/doc/manual.html

Pino (TUI)

Pine ha tenido problemas de truncamiento en el espacio en blanco en el pasado, pero todo esto debería solucionarse ahora.

Usa alpine (sucesor de pine) si puedes.

Opciones de configuration: – se necesita text quell-flowed para versiones recientes. Se necesita la opción "no-strip-whitespace-before-send".

Sylpheed (GUI)

  • Funciona bien para include text (o usar files adjuntos).
  • Permite el uso de un editor externo.
  • Es lento en carpetas grandes.
  • No hará TLS SMTP auth a través de una connection que no sea SSL.
  • Tiene una barra de regla útil en la window de networkingacción.
  • Agregar direcciones a la libreta de direcciones no comprende el nombre para mostrar correctamente.

Thunderbird (GUI)

Thunderbird es un clon de Outlook que le gusta manipular el text, pero hay forms de obligarlo a comportarse.

  • Permita el uso de un editor externo: lo más fácil de hacer con Thunderbird y parches es usar una extensión de "editor externo" y luego simplemente use su $ EDITOR favorito para leer / fusionar parches en el text del cuerpo. Para ello, descargue e instale la extensión, luego agregue un button usando View-> Barras de herramientas-> Personalizar … y finalmente solo click ella cuando esté en el cuadro de dialog Redactar.

    Tenga en count que el "editor externo" requiere que su editor no se bifurque, o en otras palabras, el editor no debe regresar antes del cierre. Es posible que deba pasar indicadores adicionales o cambiar la configuration de su editor. En particular, si está utilizando gvim, debe pasar la opción -f a gvim colocando "/ usr / bin / gvim -f" (si el binary está en / usr / bin) en el campo del editor de text en "editor externo" configuraciones. Si está utilizando algún otro editor, lea su manual para averiguar cómo hacerlo.

Para sacar algo de sentido del editor interno, haz esto:

  • Edite la configuration de configuration de Thunderbird para que no use format = flowed. Vaya a "editar-> preferences-> avanzado-> editor de configuration" para que aparezca el editor de logging de Thunderbird.

  • Establezca "mailnews.send_plaintext_flowed" en "falso"

  • Establezca "mailnews.wraplength" de "72" a "0"

  • "Ver"> "Cuerpo del post como"> "Texto sin formatting"

  • "Ver"> "Codificación de caracteres"> "Unicode (UTF-8)"

TkRat (GUI)

Trabajos. Use "Insertar file …" o editor externo.

Gmail (GUI web)

No funciona para enviar parches.

El cliente web de Gmail convierte las tabs en espacios automáticamente.

Al mismo time, envuelve líneas cada 78 caracteres con saltos de línea de estilo CRLF aunque el problema de tab2space se puede resolver con un editor externo.

Otro problema es que Gmail codificará en base64 cualquier post que tenga un carácter que no sea ASCII. Eso incluye cosas como nombres europeos.