diff --git a/Documentation/git-am.txt b/Documentation/git-am.txt
index a415fe2..bec5c84 100644
--- a/Documentation/git-am.txt
+++ b/Documentation/git-am.txt
@@ -8,7 +8,7 @@ git-am - Apply a series of patches in a
SYNOPSIS
--------
-'git-am' [--signoff] [--dotest=
] [--utf8] [--binary] [--3way] ...
+'git-am' [--one] [--signoff] [--dotest=] [--utf8] [--binary] [--3way] ...
'git-am' [--skip | --resolved]
DESCRIPTION
@@ -19,6 +19,10 @@ current branch.
OPTIONS
-------
+--one::
+ Indicates that contains a single message in RFC 2822
+ format, without mbox-style separators.
+
--signoff::
Add `Signed-off-by:` line to the commit message, using
the committer identity of yourself.
diff --git a/git-am.sh b/git-am.sh
index 6ed527c..9628651 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -4,7 +4,7 @@
. git-sh-setup
usage () {
- echo >&2 "usage: $0 [--signoff] [--dotest=] [--utf8] [--binary] [--3way] "
+ echo >&2 "usage: $0 [--one] [--signoff] [--dotest=] [--utf8] [--binary] [--3way] "
echo >&2 " or, when resuming"
echo >&2 " $0 [--skip | --resolved]"
exit 1;
@@ -98,11 +98,13 @@ fall_back_3way () {
}
prec=4
-dotest=.dotest sign= utf8= keep= skip= interactive= resolved= binary=
+dotest=.dotest sign= utf8= keep= skip= interactive= resolved= binary= one=
while case "$#" in 0) break;; esac
do
case "$1" in
+ -o|--o|--on|--one)
+ one=t; shift;;
-d=*|--d=*|--do=*|--dot=*|--dote=*|--dotes=*|--dotest=*)
dotest=`expr "$1" : '-[^=]*=\(.*\)'`; shift ;;
-d|--d|--do|--dot|--dote|--dotes|--dotest)
@@ -165,8 +167,16 @@ else
mkdir -p "$dotest" || exit
# cat does the right thing for us, including '-' to mean
- # standard input.
- cat "$@" |
+ # standard input. To prepend the header, we thus want a
+ # second cat, sigh...
+ if test "$one" = t
+ then
+ LANG=C date +'From - %a %b %d %T %Y' > "$dotest"/fakefrom
+ fakefrom="$dotest"/fakefrom
+ else
+ fakefrom=/dev/null
+ fi
+ cat "$@" | cat "$fakefrom" - |
git-mailsplit -d$prec "$dotest/" >"$dotest/last" || {
rm -fr "$dotest"
exit 1