Как отправить по электронной почте патчи, отформатированные с помощью git format-patch? - PullRequest
12 голосов
/ 30 июня 2011

У меня есть серия патчей, которые я хочу отправить в проект с открытым исходным кодом, но я не могу понять, как правильно отформатировать электронную почту. Я попытался выполнить команду git format-patch, а затем прикрепил их все к электронному письму от Thunderbird, но все они были отклонены, поскольку каждый патч должен был представлять собой отдельное электронное письмо. Я хочу избегать команд git email, потому что у меня есть код в том же дереве, который является личным, и некоторые, которые мне нужно отправить, что означает, что я должен иметь возможность вручную просматривать каждое письмо перед его отправкой.

Я хочу продолжать использовать Thunderbird, но, похоже, с ним проблемы, поскольку он переносит строки и делает исправления непригодными. Я также попытался настроить fetchmail и mutt, но буквально через 10 часов чтения и попыток я сдался. Есть ли не-fetchmail и не-thunderbird решение для отправки git-патчей?

Ответы [ 3 ]

10 голосов
/ 08 июля 2016

Позвольте мне щедро вставить документацию проекта Linux . Я не ограничиваю его только Thunderbird, потому что заголовок вашего вопроса указывает на общий интерес, а не только на Thunderbird. Кроме того, проверьте источник обновлений, возможно, через по этой ссылке , так как вполне вероятно, что обновления не распространятся на этот ответ.

Информация о почтовых клиентах для Linux

Гит

В наши дни большинство разработчиков используют git send-email вместо обычных почтовые клиенты. Справочная страница для этого довольно хорошая. На получение В конце концов, сопровождающие используют git am для применения исправлений.

Если вы новичок в git, отправьте свой первый патч себе. Сохрани это в виде необработанного текста, включая все заголовки. Запустите git am raw_email.txt и затем просмотрите список изменений с помощью git log. Когда это работает, то отправьте патч к соответствующим спискам рассылки.

Общие настройки

Патчи для ядра Linux отправляются по электронной почте, желательно в виде встроенный текст в теле письма. Некоторые сопровождающие принимают вложения, но тогда вложения должны иметь тип содержимого «Текст / обычный». Тем не менее, вложения обычно не одобряются, потому что это затрудняет цитирование частей патча в патче процесс обзора.

Почтовые клиенты, которые используются для исправлений ядра Linux, должны отправлять текст патча нетронутым. Например, они не должны изменять или удалять вкладки или пробелы, даже в начале или конце строк.

Не отправляйте патчи с "format = flowed". Это может вызвать неожиданное и нежелательные разрывы строк.

Не позволяйте вашему почтовому клиенту автоматически переносить слова. Это также может повредить ваш патч.

Почтовые клиенты не должны изменять кодировку кодировки текста. Почтовые патчи должны быть только в кодировке ASCII или UTF-8. Если вы настроите свой почтовый клиент для отправки писем в кодировке UTF-8, Вы избегаете некоторых возможных проблем с кодировкой.

Почтовые клиенты должны создавать и поддерживать ссылки: или In-Reply-To: заголовки, чтобы не прерывать поток почты.

Копирование и вставка (или вырезание и вставка) обычно не работают для исправлений потому что вкладки преобразуются в пробелы. Использование xclipboard, xclip и / или xcutsel может работать, но лучше проверить это самостоятельно или просто избегать копирования и вставки.

Не используйте подписи PGP / GPG в почте, содержащей исправления. Это нарушает многие скрипты, которые читают и применяют патчи. (Это должно быть исправимо.)

Хорошая идея - отправить патч себе, сохранить полученное сообщение, и успешно примените его с патчем перед отправкой патчей в Linux списки рассылки.

Некоторые почтовые клиенты (MUA) подсказывают

Вот некоторые конкретные советы по настройке MUA для редактирования и отправки. патчи для ядра Linux. Они не предназначены для завершения Сводка конфигурации программного пакета.

Легенда: TUI = текстовый пользовательский интерфейс GUI = графический интерфейс пользователя

Альпийский (TUI)

Параметры конфигурации: В разделе «Настройки отправки»:

  • Должно быть включено «Не отправлять потоковый текст»
  • «Удалять пробелы перед отправкой» необходимо отключить

