|  | git-send-email(1) | 
|  | ================= | 
|  |  | 
|  | NAME | 
|  | ---- | 
|  | git-send-email - Send a collection of patches as emails | 
|  |  | 
|  |  | 
|  | SYNOPSIS | 
|  | -------- | 
|  | [verse] | 
|  | 'git send-email' [<options>] <file|directory|rev-list options>... | 
|  | 'git send-email' --dump-aliases | 
|  |  | 
|  |  | 
|  | DESCRIPTION | 
|  | ----------- | 
|  | Takes the patches given on the command line and emails them out. | 
|  | Patches can be specified as files, directories (which will send all | 
|  | files in the directory), or directly as a revision list.  In the | 
|  | last case, any format accepted by linkgit:git-format-patch[1] can | 
|  | be passed to git send-email. | 
|  |  | 
|  | The header of the email is configurable via command-line options.  If not | 
|  | specified on the command line, the user will be prompted with a ReadLine | 
|  | enabled interface to provide the necessary information. | 
|  |  | 
|  | There are two formats accepted for patch files: | 
|  |  | 
|  | 1. mbox format files | 
|  | + | 
|  | This is what linkgit:git-format-patch[1] generates.  Most headers and MIME | 
|  | formatting are ignored. | 
|  |  | 
|  | 2. The original format used by Greg Kroah-Hartman's 'send_lots_of_email.pl' | 
|  | script | 
|  | + | 
|  | This format expects the first line of the file to contain the "Cc:" value | 
|  | and the "Subject:" of the message as the second line. | 
|  |  | 
|  |  | 
|  | OPTIONS | 
|  | ------- | 
|  |  | 
|  | Composing | 
|  | ~~~~~~~~~ | 
|  |  | 
|  | --annotate:: | 
|  | Review and edit each patch you're about to send. Default is the value | 
|  | of `sendemail.annotate`. See the CONFIGURATION section for | 
|  | `sendemail.multiEdit`. | 
|  |  | 
|  | --bcc=<address>,...:: | 
|  | Specify a "Bcc:" value for each email. Default is the value of | 
|  | `sendemail.bcc`. | 
|  | + | 
|  | This option may be specified multiple times. | 
|  |  | 
|  | --cc=<address>,...:: | 
|  | Specify a starting "Cc:" value for each email. | 
|  | Default is the value of `sendemail.cc`. | 
|  | + | 
|  | This option may be specified multiple times. | 
|  |  | 
|  | --compose:: | 
|  | Invoke a text editor (see GIT_EDITOR in linkgit:git-var[1]) | 
|  | to edit an introductory message for the patch series. | 
|  | + | 
|  | When `--compose` is used, git send-email will use the From, Subject, and | 
|  | In-Reply-To headers specified in the message. If the body of the message | 
|  | (what you type after the headers and a blank line) only contains blank | 
|  | (or Git: prefixed) lines, the summary won't be sent, but From, Subject, | 
|  | and In-Reply-To headers will be used unless they are removed. | 
|  | + | 
|  | Missing From or In-Reply-To headers will be prompted for. | 
|  | + | 
|  | See the CONFIGURATION section for `sendemail.multiEdit`. | 
|  |  | 
|  | --from=<address>:: | 
|  | Specify the sender of the emails.  If not specified on the command line, | 
|  | the value of the `sendemail.from` configuration option is used.  If | 
|  | neither the command-line option nor `sendemail.from` are set, then the | 
|  | user will be prompted for the value.  The default for the prompt will be | 
|  | the value of GIT_AUTHOR_IDENT, or GIT_COMMITTER_IDENT if that is not | 
|  | set, as returned by "git var -l". | 
|  |  | 
|  | --reply-to=<address>:: | 
|  | Specify the address where replies from recipients should go to. | 
|  | Use this if replies to messages should go to another address than what | 
|  | is specified with the --from parameter. | 
|  |  | 
|  | --in-reply-to=<identifier>:: | 
|  | Make the first mail (or all the mails with `--no-thread`) appear as a | 
|  | reply to the given Message-Id, which avoids breaking threads to | 
|  | provide a new patch series. | 
|  | The second and subsequent emails will be sent as replies according to | 
|  | the `--[no-]chain-reply-to` setting. | 
|  | + | 
|  | So for example when `--thread` and `--no-chain-reply-to` are specified, the | 
|  | second and subsequent patches will be replies to the first one like in the | 
|  | illustration below where `[PATCH v2 0/3]` is in reply to `[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 | 
|  | + | 
|  | Only necessary if --compose is also set.  If --compose | 
|  | is not set, this will be prompted for. | 
|  |  | 
|  | --subject=<string>:: | 
|  | Specify the initial subject of the email thread. | 
|  | Only necessary if --compose is also set.  If --compose | 
|  | is not set, this will be prompted for. | 
|  |  | 
|  | --to=<address>,...:: | 
|  | Specify the primary recipient of the emails generated. Generally, this | 
|  | will be the upstream maintainer of the project involved. Default is the | 
|  | value of the `sendemail.to` configuration value; if that is unspecified, | 
|  | and --to-cmd is not specified, this will be prompted for. | 
|  | + | 
|  | This option may be specified multiple times. | 
|  |  | 
|  | --8bit-encoding=<encoding>:: | 
|  | When encountering a non-ASCII message or subject that does not | 
|  | declare its encoding, add headers/quoting to indicate it is | 
|  | encoded in <encoding>.  Default is the value of the | 
|  | 'sendemail.assume8bitEncoding'; if that is unspecified, this | 
|  | will be prompted for if any non-ASCII files are encountered. | 
|  | + | 
|  | Note that no attempts whatsoever are made to validate the encoding. | 
|  |  | 
|  | --compose-encoding=<encoding>:: | 
|  | Specify encoding of compose message. Default is the value of the | 
|  | 'sendemail.composeencoding'; if that is unspecified, UTF-8 is assumed. | 
|  |  | 
|  | --transfer-encoding=(7bit|8bit|quoted-printable|base64|auto):: | 
|  | Specify the transfer encoding to be used to send the message over SMTP. | 
|  | 7bit will fail upon encountering a non-ASCII message.  quoted-printable | 
|  | can be useful when the repository contains files that contain carriage | 
|  | returns, but makes the raw patch email file (as saved from a MUA) much | 
|  | harder to inspect manually.  base64 is even more fool proof, but also | 
|  | even more opaque.  auto will use 8bit when possible, and quoted-printable | 
|  | otherwise. | 
|  | + | 
|  | Default is the value of the `sendemail.transferEncoding` configuration | 
|  | value; if that is unspecified, default to `auto`. | 
|  |  | 
|  | --xmailer:: | 
|  | --no-xmailer:: | 
|  | Add (or prevent adding) the "X-Mailer:" header.  By default, | 
|  | the header is added, but it can be turned off by setting the | 
|  | `sendemail.xmailer` configuration variable to `false`. | 
|  |  | 
|  | Sending | 
|  | ~~~~~~~ | 
|  |  | 
|  | --envelope-sender=<address>:: | 
|  | Specify the envelope sender used to send the emails. | 
|  | This is useful if your default address is not the address that is | 
|  | subscribed to a list. In order to use the 'From' address, set the | 
|  | value to "auto". If you use the sendmail binary, you must have | 
|  | suitable privileges for the -f parameter.  Default is the value of the | 
|  | `sendemail.envelopeSender` configuration variable; if that is | 
|  | unspecified, choosing the envelope sender is left to your MTA. | 
|  |  | 
|  | --smtp-encryption=<encryption>:: | 
|  | Specify the encryption to use, either 'ssl' or 'tls'.  Any other | 
|  | value reverts to plain SMTP.  Default is the value of | 
|  | `sendemail.smtpEncryption`. | 
|  |  | 
|  | --smtp-domain=<FQDN>:: | 
|  | Specifies the Fully Qualified Domain Name (FQDN) used in the | 
|  | HELO/EHLO command to the SMTP server.  Some servers require the | 
|  | FQDN to match your IP address.  If not set, git send-email attempts | 
|  | to determine your FQDN automatically.  Default is the value of | 
|  | `sendemail.smtpDomain`. | 
|  |  | 
|  | --smtp-auth=<mechanisms>:: | 
|  | Whitespace-separated list of allowed SMTP-AUTH mechanisms. This setting | 
|  | forces using only the listed mechanisms. Example: | 
|  | + | 
|  | ------ | 
|  | $ git send-email --smtp-auth="PLAIN LOGIN GSSAPI" ... | 
|  | ------ | 
|  | + | 
|  | If at least one of the specified mechanisms matches the ones advertised by the | 
|  | SMTP server and if it is supported by the utilized SASL library, the mechanism | 
|  | is used for authentication. If neither 'sendemail.smtpAuth' nor `--smtp-auth` | 
|  | is specified, all mechanisms supported by the SASL library can be used. | 
|  |  | 
|  | --smtp-pass[=<password>]:: | 
|  | Password for SMTP-AUTH. The argument is optional: If no | 
|  | argument is specified, then the empty string is used as | 
|  | the password. Default is the value of `sendemail.smtpPass`, | 
|  | however `--smtp-pass` always overrides this value. | 
|  | + | 
|  | Furthermore, passwords need not be specified in configuration files | 
|  | or on the command line. If a username has been specified (with | 
|  | `--smtp-user` or a `sendemail.smtpUser`), but no password has been | 
|  | specified (with `--smtp-pass` or `sendemail.smtpPass`), then | 
|  | a password is obtained using 'git-credential'. | 
|  |  | 
|  | --smtp-server=<host>:: | 
|  | If set, specifies the outgoing SMTP server to use (e.g. | 
|  | `smtp.example.com` or a raw IP address).  Alternatively it can | 
|  | specify a full pathname of a sendmail-like program instead; | 
|  | the program must support the `-i` option.  Default value can | 
|  | be specified by the `sendemail.smtpServer` configuration | 
|  | option; the built-in default is to search for `sendmail` in | 
|  | `/usr/sbin`, `/usr/lib` and $PATH if such program is | 
|  | available, falling back to `localhost` otherwise. | 
|  |  | 
|  | --smtp-server-port=<port>:: | 
|  | Specifies a port different from the default port (SMTP | 
|  | servers typically listen to smtp port 25, but may also listen to | 
|  | submission port 587, or the common SSL smtp port 465); | 
|  | symbolic port names (e.g. "submission" instead of 587) | 
|  | are also accepted. The port can also be set with the | 
|  | `sendemail.smtpServerPort` configuration variable. | 
|  |  | 
|  | --smtp-server-option=<option>:: | 
|  | If set, specifies the outgoing SMTP server option to use. | 
|  | Default value can be specified by the `sendemail.smtpServerOption` | 
|  | configuration option. | 
|  | + | 
|  | The --smtp-server-option option must be repeated for each option you want | 
|  | to pass to the server. Likewise, different lines in the configuration files | 
|  | must be used for each option. | 
|  |  | 
|  | --smtp-ssl:: | 
|  | Legacy alias for '--smtp-encryption ssl'. | 
|  |  | 
|  | --smtp-ssl-cert-path:: | 
|  | Path to a store of trusted CA certificates for SMTP SSL/TLS | 
|  | certificate validation (either a directory that has been processed | 
|  | by 'c_rehash', or a single file containing one or more PEM format | 
|  | certificates concatenated together: see verify(1) -CAfile and | 
|  | -CApath for more information on these). Set it to an empty string | 
|  | to disable certificate verification. Defaults to the value of the | 
|  | `sendemail.smtpsslcertpath` configuration variable, if set, or the | 
|  | backing SSL library's compiled-in default otherwise (which should | 
|  | be the best choice on most platforms). | 
|  |  | 
|  | --smtp-user=<user>:: | 
|  | Username for SMTP-AUTH. Default is the value of `sendemail.smtpUser`; | 
|  | if a username is not specified (with `--smtp-user` or `sendemail.smtpUser`), | 
|  | then authentication is not attempted. | 
|  |  | 
|  | --smtp-debug=0|1:: | 
|  | Enable (1) or disable (0) debug output. If enabled, SMTP | 
|  | commands and replies will be printed. Useful to debug TLS | 
|  | connection and authentication problems. | 
|  |  | 
|  | --batch-size=<num>:: | 
|  | Some email servers (e.g. smtp.163.com) limit the number emails to be | 
|  | sent per session (connection) and this will lead to a failure when | 
|  | sending many messages.  With this option, send-email will disconnect after | 
|  | sending $<num> messages and wait for a few seconds (see --relogin-delay) | 
|  | and reconnect, to work around such a limit.  You may want to | 
|  | use some form of credential helper to avoid having to retype | 
|  | your password every time this happens.  Defaults to the | 
|  | `sendemail.smtpBatchSize` configuration variable. | 
|  |  | 
|  | --relogin-delay=<int>:: | 
|  | Waiting $<int> seconds before reconnecting to SMTP server. Used together | 
|  | with --batch-size option.  Defaults to the `sendemail.smtpReloginDelay` | 
|  | configuration variable. | 
|  |  | 
|  | Automating | 
|  | ~~~~~~~~~~ | 
|  |  | 
|  | --to-cmd=<command>:: | 
|  | Specify a command to execute once per patch file which | 
|  | should generate patch file specific "To:" entries. | 
|  | Output of this command must be single email address per line. | 
|  | Default is the value of 'sendemail.tocmd' configuration value. | 
|  |  | 
|  | --cc-cmd=<command>:: | 
|  | Specify a command to execute once per patch file which | 
|  | should generate patch file specific "Cc:" entries. | 
|  | Output of this command must be single email address per line. | 
|  | Default is the value of `sendemail.ccCmd` configuration value. | 
|  |  | 
|  | --[no-]chain-reply-to:: | 
|  | If this is set, each email will be sent as a reply to the previous | 
|  | email sent.  If disabled with "--no-chain-reply-to", all emails after | 
|  | the first will be sent as replies to the first email sent.  When using | 
|  | this, it is recommended that the first file given be an overview of the | 
|  | entire patch series. Disabled by default, but the `sendemail.chainReplyTo` | 
|  | configuration variable can be used to enable it. | 
|  |  | 
|  | --identity=<identity>:: | 
|  | A configuration identity. When given, causes values in the | 
|  | 'sendemail.<identity>' subsection to take precedence over | 
|  | values in the 'sendemail' section. The default identity is | 
|  | the value of `sendemail.identity`. | 
|  |  | 
|  | --[no-]signed-off-by-cc:: | 
|  | If this is set, add emails found in Signed-off-by: or Cc: lines to the | 
|  | cc list. Default is the value of `sendemail.signedoffbycc` configuration | 
|  | value; if that is unspecified, default to --signed-off-by-cc. | 
|  |  | 
|  | --[no-]cc-cover:: | 
|  | If this is set, emails found in Cc: headers in the first patch of | 
|  | the series (typically the cover letter) are added to the cc list | 
|  | for each email set. Default is the value of 'sendemail.cccover' | 
|  | configuration value; if that is unspecified, default to --no-cc-cover. | 
|  |  | 
|  | --[no-]to-cover:: | 
|  | If this is set, emails found in To: headers in the first patch of | 
|  | the series (typically the cover letter) are added to the to list | 
|  | for each email set. Default is the value of 'sendemail.tocover' | 
|  | configuration value; if that is unspecified, default to --no-to-cover. | 
|  |  | 
|  | --suppress-cc=<category>:: | 
|  | Specify an additional category of recipients to suppress the | 
|  | auto-cc of: | 
|  | + | 
|  | -- | 
|  | - 'author' will avoid including the patch author | 
|  | - 'self' will avoid including the sender | 
|  | - 'cc' will avoid including anyone mentioned in Cc lines in the patch header | 
|  | except for self (use 'self' for that). | 
|  | - 'bodycc' will avoid including anyone mentioned in Cc lines in the | 
|  | patch body (commit message) except for self (use 'self' for that). | 
|  | - 'sob' will avoid including anyone mentioned in Signed-off-by lines except | 
|  | for self (use 'self' for that). | 
|  | - 'cccmd' will avoid running the --cc-cmd. | 
|  | - 'body' is equivalent to 'sob' + 'bodycc' | 
|  | - 'all' will suppress all auto cc values. | 
|  | -- | 
|  | + | 
|  | Default is the value of `sendemail.suppresscc` configuration value; if | 
|  | that is unspecified, default to 'self' if --suppress-from is | 
|  | specified, as well as 'body' if --no-signed-off-cc is specified. | 
|  |  | 
|  | --[no-]suppress-from:: | 
|  | If this is set, do not add the From: address to the cc: list. | 
|  | Default is the value of `sendemail.suppressFrom` configuration | 
|  | value; if that is unspecified, default to --no-suppress-from. | 
|  |  | 
|  | --[no-]thread:: | 
|  | If this is set, the In-Reply-To and References headers will be | 
|  | added to each email sent.  Whether each mail refers to the | 
|  | previous email (`deep` threading per 'git format-patch' | 
|  | wording) or to the first email (`shallow` threading) is | 
|  | governed by "--[no-]chain-reply-to". | 
|  | + | 
|  | If disabled with "--no-thread", those headers will not be added | 
|  | (unless specified with --in-reply-to).  Default is the value of the | 
|  | `sendemail.thread` configuration value; if that is unspecified, | 
|  | default to --thread. | 
|  | + | 
|  | It is up to the user to ensure that no In-Reply-To header already | 
|  | exists when 'git send-email' is asked to add it (especially note that | 
|  | 'git format-patch' can be configured to do the threading itself). | 
|  | Failure to do so may not produce the expected result in the | 
|  | recipient's MUA. | 
|  |  | 
|  |  | 
|  | Administering | 
|  | ~~~~~~~~~~~~~ | 
|  |  | 
|  | --confirm=<mode>:: | 
|  | Confirm just before sending: | 
|  | + | 
|  | -- | 
|  | - 'always' will always confirm before sending | 
|  | - 'never' will never confirm before sending | 
|  | - 'cc' will confirm before sending when send-email has automatically | 
|  | added addresses from the patch to the Cc list | 
|  | - 'compose' will confirm before sending the first message when using --compose. | 
|  | - 'auto' is equivalent to 'cc' + 'compose' | 
|  | -- | 
|  | + | 
|  | Default is the value of `sendemail.confirm` configuration value; if that | 
|  | is unspecified, default to 'auto' unless any of the suppress options | 
|  | have been specified, in which case default to 'compose'. | 
|  |  | 
|  | --dry-run:: | 
|  | Do everything except actually send the emails. | 
|  |  | 
|  | --[no-]format-patch:: | 
|  | When an argument may be understood either as a reference or as a file name, | 
|  | choose to understand it as a format-patch argument (`--format-patch`) | 
|  | or as a file name (`--no-format-patch`). By default, when such a conflict | 
|  | occurs, git send-email will fail. | 
|  |  | 
|  | --quiet:: | 
|  | Make git-send-email less verbose.  One line per email should be | 
|  | all that is output. | 
|  |  | 
|  | --[no-]validate:: | 
|  | Perform sanity checks on patches. | 
|  | Currently, validation means the following: | 
|  | + | 
|  | -- | 
|  | *	Invoke the sendemail-validate hook if present (see linkgit:githooks[5]). | 
|  | *	Warn of patches that contain lines longer than | 
|  | 998 characters unless a suitable transfer encoding | 
|  | ('auto', 'base64', or 'quoted-printable') is used; | 
|  | this is due to SMTP limits as described by | 
|  | http://www.ietf.org/rfc/rfc5322.txt. | 
|  | -- | 
|  | + | 
|  | Default is the value of `sendemail.validate`; if this is not set, | 
|  | default to `--validate`. | 
|  |  | 
|  | --force:: | 
|  | Send emails even if safety checks would prevent it. | 
|  |  | 
|  |  | 
|  | Information | 
|  | ~~~~~~~~~~~ | 
|  |  | 
|  | --dump-aliases:: | 
|  | Instead of the normal operation, dump the shorthand alias names from | 
|  | the configured alias file(s), one per line in alphabetical order. Note, | 
|  | this only includes the alias name and not its expanded email addresses. | 
|  | See 'sendemail.aliasesfile' for more information about aliases. | 
|  |  | 
|  |  | 
|  | CONFIGURATION | 
|  | ------------- | 
|  |  | 
|  | sendemail.aliasesFile:: | 
|  | To avoid typing long email addresses, point this to one or more | 
|  | email aliases files.  You must also supply `sendemail.aliasFileType`. | 
|  |  | 
|  | sendemail.aliasFileType:: | 
|  | Format of the file(s) specified in sendemail.aliasesFile. Must be | 
|  | one of 'mutt', 'mailrc', 'pine', 'elm', or 'gnus', or 'sendmail'. | 
|  | + | 
|  | What an alias file in each format looks like can be found in | 
|  | the documentation of the email program of the same name. The | 
|  | differences and limitations from the standard formats are | 
|  | described below: | 
|  | + | 
|  | -- | 
|  | sendmail;; | 
|  | *	Quoted aliases and quoted addresses are not supported: lines that | 
|  | contain a `"` symbol are ignored. | 
|  | *	Redirection to a file (`/path/name`) or pipe (`|command`) is not | 
|  | supported. | 
|  | *	File inclusion (`:include: /path/name`) is not supported. | 
|  | *	Warnings are printed on the standard error output for any | 
|  | explicitly unsupported constructs, and any other lines that are not | 
|  | recognized by the parser. | 
|  | -- | 
|  |  | 
|  | sendemail.multiEdit:: | 
|  | If true (default), a single editor instance will be spawned to edit | 
|  | files you have to edit (patches when `--annotate` is used, and the | 
|  | summary when `--compose` is used). If false, files will be edited one | 
|  | after the other, spawning a new editor each time. | 
|  |  | 
|  | sendemail.confirm:: | 
|  | Sets the default for whether to confirm before sending. Must be | 
|  | one of 'always', 'never', 'cc', 'compose', or 'auto'. See `--confirm` | 
|  | in the previous section for the meaning of these values. | 
|  |  | 
|  | EXAMPLES | 
|  | -------- | 
|  | Use gmail as the smtp server | 
|  | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
|  | To use 'git send-email' to send your patches through the GMail SMTP server, | 
|  | edit ~/.gitconfig to specify your account settings: | 
|  |  | 
|  | [sendemail] | 
|  | smtpEncryption = tls | 
|  | smtpServer = smtp.gmail.com | 
|  | smtpUser = yourname@gmail.com | 
|  | smtpServerPort = 587 | 
|  |  | 
|  | If you have multifactor authentication setup on your gmail account, you will | 
|  | need to generate an app-specific password for use with 'git send-email'. Visit | 
|  | https://security.google.com/settings/security/apppasswords to create it. | 
|  |  | 
|  | Once your commits are ready to be sent to the mailing list, run the | 
|  | following commands: | 
|  |  | 
|  | $ git format-patch --cover-letter -M origin/master -o outgoing/ | 
|  | $ edit outgoing/0000-* | 
|  | $ git send-email outgoing/* | 
|  |  | 
|  | The first time you run it, you will be prompted for your credentials.  Enter the | 
|  | app-specific or your regular password as appropriate.  If you have credential | 
|  | helper configured (see linkgit:git-credential[1]), the password will be saved in | 
|  | the credential store so you won't have to type it the next time. | 
|  |  | 
|  | Note: the following perl modules are required | 
|  | Net::SMTP::SSL, MIME::Base64 and Authen::SASL | 
|  |  | 
|  | SEE ALSO | 
|  | -------- | 
|  | linkgit:git-format-patch[1], linkgit:git-imap-send[1], mbox(5) | 
|  |  | 
|  | GIT | 
|  | --- | 
|  | Part of the linkgit:git[1] suite |