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.
Для файлов исправлений допускаются два формата:
-
Файлы в формате mbox
Именно этот формат создаёт git-format-patch[1]. Большинство заголовков и параметров форматирования MIME игнорируются.
-
Исходный формат, используемый скриптом
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,gitsend-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, возвращаемое командойgitvar-l. - --reply-to=<address>
-
Указать адрес, на который должны поступать ответы получателей. Используйте этот параметр, если ответы на сообщения должны приходить на адрес, отличный от указанного параметром
--from. - --in-reply-to=<identifier>
-
Сделать так, чтобы первое письмо (или все письма с параметром
--no-thread) выглядело ответом на указанный Message-ID. Это позволяет начать новую серию исправлений, не нарушая существующие цепочки обсуждений. Второе и последующие письма будут отправлены как ответы в соответствии с настройкой--[no-]chain-reply-to.Например, если указаны
--threadи--no-chain-reply-to, второе и последующие исправления будут ответами на первое, как показано на схеме ниже, где [PATCHv20/3] является ответом на [PATCH0/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-fixgitsend-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не заданы,gitsend-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-адресу. Если параметр не задан,
gitsend-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-encryptionssl. - --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или аналогичной папке почтового ящика. Используйте этот параметр, чтобы с помощьюgitimap-sendотправлять копии писем в указанную папку. Выполните командуgitimap-send--list, чтобы получить список допустимых имён папок, включая правильное имя папкиSentв вашем почтовом ящике. Этот параметр также можно использовать для отправки писем в выбранную вами отдельную папку IMAP.Для работы этой функции необходимо настроить
gitimap-send. Инструкции см. в git-imap-send[1]. - --use-imap-only
- --no-use-imap-only
-
Если параметр включён, все письма будут только копироваться в папку IMAP, указанную с помощью
--imap-sent-folderилиsendemail.imapSentFolder, и не будут отправляться получателям. Это полезно, если вы хотите лишь создать черновики писем, а отправить их с помощью другого почтового клиента. Если отключить параметр с помощью--no-use-imap-only, письма будут отправляться обычным образом. По умолчанию параметр отключён, но для его включения можно использовать переменную настройкиsendemail.useImapOnly.Для работы этой функции необходимо настроить
gitimap-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— ветвление согласно формулировкеgitformat-patch) или на первое письмо (shallow— ветвление), определяется параметром--[no-]chain-reply-to.Если отключить параметр с помощью
--no-thread, эти заголовки добавляться не будут (если только они не указаны с помощью--in-reply-to). По умолчанию используется значение параметра конфигурацииsendemail.thread; если оно не задано, используется--thread.Пользователь должен убедиться, что заголовок In-Reply-To ещё не существует, прежде чем запрашивать его добавление с помощью
gitsend-email(особенно обратите внимание, чтоgitformat-patchможно настроить для самостоятельного создания веток переписки). Если этого не сделать, результат в почтовой программе получателя может оказаться не таким, как ожидалось. - --mailmap
- --no-mailmap
-
Использовать файл mailmap (см. gitmailmap[5]) для сопоставления всех адресов с каноническими настоящими именами и адресами электронной почты. Дополнительные данные mailmap, относящиеся к
gitsend-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). По умолчанию при таком конфликте командаgitsend-emailзавершится ошибкой. - --quiet
-
Сделать вывод команды
gitsend-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:
Использование параметра 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