При составлении сообщения курсор должен быть расположен там, где патч должен появиться, а затем нажмите CTRL-R, чтобы указать файл патча вставить в сообщение.

Claws Mail (GUI)

Работает. Некоторые люди успешно используют это для исправлений.

Чтобы вставить патч, используйте Сообщение-> Вставить файл (CTRL + i) или внешний редактор.

Если вставленный патч нужно редактировать в окне композиции Claws «Автоперенос» в «Конфигурация» -> «Настройки» -> «Компоновка» - инвалиды.

Evolution (GUI)

Некоторые люди успешно используют это для исправлений.

При составлении письма выберите: Preformat из Формат-> Стиль абзаца-> Предварительно отформатированный (Ctrl-7) или панель инструментов

Тогда используйте: Вставить-> Текстовый файл ... (Alt-n x) вставить патч.

Вы также можете "diff -Nru old.c new.c | xclip", выбрать Preformat, а затем вставить с помощью средней кнопки.

Kmail (GUI)

Некоторые люди используют Kmailуспешно для патчей.

По умолчанию не используется компоновка в HTML;не включайте его.

При создании письма в опциях снимите флажок «перенос слов».Единственным недостатком является то, что любой текст, который вы вводите в электронном письме, не будет переноситься по словам, поэтому вам придется вручную переносить текст перед переносом.Самый простой способ обойти это - создать письмо с включенным переносом слов, а затем сохранить его как черновик.После того, как вы снова извлечете его из черновиков, он теперь будет жестко завернут в слова, и вы сможете снять флажок «перенос слов», не теряя существующего переноса.

В нижней части письма укажите распространенный разделитель патчей.перед вставкой патча: три дефиса (---).

Затем в пункте меню «Сообщение» выберите «Вставить файл» и выберите свой патч.В качестве дополнительного бонуса вы можете настроить меню панели инструментов создания сообщений и поместить туда значок «вставить файл».

Сделайте окно компоновщика достаточно широким, чтобы не переносить строки.Начиная с KMail 1.13.5 (KDE 4.5.4), KMail будет применять перенос слов при отправке электронного письма, если перенос строк в окне компоновщика.Отключить перенос слов в меню «Параметры» недостаточно.Таким образом, если ваш патч имеет очень длинные строки, вы должны сделать окно композитора очень широким перед отправкой электронного письма.См .: https://bugs.kde.org/show_bug.cgi?id=174034

Вы можете безопасно подписывать вложения GPG, но встроенный текст предпочтителен для исправлений, поэтому не подписывайте их GPG.Подписание патчей, которые были вставлены в виде встроенного текста, затруднит их извлечение из их 7-битной кодировки.

Если вам абсолютно необходимо отправлять патчи в виде вложений, а не вставлять их в виде текста, щелкните правой кнопкой мыши на вложении и выберитев свойствах и выделите «Предлагать автоматическое отображение», чтобы сделать вложение встроенным, чтобы сделать его более видимым.

При сохранении исправлений, отправляемых в виде встроенного текста, выберите сообщение электронной почты, содержащее исправление, на панели списка сообщений, справанажмите и выберите «Сохранить как».Вы можете использовать всю электронную почту без изменений в качестве патча, если она была правильно составлена.В настоящее время нет возможности сохранить электронное письмо, когда вы на самом деле просматриваете его в своем собственном окне - в bugzilla kmail был подан запрос, и, надеюсь, это будет решено.Электронные письма сохраняются в режиме «чтение-запись» только для пользователя, поэтому вам придется изменить их, чтобы сделать их доступными для чтения в группе и мире, если вы копируете их в другое место.

Lotus Notes (GUI)

Убежать отit.

Mutt (TUI)

Множество разработчиков Linux используют Mutt, поэтому он должен работать очень хорошо.

Mutt не поставляется с редактором, так что какой бы редактор ни былвы должны использовать таким образом, чтобы не было автоматических разрывов строк.В большинстве редакторов есть опция «вставить файл», которая вставляет содержимое файла без изменений.

Чтобы использовать 'vim' с mutt: set editor = "vi"

Если используется xclip, введитеКоманда: установите вставку перед средней кнопкой или Shift-Insert или используйте: r имя файла

