diff options
Diffstat (limited to 'Documentation/git-send-email.adoc')
-rw-r--r-- | Documentation/git-send-email.adoc | 666 |
1 files changed, 666 insertions, 0 deletions
diff --git a/Documentation/git-send-email.adoc b/Documentation/git-send-email.adoc new file mode 100644 index 0000000000..5335502d68 --- /dev/null +++ b/Documentation/git-send-email.adoc @@ -0,0 +1,666 @@ +git-send-email(1) +================= + +NAME +---- +git-send-email - Send a collection of patches as emails + + +SYNOPSIS +-------- +[verse] +'git send-email' [<options>] (<file>|<directory>)... +'git send-email' [<options>] <format-patch-options> +'git send-email' --dump-aliases +'git send-email' --translate-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`, as well as options understood by +linkgit:git-format-patch[1]. + +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`, `To`, `Cc`, +`Bcc`, `Subject`, `Reply-To`, 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 the headers mentioned above 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. + +--[no-]outlook-id-fix:: + Microsoft Outlook SMTP servers discard the Message-ID sent via email and + assign a new random Message-ID, thus breaking threads. ++ +With `--outlook-id-fix`, `git send-email` uses a mechanism specific to +Outlook servers to learn the Message-ID the server assigned to fix the +threading. Use it only when you know that the server reports the +rewritten Message-ID the same way as Outlook servers do. ++ +Without this option specified, the fix is done by default when talking +to 'smtp.office365.com' or 'smtp-mail.outlook.com'. Use +`--no-outlook-id-fix` to disable even when talking to these two servers. + +--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 an 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. + +--sendmail-cmd=<command>:: + Specify a command to run to send the email. The command should + be sendmail-like; specifically, it must support the `-i` option. + The command will be executed in the shell if necessary. Default + is the value of `sendemail.sendmailCmd`. If unspecified, and if + `--smtp-server` is also unspecified, `git send-email` will search + for `sendmail` in `/usr/sbin`, `/usr/lib` and `$PATH`. + +--smtp-encryption=<encryption>:: + Specify in what way encrypting begins for the SMTP connection. + Valid values are `ssl` and `tls`. Any other value reverts to plain + (unencrypted) SMTP, which defaults to port 25. + Despite the names, both values will use the same newer version of TLS, + but for historic reasons have these names. `ssl` refers to "implicit" + encryption (sometimes called SMTPS), that uses port 465 by default. + `tls` refers to "explicit" encryption (often known as STARTTLS), + that uses port 25 by default. Other ports might be used by the SMTP + server, which are not the default. Commonly found alternative port for + `tls` and unencrypted is 587. You need to check your provider's + documentation or your server configuration to make sure + for your own case. 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. The +special value `none` maybe specified to completely disable authentication +independently of `--smtp-user`. + +--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 linkgit:git-credential[1]. + +--no-smtp-auth:: + Disable SMTP authentication. Short hand for `--smtp-auth=none`. + +--smtp-server=<host>:: + If set, specifies the outgoing SMTP server to use (e.g. + `smtp.example.com` or a raw IP address). If unspecified, and if + `--sendmail-cmd` is also unspecified, the default is to search + for `sendmail` in `/usr/sbin`, `/usr/lib` and `$PATH` if such a + program is available, falling back to `localhost` otherwise. ++ +For backward compatibility, this option can also specify a full pathname +of a sendmail-like program instead; the program must support the `-i` +option. This method does not support passing arguments or using plain +command names. For those use cases, consider using `--sendmail-cmd` +instead. + +--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 the description of the + `-CAfile` _<file>_ and the `-CApath` _<dir>_ options of + https://docs.openssl.org/master/man1/openssl-verify/ + [OpenSSL's verify(1) manual page] 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 of 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 +~~~~~~~~~~ + +--no-to:: +--no-cc:: +--no-bcc:: + Clears any list of `To:`, `Cc:`, `Bcc:` addresses previously + set via config. + +--no-identity:: + Clears the previously read value of `sendemail.identity` set + via config, if any. + +--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. + +--header-cmd=<command>:: + Specify a command that is executed once per outgoing message + and output RFC 2822 style header lines to be inserted into + them. When the `sendemail.headerCmd` configuration variable is + set, its value is always used. When `--header-cmd` is provided + at the command line, its value takes precedence over the + `sendemail.headerCmd` configuration variable. + +--no-header-cmd:: + Disable any header command in use. + +--[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 the `Signed-off-by` trailer 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 the Signed-off-by trailers except + for self (use `self` for that). +- `misc-by` will avoid including anyone mentioned in Acked-by, + Reviewed-by, Tested-by and other "-by" lines in the patch body, + except Signed-off-by (use `sob` for that). +- `cccmd` will avoid running the --cc-cmd. +- `body` is equivalent to `sob` + `bodycc` + `misc-by`. +- `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. + +--[no-]mailmap:: + Use the mailmap file (see linkgit:gitmailmap[5]) to map all + addresses to their canonical real name and email address. Additional + mailmap data specific to `git send-email` may be provided using the + `sendemail.mailmap.file` or `sendemail.mailmap.blob` configuration + values. Defaults to `sendemail.mailmap`. + +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 + https://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 + that this only includes the alias name and not its expanded email addresses. + See `sendemail.aliasesFile` for more information about aliases. + +--translate-aliases:: + Instead of the normal operation, read from standard input and + interpret each line as an email alias. Translate it according to the + configured alias file(s). Output each translated name and email + address to standard output, one per line. See `sendemail.aliasFile` + for more information about aliases. + +CONFIGURATION +------------- + +include::includes/cmd-config-section-all.adoc[] + +include::config/sendemail.adoc[] + +EXAMPLES OF SMTP SERVERS +------------------------ +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 +---- + +Gmail does not allow using your regular password for `git send-email`. +If you have multi-factor authentication set up on your Gmail account, you can +generate an app-specific password for use with `git send-email`. Visit +https://security.google.com/settings/security/apppasswords to create it. + +Alternatively, instead of using an app-specific password, you can use +OAuth2.0 authentication with Gmail. OAuth2.0 is more secure than +app-specific passwords, and works regardless of whether you have multi-factor +authentication set up. `OAUTHBEARER` and `XOAUTH2` are common mechanisms used +for this type of authentication. Gmail supports both of them. As an example, +if you want to use `OAUTHBEARER`, edit your `~/.gitconfig` file and add +`smtpAuth = OAUTHBEARER` to your account settings: + +---- +[sendemail] + smtpEncryption = tls + smtpServer = smtp.gmail.com + smtpUser = yourname@gmail.com + smtpServerPort = 587 + smtpAuth = OAUTHBEARER +---- + +Another alternative is using a tool developed by Google known as +https://github.com/google/gmail-oauth2-tools/tree/master/go/sendgmail[sendgmail] +to send emails using `git send-email`. + +Use Microsoft Outlook as the SMTP Server +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Unlike Gmail, Microsoft Outlook no longer supports app-specific passwords. +Therefore, OAuth2.0 authentication must be used for Outlook. Also, it only +supports `XOAUTH2` authentication mechanism. + +Edit `~/.gitconfig` to specify your account settings for Outlook and use its +SMTP server with `git send-email`: + +---- +[sendemail] + smtpEncryption = tls + smtpServer = smtp.office365.com + smtpUser = yourname@outlook.com + smtpServerPort = 587 + smtpAuth = XOAUTH2 +---- + +SENDING PATCHES +--------------- +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 a 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. + +If you are using OAuth2.0 authentication, you need to use an access token in +place of a password when prompted. Various OAuth2.0 token generators are +available online. Community maintained credential helpers are also available: + + - https://github.com/AdityaGarg8/git-credential-email[git-credential-gmail] + (cross platform, dedicated helper for authenticating Gmail accounts) + + - https://github.com/AdityaGarg8/git-credential-email[git-credential-outlook] + (cross platform, dedicated helper for authenticating Microsoft Outlook accounts) + + - https://github.com/AdityaGarg8/git-credential-email[git-credential-yahoo] + (cross platform, dedicated helper for authenticating Yahoo accounts) + + - https://github.com/AdityaGarg8/git-credential-email[git-credential-aol] + (cross platform, dedicated helper for authenticating AOL accounts) + +You can also see linkgit:gitcredentials[7] for more OAuth based authentication +helpers. + +Proton Mail does not provide an SMTP server to send emails. If you are a paid +customer of Proton Mail, you can use +https://proton.me/mail/bridge[Proton Mail Bridge] +officially provided by Proton Mail to create a local SMTP server for sending +emails. For both free and paid users, community maintained projects like +https://github.com/AdityaGarg8/git-credential-email[git-protonmail] can be +used. + +Note: the following core Perl modules that may be installed with your +distribution of Perl are required: + +https://metacpan.org/pod/MIME::Base64[MIME::Base64], +https://metacpan.org/pod/MIME::QuotedPrint[MIME::QuotedPrint], +https://metacpan.org/pod/Net::Domain[Net::Domain] and +https://metacpan.org/pod/Net::SMTP[Net::SMTP]. + +These additional Perl modules are also required: + +https://metacpan.org/pod/Authen::SASL[Authen::SASL] and +https://metacpan.org/pod/Mail::Address[Mail::Address]. + +Exploiting the `sendmailCmd` option of `git send-email` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Apart from sending emails via an SMTP server, `git send-email` can also send +emails through any application that supports sendmail-like commands. You can +read documentation of `--sendmail-cmd=<command>` above for more information. +This ability can be very useful if you want to use another application as an +SMTP client for `git send-email`, or if your email provider uses proprietary +APIs instead of SMTP to send emails. + +As an example, lets see how to configure https://marlam.de/msmtp/[msmtp], a +popular SMTP client found in many Linux distributions. Edit `~/.gitconfig` +to instruct `git-send-email` to use it for sending emails. + +---- +[sendemail] + sendmailCmd = /usr/bin/msmtp # Change this to the path where msmtp is installed +---- + +Links of a few such community maintained helpers are: + + - https://marlam.de/msmtp/[msmtp] + (popular SMTP client with many features, available for Linux and macOS) + + - https://github.com/AdityaGarg8/git-credential-email[git-protonmail] + (cross platform client that can send emails using the ProtonMail API) + + - https://github.com/AdityaGarg8/git-credential-email[git-msgraph] + (cross platform client that can send emails using the Microsoft Graph API) + +SEE ALSO +-------- +linkgit:git-format-patch[1], linkgit:git-imap-send[1], mbox(5) + +GIT +--- +Part of the linkgit:git[1] suite |