Spec-Zone.ru › Git

git-send-email

Название

git-send-email — отправка набора исправлений по электронной почте

Краткое описание

git send-email [<options>] (<file>|<directory>)…​
git send-email [<options>] <format-patch-options>
git send-email --dump-aliases
git send-email --translate-aliases

Описание

Принимает исправления, указанные в командной строке, и отправляет их по электронной почте. Исправления можно указать в виде файлов, каталогов (в этом случае будут отправлены все файлы в каталоге) или непосредственно в виде списка ревизий. В последнем случае в git send-email можно передать любой формат, принимаемый git-format-patch[1], а также параметры, распознаваемые git-format-patch[1].

Заголовок электронного письма настраивается с помощью параметров командной строки. Если он не указан в командной строке, пользователю будет предложено ввести необходимые данные в интерфейсе с поддержкой ReadLine.

Для файлов исправлений допускаются два формата:

  1. Файлы в формате mbox

    Именно этот формат создаёт git-format-patch[1]. Большинство заголовков и параметров форматирования MIME игнорируются.

  2. Исходный формат, используемый скриптом send_lots_of_email.pl Грега Кроа-Хартмана

    В этом формате первая строка файла должна содержать значение Cc:, а вторая — Subject: сообщения.

Параметры

Подготовка письма

--annotate

Проверить и отредактировать каждое исправление перед отправкой. По умолчанию используется значение sendemail.annotate. См. описание sendemail.multiEdit в разделе НАСТРОЙКА.

--bcc=<address>,…​

Указать значение Bcc: для каждого письма. По умолчанию используется значение sendemail.bcc.

Этот параметр можно указывать несколько раз.

--cc=<address>,…​

Указать начальное значение Cc: для каждого письма. По умолчанию используется значение sendemail.cc.

Этот параметр можно указывать несколько раз.

--compose

Открыть текстовый редактор (см. GIT_EDITOR в git-var[1]) для редактирования вступительного сообщения к серии исправлений.

Если используется --compose, git send-email будут использовать заголовки From, To, Cc, Bcc, Subject, Reply-To и In-Reply-To, заданные в сообщении. Если в теле сообщения (текст, вводимый после заголовков и пустой строки) содержатся только пустые строки (или строки, начинающиеся с Git:), сводка отправлена не будет, однако упомянутые выше заголовки будут использованы, если их не удалить.

Если заголовки From или In-Reply-To отсутствуют, система предложит ввести их.

См. описание sendemail.multiEdit в разделе НАСТРОЙКА.

--from=<address>

Указать отправителя электронных писем. Если параметр не указан в командной строке, используется значение параметра настройки sendemail.from. Если не задан ни параметр командной строки, ни sendemail.from, система предложит ввести значение. В качестве значения по умолчанию для запроса используется значение GIT_AUTHOR_IDENT или, если оно не задано, GIT_COMMITTER_IDENT, возвращаемое командой git var -l.

--reply-to=<address>

Указать адрес, на который должны поступать ответы получателей. Используйте этот параметр, если ответы на сообщения должны приходить на адрес, отличный от указанного параметром --from.

--in-reply-to=<identifier>

Сделать так, чтобы первое письмо (или все письма с параметром --no-thread) выглядело ответом на указанный Message-ID. Это позволяет начать новую серию исправлений, не нарушая существующие цепочки обсуждений. Второе и последующие письма будут отправлены как ответы в соответствии с настройкой --[no-]chain-reply-to.

Например, если указаны --thread и --no-chain-reply-to, второе и последующие исправления будут ответами на первое, как показано на схеме ниже, где [PATCH v2 0/3] является ответом на [PATCH 0/2]:

[PATCH 0/2] Here is what I did...
  [PATCH 1/2] Clean up and tests
  [PATCH 2/2] Implementation
  [PATCH v2 0/3] Here is a reroll
    [PATCH v2 1/3] Clean up
    [PATCH v2 2/3] New tests
    [PATCH v2 3/3] Implementation

Используется только при наличии параметра --compose. Если параметр --compose не задан, система предложит ввести его.

--outlook-id-fix
--no-outlook-id-fix

SMTP-серверы Microsoft Outlook отбрасывают переданный в письме Message-ID и назначают новый случайный Message-ID, нарушая тем самым цепочки обсуждений.

При использовании --outlook-id-fix git send-email применяет механизм, специфичный для серверов Outlook, чтобы определить назначенный сервером Message-ID и исправить цепочку. Используйте его только в том случае, если известно, что сервер сообщает изменённый Message-ID так же, как серверы Outlook.