, если вы хотите включить патч в линию.(a) ttach отлично работает без "set paste".

Вы также можете создавать патчи с помощью 'git format-patch' и затем использовать Mutt для их отправки: $ mutt -H 0001-some-bug-fix.patch

Параметры конфигурации: он должен работать с настройками по умолчанию.Тем не менее, рекомендуется установить для send_charset значение: set send_charset = "us-ascii: utf-8"

Mutt обладает широкими возможностями настройки.Ниже приведена минимальная конфигурация для начала использования Mutt для отправки исправлений через 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

В документации Mutt содержится гораздо больше информации: http://dev.mutt.org/trac/wiki/UseCases/Gmail http://dev.mutt.org/doc/manual.html

Pine (TUI)

У Pine были некоторые проблемы с усечением пробелов в прошлом, но все они должны быть исправлены сейчас.

Используйте alpine (преемник pine), если можете.

Параметры конфигурации: - quell-flowed-text необходим для последних версий- требуется опция "no-strip-whitespace-before-send"

Sylpheed (GUI)

  • Хорошо работает для встраивания текста (или использования вложений).
  • Позволяет использовать внешний редактор.
  • Медленно работает с большими папками.
  • Не будет выполнять аутентификацию TLS SMTP через соединение без SSL.
  • Имеет полезную линейку в окне создания.
  • При добавлении адресов в адресную книгу не понимается отображаемое имя должным образом.

Thunderbird (GUI)

Thunderbird - это клон Outlook, который любит искажать текст, но есть способы чтобы заставить его вести себя.

  • Разрешить использование внешнего редактора: Самое простое, что можно сделать с Thunderbird и патчами, это использовать расширение "external editor", а затем просто используйте ваш любимый $ EDITOR для чтения / объединения патчей в основной текст. Для этого скачайте и установите расширение, затем добавьте для него кнопку, используя Вид-> Панели инструментов-> Настроить ... и, наконец, просто нажмите на него, когда в Диалог создания.

    Обратите внимание, что «внешний редактор» требует, чтобы ваш редактор не должен fork, или другими словами, редактор не должен возвращаться перед закрытием. Возможно, вам придется пройти дополнительные флаги или изменить настройки вашего редактор. В частности, если вы используете gvim, вы должны передать -f опцию gvim, поставив "/ usr / bin / gvim -f" (если бинарный файл находится в / usr / bin) в поле текстового редактора в настройках «внешнего редактора». если ты используете какой-то другой редактор, пожалуйста, прочитайте его руководство, чтобы узнать, как сделать это.

Чтобы немного разбираться во внутреннем редакторе, сделайте это:

  • Измените настройки конфигурации Thunderbird, чтобы он не использовал format = flowed. Перейдите в «edit-> settings-> advanced-> config editor», чтобы вызвать Редактор реестра Thunderbird.

  • Установить для "mailnews.send_plaintext_flowed" значение "false"

  • Установить "mailnews.wraplength" от "72" до "0"

  • "Просмотр"> "Тело сообщения как"> "Простой текст"

  • «Вид»> «Кодировка символов»> «Юникод (UTF-8)»

TkRat (GUI)

Работает. Используйте «Вставить файл ...» или внешний редактор.

Gmail (веб-интерфейс)

Не работает для отправки патчей.

Веб-клиент Gmail автоматически преобразует табуляции в пробелы.

В то же время он оборачивает строки каждые 78 символов с помощью разрывов строк в стиле CRLF. хотя проблему с tab2space можно решить с помощью внешнего редактора.

Другая проблема заключается в том, что Gmail будет base64-кодировать любое сообщение, которое имеет не-ASCII символ. Это включает в себя такие вещи, как европейские имена.

7 голосов
/ 30 июня 2011

git help format-patch имеет раздел «MUA-SPECIFIC HINTS», в котором упоминаются три подхода, специально предназначенные для использования Thunderbird с помощью git:

  • дополнение Toggle Word Wrap
  • configureThunderbird не исправляет патчи
  • или использует внешний редактор
7 голосов
/ 30 июня 2011

Обычно вы можете просто перетащить файлы, сгенерированные git format-patch, в вашу папку Drafts. Я знаю, что по крайней мере это работает с почтовым клиентом Evolution.

...