Как отправлять патчи с форматом git format-patch?

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

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

Ответ 1

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

  • Переключить Word Wrap add-on
  • настроить Thunderbird, чтобы не блокировать исправления.
  • или с помощью внешнего редактора

Ответ 2

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

Ответ 3

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

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

Git

В наши дни большинство разработчиков используют git send-email вместо обычного почтовых клиентов. Персональная страница для этого неплохая. При получении end, сопровождающие используют 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 = графический интерфейс пользователя

Alpine (TUI)

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

  • "Не отправлять отправленный текст" должен быть включен
  • "Пропустить пробел перед отправкой" необходимо отключить.

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

Когти Mail (GUI)

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

Чтобы вставить исправление, используйте Message- > Insert File (CTRL + i) или внешний редактор.

Если вставленный патч должен быть отредактирован в окне композиции Claws "Автоматическая упаковка" в Configuration- > Preferences- > Compose- > Wrapping должна быть отключено.

Эволюция (GUI)

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

При создании почты выберите: Preformat от Format- > Paragraph Style- > Preformatted (Ctrl-7) или панель инструментов

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

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

Kmail (GUI)

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

Значение по умолчанию, не составляющее HTML, является подходящим; не включите его.

При составлении сообщения электронной почты в разделе параметров снимите флажок "перенос слов". Единственный Недостатком является то, что любой текст, который вы вводите в электронном письме, не будет заполнен словом поэтому перед патчем вам придется вручную переносить текст текста. Простейший путь вокруг этого состоит в том, чтобы составить вашу электронную почту с включенным переносом слов, а затем сохранить это как черновик. Как только вы вытащите его снова из ваших черновиков, теперь трудно Word-wrapped, и вы можете снять флажок "перенос слов", не теряя упаковка.

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

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

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

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

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

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

Lotus Notes (GUI)

Убегайте от него.

Mutt (TUI)

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

Mutt не поставляется с редактором, поэтому любой редактор, который вы используете, должен быть используется таким образом, что автоматических разрывов нет. Большинство редакторов параметр "вставить файл", который вставляет содержимое файла без изменений.

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

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

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

Вы также можете создавать патчи с '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 = '[email protected]'
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://[email protected]: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 [email protected] is just embarrassing
set realname = "YOUR NAME"
set from = "[email protected]"
set use_from = yes

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

Сосна (TUI)

В прошлом у сосны были некоторые проблемы усечения пробелов, но эти теперь все должно быть исправлено.

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

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

Sylpheed (GUI)

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

Thunderbird (GUI)

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

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

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

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

  • Измените настройки конфигурации Thunderbird так, чтобы они не использовали формат = flowed. Перейдите в "edit- > preferences- > 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-символ. Это включает в себя такие вещи, как европейские имена.