Если параметр не указан, исправление выполняется по умолчанию при подключении к smtp.office365.com или smtp-mail.outlook.com. Используйте --no-outlook-id-fix, чтобы отключить исправление и при подключении к этим двум серверам.

--subject=<string>

Указать начальную тему цепочки писем. Используется только при наличии параметра --compose. Если параметр --compose не задан, система предложит ввести тему.

--to=<address>,…​

Указать основного получателя создаваемых писем. Обычно это сопровождающий проекта, в котором участвуют. По умолчанию используется значение параметра настройки sendemail.to; если оно не задано, а параметр --to-cmd не указан, система предложит ввести адрес.

Этот параметр можно указывать несколько раз.

--8bit-encoding=<encoding>

При обнаружении сообщения или темы с символами вне ASCII, в которых не указана кодировка, добавить заголовки или кавычки, обозначающие кодировку <encoding>. По умолчанию используется значение параметра sendemail.assume8bitEncoding; если оно не задано, система предложит ввести кодировку при обнаружении файлов с символами вне ASCII.

Обратите внимание: проверка кодировки не выполняется.

--compose-encoding=<encoding>

Указать кодировку составляемого сообщения. По умолчанию используется значение параметра sendemail.composeEncoding; если оно не задано, предполагается UTF-8.

--transfer-encoding=(7bit|8bit|quoted-printable|base64|auto)

Указать кодировку передачи сообщения по SMTP. Значение 7bit приведёт к ошибке при обнаружении сообщения с символами вне ASCII. Значение quoted-printable может быть полезно, если репозиторий содержит файлы с символами возврата каретки, но значительно затрудняет ручной просмотр исходного файла письма с исправлением (сохранённого из почтового клиента). Значение base64 ещё надёжнее, но делает содержимое ещё менее прозрачным. Значение auto использует 8bit, если это возможно, и в противном случае — quoted-printable.

По умолчанию используется значение параметра настройки sendemail.transferEncoding; если оно не задано, используется auto.

--xmailer
--no-xmailer

Добавить заголовок X-Mailer: или запретить его добавление. По умолчанию заголовок добавляется, но это можно отключить, задав для переменной настройки sendemail.xmailer значение false.

Отправка

--envelope-sender=<address>

Указать отправителя конверта, используемого для отправки писем. Это полезно, если ваш адрес по умолчанию отличается от адреса, подписанного на список рассылки. Чтобы использовать адрес From, задайте значение auto. Если вы используете исполняемый файл sendmail, для параметра -f нужны соответствующие права. По умолчанию используется значение переменной настройки sendemail.envelopeSender; если оно не задано, выбор отправителя конверта остаётся за вашим MTA.

--sendmail-cmd=<command>

Указать команду для отправки электронных писем. Команда должна быть совместима с sendmail; в частности, она должна поддерживать параметр -i. При необходимости команда будет выполнена в оболочке. По умолчанию используется значение sendemail.sendmailCmd. Если оно и --smtp-server не заданы, git send-email будет искать sendmail в /usr/sbin, /usr/lib и $PATH.

--smtp-encryption=<encryption>

Указать способ начала шифрования SMTP-соединения. Допустимые значения: ssl и tls. Любое другое значение включает обычный (незашифрованный) SMTP, использующий по умолчанию порт 25. Несмотря на названия, оба значения используют одну и ту же, более новую версию TLS; эти названия сохранились по историческим причинам. ssl означает «неявное» шифрование (иногда называемое SMTPS), по умолчанию использующее порт 465. tls означает «явное» шифрование (часто называемое STARTTLS), по умолчанию использующее порт 25. SMTP-сервер может использовать и другие порты, отличные от указанных по умолчанию. Часто используемый альтернативный порт для tls и незашифрованного соединения — 587. Чтобы определить подходящий вариант, ознакомьтесь с документацией провайдера или конфигурацией сервера. По умолчанию используется значение sendemail.smtpEncryption.

--smtp-domain=<FQDN>

Указать полное доменное имя (FQDN), используемое в команде HELO/EHLO для SMTP-сервера. Некоторые серверы требуют, чтобы FQDN соответствовало вашему IP-адресу. Если параметр не задан, git send-email попытается определить FQDN автоматически. По умолчанию используется значение sendemail.smtpDomain.

--smtp-auth=<mechanisms>

Разделённый пробелами список разрешённых механизмов SMTP-AUTH. Этот параметр позволяет использовать только перечисленные механизмы. Например:

$ git send-email --smtp-auth="PLAIN LOGIN GSSAPI" ...

