git-am(1)
=========

NAME
----
git-am - Apply a series of patches from a mailbox


SYNOPSIS
--------
[verse]
'git-am' [--signoff] [--dotest=<dir>] [--utf8 | --no-utf8] [--binary] [--3way]
         [--interactive] [--whitespace=<option>] [-C<n>] [-p<n>]
	 <mbox>...
'git-am' [--skip | --resolved]

DESCRIPTION
-----------
Splits mail messages in a mailbox into commit log message,
authorship information and patches, and applies them to the
current branch.

OPTIONS
-------
<mbox>...::
	The list of mailbox files to read patches from. If you do not
	supply this argument, reads from the standard input.

--signoff::
	Add `Signed-off-by:` line to the commit message, using
	the committer identity of yourself.

--dotest=<dir>::
	Instead of `.dotest` directory, use <dir> as a working
	area to store extracted patches.

--keep::
	Pass `-k` flag to `git-mailinfo` (see gitlink:git-mailinfo[1]).

--utf8::
	Pass `-u` flag to `git-mailinfo` (see gitlink:git-mailinfo[1]).
	The proposed commit log message taken from the e-mail
	are re-coded into UTF-8 encoding (configuration variable
	`i18n.commitencoding` can be used to specify project's
	preferred encoding if it is not UTF-8).
+
This was optional in prior versions of git, but now it is the
default.   You could use `--no-utf8` to override this.

--no-utf8::
	Do not pass `-u` flag to `git-mailinfo` (see
	gitlink:git-mailinfo[1]).

--binary::
	Pass `--allow-binary-replacement` flag to `git-apply`
	(see gitlink:git-apply[1]).

--3way::
	When the patch does not apply cleanly, fall back on
	3-way merge, if the patch records the identity of blobs
	it is supposed to apply to, and we have those blobs
	locally.

--skip::
	Skip the current patch.  This is only meaningful when
	restarting an aborted patch.

--whitespace=<option>::
	This flag is passed to the `git-apply` program that applies
	the patch.

-C<n>, -p<n>::
	These flags are passed to the `git-apply` program that applies
	the patch.

--interactive::
	Run interactively, just like git-applymbox.

--resolved::
	After a patch failure (e.g. attempting to apply
	conflicting patch), the user has applied it by hand and
	the index file stores the result of the application.
	Make a commit using the authorship and commit log
	extracted from the e-mail message and the current index
	file, and continue.

DISCUSSION
----------

The commit author name is taken from the "From: " line of the
message, and commit author time is taken from the "Date: " line
of the message.  The "Subject: " line is used as the title of
the commit, after stripping common prefix "[PATCH <anything>]".
It is supposed to describe what the commit is about concisely as
a one line text.

The body of the message (iow, after a blank line that terminates
RFC2822 headers) can begin with "Subject: " and "From: " lines
that are different from those of the mail header, to override
the values of these fields.

The commit message is formed by the title taken from the
"Subject: ", a blank line and the body of the message up to
where the patch begins.  Excess whitespaces at the end of the
lines are automatically stripped.

The patch is expected to be inline, directly following the
message.  Any line that is of form:

* three-dashes and end-of-line, or
* a line that begins with "diff -", or
* a line that begins with "Index: "

is taken as the beginning of a patch, and the commit log message
is terminated before the first occurrence of such a line.

When initially invoking it, you give it names of the mailboxes
to crunch.  Upon seeing the first patch that does not apply, it
aborts in the middle, just like 'git-applymbox' does.  You can
recover from this in one of two ways:

. skip the current one by re-running the command with '--skip'
  option.

. hand resolve the conflict in the working directory, and update
  the index file to bring it in a state that the patch should
  have produced.  Then run the command with '--resolved' option.

The command refuses to process new mailboxes while `.dotest`
directory exists, so if you decide to start over from scratch,
run `rm -f .dotest` before running the command with mailbox
names.


SEE ALSO
--------
gitlink:git-applymbox[1], gitlink:git-applypatch[1], gitlink:git-apply[1].


Author
------
Written by Junio C Hamano <junkio@cox.net>

Documentation
--------------
Documentation by Petr Baudis, Junio C Hamano and the git-list <git@vger.kernel.org>.

GIT
---
Part of the gitlink:git[7] suite

