pretty.c: add %f format specifier to format_commit_message()
[gitweb.git] / Documentation / git-send-email.txt
index 9d0a10c562c40f0992eb1105cf7543b8813f11b5..10dfd667b238700f610a51a504876e4c33ad0375 100644 (file)
@@ -8,8 +8,7 @@ git-send-email - Send a collection of patches as emails
 
 SYNOPSIS
 --------
-'git-send-email' [options] <file|directory> [... file|directory]
-
+'git send-email' [options] <file|directory|rev-list options>...
 
 
 DESCRIPTION
@@ -20,42 +19,58 @@ The header of the email is configurable by 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
 -------
-The options available are:
+
+Composing
+~~~~~~~~~
 
 --bcc::
-       Specify a "Bcc:" value for each email.
+       Specify a "Bcc:" value for each email. Default is the value of
+       'sendemail.bcc'.
 +
 The --bcc option must be repeated for each user you want on the bcc list.
 
 --cc::
        Specify a starting "Cc:" value for each email.
+       Default is the value of 'sendemail.cc'.
 +
 The --cc option must be repeated for each user you want on the cc list.
 
---cc-cmd::
-       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.
-
---chain-reply-to, --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.
-       Default is the value of the 'sendemail.chainreplyto' configuration
-       value; if that is unspecified, default to --chain-reply-to.
+--annotate::
+       Review each patch you're about to send in an editor. The setting
+       'sendemail.multiedit' defines if this will spawn one editor per patch
+       or one for all of them at once.
 
 --compose::
        Use $GIT_EDITOR, core.editor, $VISUAL, or $EDITOR 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.
 
 --from::
        Specify the sender of the emails.  This will default to
-       the value GIT_COMMITTER_IDENT, as returned by "git-var -l".
+       the value GIT_COMMITTER_IDENT, as returned by "git var -l".
        The user will still be prompted to confirm this entry.
 
 --in-reply-to::
@@ -65,21 +80,47 @@ The --cc option must be repeated for each user you want on the cc list.
        Only necessary if --compose is also set.  If --compose
        is not set, this will be prompted for.
 
---signed-off-by-cc, --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.signedoffcc' configuration value;
-        if that is unspecified, default to --signed-off-by-cc.
+--subject::
+       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.
 
---quiet::
-       Make git-send-email less verbose.  One line per email should be
-       all that is output.
+--to::
+       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,
+       this will be prompted for.
++
+The --to option must be repeated for each user you want on the to list.
 
---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'.
+
+Sending
+~~~~~~~
+
+--envelope-sender::
+       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. 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::
+       Specify the encryption to use, either 'ssl' or 'tls'.  Any other
+       value reverts to plain SMTP.  Default is the value of
+       'sendemail.smtpencryption'.
+
+--smtp-pass::
+       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 the
+user is prompted for a password while the input is masked for privacy.
 
 --smtp-server::
        If set, specifies the outgoing SMTP server to use (e.g.
@@ -94,103 +135,126 @@ The --cc option must be repeated for each user you want on the cc list.
 --smtp-server-port::
        Specifies a port different from the default port (SMTP
        servers typically listen to smtp port 25 and ssmtp port
-       465).
+       465). This can be set with 'sendemail.smtpserverport'.
+
+--smtp-ssl::
+       Legacy alias for '--smtp-encryption ssl'.
 
 --smtp-user::
-       Username for SMTP-AUTH. In place of this option, the following
-       configuration variables can be specified:
-+
---
-               * sendemail.smtpuser
-               * sendemail.<identity>.smtpuser (see sendemail.identity).
---
-+
-However, --smtp-user always overrides these variables.
-+
-If a username is not specified (with --smtp-user or a
-configuration variable), then authentication is not attempted.
+       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-pass::
-       Password for SMTP-AUTH. The argument is optional: If no
-       argument is specified, then the empty string is used as
-       the password.
-+
-In place of this option, the following configuration variables
-can be specified:
-+
---
-               * sendemail.smtppass
-               * sendemail.<identity>.smtppass (see sendemail.identity).
---
-+
-However, --smtp-pass always overrides these variables.
-+
-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 configuration variable), but no password has been
-specified (with --smtp-pass or a configuration variable), then the
-user is prompted for a password while the input is masked for privacy.
 