Если хотя бы один из указанных механизмов поддерживается используемой библиотекой SASL и объявлен SMTP-сервером, этот механизм применяется для аутентификации. Если не указаны ни sendemail.smtpAuth, ни --smtp-auth, можно использовать все механизмы, поддерживаемые библиотекой SASL. Специальное значение none можно указать, чтобы полностью отключить аутентификацию независимо от --smtp-user.

--smtp-pass[=<password>]

Пароль для SMTP-AUTH. Аргумент необязателен: если он не указан, в качестве пароля используется пустая строка. По умолчанию используется значение sendemail.smtpPass, однако --smtp-pass всегда имеет приоритет.

Кроме того, пароли не обязательно указывать в файлах настройки или в командной строке. Если указано имя пользователя (с помощью --smtp-user или sendemail.smtpUser), но пароль не задан (с помощью --smtp-pass или sendemail.smtpPass), пароль будет получен с помощью git-credential[1].

--no-smtp-auth

Отключить аутентификацию SMTP. Краткая форма параметра --smtp-auth=none.

--smtp-server=<host>

Указать исходящий SMTP-сервер (например, smtp.example.com или необработанный IP-адрес). Если параметр не задан, а также не задан --sendmail-cmd, по умолчанию выполняется поиск sendmail в /usr/sbin, /usr/lib и $PATH, если такая программа доступна; в противном случае используется localhost.

Для обратной совместимости этот параметр также может указывать полный путь к программе, совместимой с sendmail; программа должна поддерживать параметр -i. Этот способ не позволяет передавать аргументы или использовать обычные имена команд. Для таких случаев используйте вместо него --sendmail-cmd.

--smtp-server-port=<port>

Указать порт, отличный от порта по умолчанию (SMTP-серверы обычно принимают соединения SMTP на порту 25, но также могут использовать порт отправки 587 или распространённый порт SSL SMTP 465). Допускаются и символьные имена портов (например, submission вместо 587). Порт также можно задать с помощью переменной настройки sendemail.smtpServerPort.

--smtp-server-option=<option>

Указать параметр исходящего SMTP-сервера. Значение по умолчанию можно задать с помощью параметра настройки sendemail.smtpServerOption.

Параметр --smtp-server-option нужно повторять для каждого параметра, передаваемого серверу. Аналогично, в файлах настройки для каждого параметра должна использоваться отдельная строка.

--smtp-ssl

Устаревший псевдоним для --smtp-encryption ssl.

--smtp-ssl-cert-path <path>

