git-send-email(1)
=================

NAME
----
git-send-email - Send a collection of patches as emails


SYNOPSIS
--------
'git send-email' [options] <file|directory|rev-list options>...


DESCRIPTION
-----------
Takes the patches given on the command line and emails them out.

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.


OPTIONS
-------

Composing
~~~~~~~~~

--bcc::
	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.

--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 gets less interactive will use the
values of the headers you set there. If the body of the email (what you type
after the headers and a blank line) only contains blank (or GIT: prefixed)
lines, the summary won't be sent, but git-send-email will still use the
Headers values if you don't removed them.
+
If it wasn't able to see a header in the summary it will ask you about it
interactively after quitting your editor.

--from::
	Specify the sender of the emails.  This will default to
	the value GIT_COMMITTER_IDENT, as returned by "git var -l".
	The user will still be prompted to confirm this entry.

--in-reply-to::
	Specify the contents of the first In-Reply-To header.
	Subsequent emails will refer to the previous email
	instead of this if --chain-reply-to is set (the default)
	Only necessary if --compose is also set.  If --compose
	is not set, this will be prompted for.

--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.

--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.


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.
	`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 `/usr/sbin/sendmail` or
	`/usr/lib/sendmail` if such program is available, or
	`localhost` otherwise.

--smtp-server-port::
	Specifies a port different from the default port (SMTP
	servers typically listen to smtp port 25 and ssmtp port
	465). This can be set with 'sendemail.smtpserverport'.

--smtp-ssl::
	Legacy alias for '--smtp-encryption ssl'.

--smtp-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.


Automating
~~~~~~~~~~

--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.

--[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.

--[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.


Administering
~~~~~~~~~~~~~

--dry-run::
	Do everything except actually send the emails.

--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:
+
--
		*	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.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', or 'gnus'.

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.


Author
------
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[1] suite