---smtp-ssl::
-       If set, connects to the SMTP server using SSL.
-       Default is the value of the 'sendemail.smtpssl' configuration value;
-       if that is unspecified, does not use SSL.
+Automating
+~~~~~~~~~~
 
---subject::
-       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.
+--cc-cmd::
+       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.
 
---suppress-from, --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-]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. Default is the value of the 'sendemail.chainreplyto'
+       configuration value; if that is unspecified, default to --chain-reply-to.
+
+--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.
 
 --suppress-cc::
        Specify an additional category of recipients to suppress the
-       auto-cc of.  'self' will avoid including the sender, 'author' will
-       avoid including the patch author, 'cc' will avoid including anyone
-       mentioned in Cc lines in the patch, 'sob' will avoid including
-       anyone mentioned in Signed-off-by lines, and 'cccmd' will avoid
-       running the --cc-cmd.  '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 'sob' if --no-signed-off-cc is specified.
-
---thread, --no-thread::
+       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).
+- 'ccbody' 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' + 'ccbody'
+- '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 header will be set on each email sent.
        If disabled with "--no-thread", no emails will have the In-Reply-To
-       header set.
-       Default is the value of the 'sendemail.thread' configuration value;
-       if that is unspecified, default to --thread.
+       header set. Default is the value of the 'sendemail.thread' configuration
+       value; if that is unspecified, default to --thread.
+
+
+Administering
+~~~~~~~~~~~~~
+
+--confirm::
+       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.
 
---envelope-sender::
-       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. If you use the sendmail binary, you must have
-       suitable privileges for the -f parameter.
+--quiet::
+       Make git-send-email less verbose.  One line per email should be
+       all that is output.
 
---to::
-       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, this will be prompted for.
+--[no-]validate::
+       Perform sanity checks on patches.
+       Currently, validation means the following:
 +
-The --to option must be repeated for each user you want on the to list.
+--
+               *       Warn of patches that contain lines longer than 998 characters; this
+                       is due to SMTP limits as described by http://www.ietf.org/rfc/rfc2821.txt.
+--
++
+Default is the value of 'sendemail.validate'; if this is not set,
+default to '--validate'.
+
+--[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.
 
 
 CONFIGURATION
 -------------
-sendemail.identity::
-       The default configuration identity. When specified,
-       'sendemail.<identity>.<item>' will have higher precedence than
-       'sendemail.<item>'. This is useful to declare multiple SMTP
-       identities and to hoist sensitive authentication information
-       out of the repository and into the global configuration file.
 
 sendemail.aliasesfile::
        To avoid typing long email addresses, point this to one or more
@@ -200,33 +264,17 @@ sendemail.aliasfiletype::
        Format of the file(s) specified in sendemail.aliasesfile. Must be
        one of 'mutt', 'mailrc', 'pine', or 'gnus'.
 
-sendemail.to::
-       Email address (or alias) to always send to.
-
-sendemail.cccmd::
-       Command to execute to generate per patch file specific "Cc:"s.
+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.bcc::
-       Email address (or alias) to always bcc.
+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.
 
-sendemail.chainreplyto::
-       Boolean value specifying the default to the '--chain_reply_to'
-       parameter.
-
-sendemail.smtpserver::
-       Default SMTP server to use.
-
-sendemail.smtpserverport::
-       Default SMTP server port to use.
-
-sendemail.smtpuser::
-       Default SMTP-AUTH username.
-
-sendemail.smtppass::
-       Default SMTP-AUTH password.
-
-sendemail.smtpssl::
-       Boolean value specifying the default to the '--smtp-ssl' parameter.
 
 Author
 ------
@@ -235,10 +283,12 @@ Written by Ryan Anderson <ryan@michonline.com>
 git-send-email is originally based upon
 send_lots_of_email.pl by Greg Kroah-Hartman.
 
+
 Documentation
 --------------
 Documentation by Ryan Anderson
 
+
 GIT
 ---
-Part of the linkgit:git[7] suite
+Part of the linkgit:git[1] suite