Путь к хранилищу доверенных сертификатов CA для проверки сертификатов SMTP SSL/TLS (каталог, обработанный командой c_rehash, или отдельный файл с одним или несколькими объединёнными сертификатами в формате PEM: дополнительные сведения см. в описаниях параметров -CAfile <file> и -CApath <dir> на https://docs.openssl.org/master/man1/openssl-verify/ [странице руководства OpenSSL verify(1)]). Чтобы отключить проверку сертификатов, задайте пустую строку. По умолчанию используется значение переменной настройки sendemail.smtpSSLCertPath, если она задана; в противном случае используется значение по умолчанию, скомпилированное в SSL-библиотеке (оно должно быть оптимальным для большинства платформ).

--smtp-ssl-client-cert <path>

Путь к файлу сертификата клиента, который будет предоставлен по запросу сервера. Этот параметр необходим, если сервер настроен на проверку сертификатов клиента. Если соответствующий закрытый ключ не включён в файл, его необходимо указать с помощью переменной настройки sendemail.smtpSSLClientKey или параметра --smtp-ssl-client-key. По умолчанию используется значение переменной настройки sendemail.smtpSSLClientCert, если она задана.

--smtp-ssl-client-key <path>

Путь к файлу закрытого ключа клиента, соответствующего сертификату клиента. Во избежание неправильной настройки этот параметр необходимо использовать вместе с переменной настройки sendemail.smtpSSLClientKey или параметром --smtp-ssl-client-cert. Если ключ клиента включён в сертификат клиента, выбор закрытого ключа зависит от формата сертификата. Дополнительные сведения см. на странице https://metacpan.org/pod/IO::Socket::SSL. По умолчанию используется значение переменной настройки sendemail.smtpSSLClientKey, если она задана.

--smtp-user=<user>

Имя пользователя для SMTP-AUTH. По умолчанию используется значение sendemail.smtpUser; если имя пользователя не указано с помощью --smtp-user или sendemail.smtpUser, попытка аутентификации не выполняется.

--smtp-debug=(0|1)

Включить (1) или отключить (0) отладочный вывод. Если он включён, выводятся команды SMTP и ответы сервера. Полезно для диагностики проблем с TLS-соединением и аутентификацией.

--imap-sent-folder=<folder>

Некоторые почтовые провайдеры (например, iCloud) не сохраняют копии писем, отправленных через SMTP, в папке Sent или аналогичной папке почтового ящика. Используйте этот параметр, чтобы с помощью git imap-send отправлять копии писем в указанную папку. Выполните команду git imap-send --list, чтобы получить список допустимых имён папок, включая правильное имя папки Sent в вашем почтовом ящике. Этот параметр также можно использовать для отправки писем в выбранную вами отдельную папку IMAP.

Для работы этой функции необходимо настроить git imap-send. Инструкции см. в git-imap-send[1].

--use-imap-only
--no-use-imap-only

Если параметр включён, все письма будут только копироваться в папку IMAP, указанную с помощью --imap-sent-folder или sendemail.imapSentFolder, и не будут отправляться получателям. Это полезно, если вы хотите лишь создать черновики писем, а отправить их с помощью другого почтового клиента. Если отключить параметр с помощью --no-use-imap-only, письма будут отправляться обычным образом. По умолчанию параметр отключён, но для его включения можно использовать переменную настройки sendemail.useImapOnly.

Для работы этой функции необходимо настроить git imap-send. Инструкции см. в git-imap-send[1].

--batch-size=<num>

Некоторые почтовые серверы (например, smtp.163.com) ограничивают число писем, отправляемых за один сеанс (соединение), что может привести к сбою при отправке большого количества сообщений. С этим параметром send-email разорвёт соединение после отправки <num> сообщений, подождёт несколько секунд (см. --relogin-delay) и подключится снова, чтобы обойти такое ограничение. Чтобы не вводить пароль при каждом повторном подключении, можно использовать помощник для учётных данных. Значение по умолчанию задаётся переменной настройки sendemail.smtpBatchSize.

--relogin-delay=<int>

Ожидание <int> секунд перед повторным подключением к SMTP-серверу. Используется вместе с параметром --batch-size. Значение по умолчанию задаётся переменной настройки sendemail.smtpReloginDelay.

Автоматизация

--no-to
--no-cc
--no-bcc

Очистить все списки адресов To:, Cc:, Bcc:, заданные ранее с помощью конфигурации.

--no-identity

Очистить ранее прочитанное значение sendemail.identity, заданное с помощью конфигурации, если оно есть.

--to-cmd=<command>

Указать команду, которую нужно выполнить для каждого файла патча, чтобы получить специфичные для этого файла записи To:. Эта команда должна выводить по одному адресу электронной почты в каждой строке. По умолчанию используется значение параметра конфигурации sendemail.toCmd.

--cc-cmd=<command>

Указать команду, которую нужно выполнить для каждого файла патча, чтобы получить специфичные для этого файла записи Cc:. Эта команда должна выводить по одному адресу электронной почты в каждой строке. По умолчанию используется значение параметра конфигурации sendemail.ccCmd.

--header-cmd=<command>

Указать команду, которая выполняется один раз для каждого исходящего сообщения и выводит строки заголовков в формате RFC 2822 для вставки в эти сообщения. Если задана переменная конфигурации sendemail.headerCmd, всегда используется её значение. Если в командной строке указан параметр --header-cmd, его значение имеет приоритет над переменной конфигурации sendemail.headerCmd.

--no-header-cmd

Отключить используемую команду для заголовков.

--chain-reply-to
--no-chain-reply-to

Если параметр включён, каждое письмо отправляется в ответ на предыдущее отправленное письмо. Если отключить его с помощью --no-chain-reply-to, все письма, кроме первого, будут отправлены в ответ на первое отправленное письмо. При использовании этого параметра рекомендуется указывать первым файл с обзором всей серии патчей. По умолчанию параметр отключён, но его можно включить с помощью переменной конфигурации sendemail.chainReplyTo.

--identity=<identity>

Идентификатор конфигурации. Если он указан, значения из подраздела sendemail.<identity> имеют приоритет над значениями из раздела sendemail. По умолчанию используется значение sendemail.identity.

--signed-off-by-cc
--no-signed-off-by-cc

Если параметр включён, адреса электронной почты из завершающего блока Signed-off-by или строк Cc: добавляются в список копий (Cc). По умолчанию используется значение параметра конфигурации sendemail.signedOffByCc; если оно не задано, используется --signed-off-by-cc.

--cc-cover
--no-cc-cover

Если параметр включён, адреса электронной почты из заголовков Cc: первого патча серии (обычно сопроводительного письма) добавляются в список копий (Cc) для каждого набора писем. По умолчанию используется значение параметра конфигурации sendemail.ccCover; если оно не задано, используется --no-cc-cover.

--to-cover
--no-to-cover

Если параметр включён, адреса электронной почты из заголовков To: первого патча серии (обычно сопроводительного письма) добавляются в список получателей (To) для каждого набора писем. По умолчанию используется значение параметра конфигурации sendemail.toCover; если оно не задано, используется --no-to-cover.

--suppress-cc=<category>

Указать дополнительную категорию получателей, адреса которых не следует автоматически добавлять в список копий (Cc):

  • author исключает автора патча.

  • self исключает отправителя.

  • cc исключает всех, кто упомянут в строках Cc заголовка патча, за исключением самого отправителя (для этого используйте self).

  • bodycc исключает всех, кто упомянут в строках Cc тела патча (сообщения коммита), за исключением самого отправителя (для этого используйте self).

  • sob исключает всех, кто упомянут в завершающих блоках Signed-off-by, за исключением самого отправителя (для этого используйте self).

  • misc-by исключает всех, кто упомянут в строках Acked-by, Reviewed-by, Tested-by и других строках, оканчивающихся на «-by», в теле патча, за исключением Signed-off-by (для этого используйте sob).

  • cccmd не запускает --cc-cmd.

  • body эквивалентен sob + bodycc + misc-by.

  • all отключает автоматическое добавление всех адресов в копию.

По умолчанию используется значение параметра конфигурации sendemail.suppressCc; если оно не задано, используется self, если указан --suppress-from, а также body, если указан --no-signed-off-by-cc.

--suppress-from
--no-suppress-from

Если параметр включён, адрес From: не добавляется в список Cc:. По умолчанию используется значение параметра конфигурации sendemail.suppressFrom; если оно не задано, используется --no-suppress-from.

--thread
--no-thread

Если параметр включён, к каждому отправляемому письму добавляются заголовки In-Reply-To и References. То, будет ли каждое письмо ссылаться на предыдущее (deep — ветвление согласно формулировке git format-patch) или на первое письмо (shallow — ветвление), определяется параметром --[no-]chain-reply-to.

Если отключить параметр с помощью --no-thread, эти заголовки добавляться не будут (если только они не указаны с помощью --in-reply-to). По умолчанию используется значение параметра конфигурации sendemail.thread; если оно не задано, используется --thread.

Пользователь должен убедиться, что заголовок In-Reply-To ещё не существует, прежде чем запрашивать его добавление с помощью git send-email (особенно обратите внимание, что git format-patch можно настроить для самостоятельного создания веток переписки). Если этого не сделать, результат в почтовой программе получателя может оказаться не таким, как ожидалось.

--mailmap
--no-mailmap

Использовать файл mailmap (см. gitmailmap[5]) для сопоставления всех адресов с каноническими настоящими именами и адресами электронной почты. Дополнительные данные mailmap, относящиеся к git send-email, можно указать с помощью параметров конфигурации sendemail.mailmap.file или sendemail.mailmap.blob. По умолчанию используется sendemail.mailmap.

Администрирование

--confirm=<mode>

Запрашивать подтверждение непосредственно перед отправкой:

  • always всегда запрашивает подтверждение перед отправкой.

  • never никогда не запрашивает подтверждение перед отправкой.

  • cc запрашивает подтверждение перед отправкой, если send-email автоматически добавила адреса из патча в список Cc.

  • compose запрашивает подтверждение перед отправкой первого сообщения при использовании --compose.

  • auto эквивалентен cc + compose.

По умолчанию используется значение параметра конфигурации sendemail.confirm; если оно не задано, используется auto, если не указан ни один параметр подавления; в противном случае используется compose.

--dry-run

Выполнить все действия, кроме фактической отправки писем.

--format-patch
--no-format-patch

Если аргумент можно интерпретировать как ссылку или как имя файла, выбрать интерпретацию в качестве аргумента format-patch (--format-patch) или имени файла (--no-format-patch). По умолчанию при таком конфликте команда git send-email завершится ошибкой.

--quiet

Сделать вывод команды git send-email менее подробным. Должна выводиться только одна строка для каждого письма.

--validate
--no-validate

Выполнить проверку корректности патчей. В настоящее время проверка включает следующее:

  • Вызвать хук sendemail-validate, если он существует (см. githooks[5]).

  • Предупредить о патчах, содержащих строки длиной более 998 символов, если не используется подходящая кодировка передачи (auto, base64 или quoted-printable); это ограничение связано с лимитами SMTP, описанными в https://www.ietf.org/rfc/rfc5322.txt.

По умолчанию используется значение sendemail.validate; если оно не задано, используется --validate.

--force

Отправлять письма, даже если проверки безопасности препятствуют этому.

Сведения

--dump-aliases

Вместо обычной работы вывести краткие имена псевдонимов из настроенных файлов псевдонимов, по одному в строке в алфавитном порядке. Обратите внимание, что выводятся только имена псевдонимов, а не соответствующие им адреса электронной почты. Дополнительные сведения о псевдонимах см. в sendemail.aliasesFile.

--translate-aliases

Вместо обычной работы читать данные из стандартного ввода и интерпретировать каждую строку как псевдоним электронной почты. Преобразовать его согласно настроенным файлам псевдонимов. Вывести каждое преобразованное имя и адрес электронной почты в стандартный вывод, по одному в строке. Дополнительные сведения о псевдонимах см. в sendemail.aliasFile.

Конфигурация

Всё содержимое ниже этой строки в данном разделе выборочно включено из документации git-config[1]. Оно совпадает с содержимым исходной документации:

sendemail.identity

Идентификатор конфигурации. Если он указан, значения из подраздела sendemail.<identity> имеют приоритет над значениями из раздела sendemail. По умолчанию используется значение sendemail.identity.

sendemail.smtpEncryption

Описание см. в git-send-email[1]. Обратите внимание, что этот параметр не подчиняется механизму identity.

sendemail.smtpSSLCertPath

Путь к центру сертификации (каталог или отдельный файл). Чтобы отключить проверку сертификатов, укажите пустую строку.

sendemail.smtpSSLClientCert

Путь к файлу сертификата клиента, который нужно предъявить по запросу сервера. Это требуется, если сервер настроен на проверку сертификатов клиентов. Если соответствующий закрытый ключ не включён в файл, его нужно указать с помощью sendemail.smtpSSLClientKey или параметра --smtp-ssl-client-key.

sendemail.smtpSSLClientKey

Путь к файлу закрытого ключа клиента, соответствующего сертификату клиента. Во избежание ошибок конфигурации этот параметр необходимо использовать вместе с sendemail.smtpSSLClientCert или параметром --smtp-ssl-client-cert. Если ключ клиента включён в сертификат клиента, выбор закрытого ключа зависит от формата сертификата. Дополнительные сведения см. на странице https://metacpan.org/pod/IO::Socket::SSL.

sendemail.<identity>.*

Версии параметров sendemail.*, перечисленных ниже, для конкретного идентификатора. Они имеют приоритет при выборе этого идентификатора через командную строку или sendemail.identity.

sendemail.multiEdit

Если значение — true (по умолчанию), для редактирования файлов, требующих правки, запускается один экземпляр редактора (патчи при использовании --annotate и сводка при использовании --compose). Если значение — false, файлы редактируются по очереди с запуском нового редактора для каждого файла.

sendemail.confirm

Задаёт значение по умолчанию для подтверждения перед отправкой. Допустимые значения: always, never, cc, compose или auto. Значения этих параметров описаны в разделе --confirm документации git-send-email[1].

sendemail.mailmap

Если задано значение true, команда git-send-email[1] считает, что задано --mailmap; в противном случае — что задано --no-mailmap. По умолчанию используется False.

sendemail.mailmap.file

Расположение дополнительного файла mailmap, предназначенного для git-send-email[1]. Сначала загружаются файл mailmap по умолчанию и mailmap.file. Поэтому записи в этом файле имеют приоритет над записями в расположениях mailmap по умолчанию. См. gitmailmap[5].

sendemail.mailmap.blob

Аналогично sendemail.mailmap.file, но значение рассматривается как ссылка на объект blob в репозитории. Записи в sendemail.mailmap.file имеют приоритет над записями здесь. См. gitmailmap[5].

sendemail.aliasesFile

Чтобы не вводить длинные адреса электронной почты, укажите здесь один или несколько файлов псевдонимов электронной почты. Также необходимо задать sendemail.aliasFileType.

sendemail.aliasFileType

Формат файлов, указанных в sendemail.aliasesFile. Допустимые значения: mutt, mailrc, pine, elm, gnus или sendmail.

Примеры файлов псевдонимов каждого формата приведены в документации соответствующей почтовой программы. Отличия от стандартных форматов и их ограничения описаны ниже:

sendmail
  • Псевдонимы и адреса в кавычках не поддерживаются: строки, содержащие символ ", игнорируются.

  • Перенаправление в файл (/path/name) или канал (|command) не поддерживается.

  • Включение файлов (:include: /path/name) не поддерживается.

  • Для явно неподдерживаемых конструкций и любых других строк, не распознанных анализатором, предупреждения выводятся в стандартный поток ошибок.

sendemail.annotate
sendemail.bcc
sendemail.cc
sendemail.ccCmd
sendemail.chainReplyTo
sendemail.envelopeSender
sendemail.from
sendemail.headerCmd
sendemail.signedOffByCc
sendemail.smtpPass
sendemail.suppressCc
sendemail.suppressFrom
sendemail.to
sendemail.toCmd
sendemail.smtpDomain
sendemail.smtpServer
sendemail.smtpServerPort
sendemail.smtpServerOption
sendemail.smtpUser
sendemail.imapSentFolder
sendemail.useImapOnly
sendemail.thread
sendemail.transferEncoding
sendemail.validate
sendemail.xmailer

Все эти переменные конфигурации задают значения по умолчанию для параметров командной строки git-send-email[1]. Подробности см. в документации к этой команде.

sendemail.outlookidfix

Если задано значение true, команда git-send-email[1] считает, что задано --outlook-id-fix; если задано значение false, считает, что задано --no-outlook-id-fix. Если параметр не указан, команда ведёт себя так же, как если бы --outlook-id-fix не был указан.

sendemail.signedOffCc (устарел)

Устаревший псевдоним для sendemail.signedOffByCc.

sendemail.smtpBatchSize

Количество сообщений, отправляемых за одно подключение; после этого выполняется повторный вход. Если значение равно 0 или не задано, все сообщения отправляются за одно подключение. См. также параметр --batch-size команды git-send-email[1].

sendemail.smtpReloginDelay

Количество секунд ожидания перед повторным подключением к SMTP-серверу. См. также параметр --relogin-delay команды git-send-email[1].

sendemail.forbidSendmailVariables

Чтобы избежать распространённых ошибок конфигурации, git-send-email[1] завершит работу с предупреждением, если заданы какие-либо параметры конфигурации для sendmail. Задайте эту переменную, чтобы отключить проверку.

Примеры SMTP-серверов

Использование Gmail в качестве SMTP-сервера

Чтобы отправлять патчи через SMTP-сервер Gmail с помощью git send-email, отредактируйте ~/.gitconfig, указав настройки своей учётной записи:

[sendemail]
        smtpEncryption = ssl
        smtpServer = smtp.gmail.com
        smtpUser = yourname@gmail.com
        smtpServerPort = 465

Gmail не позволяет использовать обычный пароль для git send-email. Если для вашей учётной записи Gmail настроена многофакторная аутентификация, можно создать пароль приложения для использования с git send-email. Создайте его на странице https://security.google.com/settings/security/apppasswords.

Вместо пароля приложения можно использовать аутентификацию OAuth2.0 с Gmail. OAuth2.0 безопаснее паролей приложений и работает независимо от того, настроена ли у вас многофакторная аутентификация. OAUTHBEARER и XOAUTH2 — распространённые механизмы этого типа аутентификации. Gmail поддерживает оба механизма. Например, чтобы использовать OAUTHBEARER, отредактируйте файл ~/.gitconfig и добавьте smtpAuth = OAUTHBEARER в настройки своей учётной записи:

[sendemail]
        smtpEncryption = ssl
        smtpServer = smtp.gmail.com
        smtpUser = yourname@gmail.com
        smtpServerPort = 465
        smtpAuth = OAUTHBEARER

Ещё один вариант — использовать разработанный Google инструмент sendgmail для отправки писем с помощью git send-email.

Использование Microsoft Outlook в качестве SMTP-сервера

В отличие от Gmail, Microsoft Outlook больше не поддерживает пароли приложений. Поэтому для Outlook необходимо использовать аутентификацию OAuth2.0. Кроме того, Outlook поддерживает только механизм аутентификации XOAUTH2.

Отредактируйте ~/.gitconfig, указав настройки своей учётной записи Outlook, и используйте его SMTP-сервер с помощью git send-email:

[sendemail]
        smtpEncryption = tls
        smtpServer = smtp.office365.com
        smtpUser = yourname@outlook.com
        smtpServerPort = 587
        smtpAuth = XOAUTH2

Отправка патчей

Когда коммиты будут готовы к отправке в список рассылки, выполните следующие команды:

$ git format-patch --cover-letter -M origin/master -o outgoing/
$ edit outgoing/0000-*
$ git send-email outgoing/*

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

Если настроен помощник для работы с учетными данными (см. git-credential[1]), пароль будет сохранен в хранилище учетных данных, и при следующем запуске вводить его не придется.

При использовании аутентификации OAuth2.0 вместо пароля по запросу нужно ввести токен доступа. В интернете доступны различные генераторы токенов OAuth2.0. Также доступны поддерживаемые сообществом помощники для работы с учетными данными:

  • git-credential-gmail (кроссплатформенный специализированный помощник для аутентификации учетных записей Gmail)

  • git-credential-outlook (кроссплатформенный специализированный помощник для аутентификации учетных записей Microsoft Outlook)

  • git-credential-yahoo (кроссплатформенный специализированный помощник для аутентификации учетных записей Yahoo)

  • git-credential-aol (кроссплатформенный специализированный помощник для аутентификации учетных записей AOL)

См. также gitcredentials[7] — там описаны другие помощники для аутентификации на основе OAuth.

Proton Mail не предоставляет SMTP-сервер для отправки писем. Если вы пользуетесь платной версией Proton Mail, можно использовать официальное приложение Proton Mail Bridge, чтобы создать локальный SMTP-сервер для отправки писем. Как бесплатные, так и платные пользователи могут использовать поддерживаемые сообществом проекты, например git-protonmail.

Примечание. Требуются следующие основные модули Perl, которые могут устанавливаться вместе с дистрибутивом Perl:

MIME::Base64, MIME::QuotedPrint, Net::Domain и Net::SMTP.

Также требуются следующие дополнительные модули Perl:

Authen::SASL и Mail::Address.

Использование параметра sendmailCmd команды git send-email

Помимо отправки писем через SMTP-сервер, git send-email может отправлять письма с помощью любого приложения, поддерживающего команды, подобные sendmail. Дополнительные сведения см. в приведенной выше документации по --sendmail-cmd=<command>. Эта возможность может оказаться весьма полезной, если вы хотите использовать другое приложение в качестве SMTP-клиента для git send-email или если ваш почтовый провайдер использует для отправки писем собственные API вместо SMTP.

Рассмотрим, например, настройку msmtp — популярного SMTP-клиента, доступного во многих дистрибутивах Linux. Отредактируйте ~/.gitconfig, чтобы указать git-send-email использовать его для отправки писем.

[sendemail]
        sendmailCmd = /usr/bin/msmtp # Change this to the path where msmtp is installed

Вот ссылки на несколько подобных помощников, поддерживаемых сообществом:

  • msmtp (популярный SMTP-клиент с широкими возможностями, доступный для Linux и macOS)

  • git-protonmail (кроссплатформенный клиент для отправки писем с помощью API ProtonMail)

  • git-msgraph (кроссплатформенный клиент для отправки писем с помощью API Microsoft Graph)

Предостережения

При применении вывода команды git-format-patch[1] с помощью git-am[1] сообщение коммита может измениться. Примененный патч также может отличаться от созданного, а применение патча может завершиться ошибкой.

Любая строка следующего вида:

  • три дефиса в конце строки или

  • строка, начинающаяся с diff -, или

  • строка, начинающаяся с `Index: `

считается началом патча, а сообщение журнала коммита обрывается перед первым вхождением такой строки.

Обратите внимание: это особенно проблематично для неотступленных различий, включенных в сообщение коммита. Такое различие может быть применено вместе с разделом патча, либо механизм применения патчей может дать сбой, поскольку патч не применяется к целевому объекту. Например, причиной может стать различие в блоке кода Markdown.

Чтобы избежать этого, добавьте отступ перед различием или другим текстом, который может вызвать проблемы.

Эту потерю точности может быть легко заметить, если применять патчи непосредственно из почтового ящика. Однако изменения, полученные из Git, могут применяться массово — в таком случае заметить проблему будет гораздо сложнее. Например, дистрибутив Linux может использовать файлы патчей для применения изменений поверх коммитов из вышестоящих репозиториев. Это показывает, что такое поведение влияет не только на рабочие процессы с электронной почтой.

Учитывая эти ограничения, может возникнуть соблазн воспользоваться универсальной утилитой, например patch(1). Однако patch(1) будет искать не только неотступленные различия (как git-am[1]), но и пытаться применить различия с отступом.

См. также

git-format-patch[1], git-imap-send[1], mbox(5)

send-email

© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-send-email

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API