git-format-patch: --stdout option.
This new flag generates the mbox formatted output to the standard output, instead of saving them into a file per patch and implies --mbox. It also fixes a corner case where the commit does not have *any* message. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
4ebe63dfe6
commit
655c7470e2
@ -6,7 +6,7 @@
|
||||
. git-sh-setup || die "Not a git archive."
|
||||
|
||||
usage () {
|
||||
echo >&2 "usage: $0"' [-n] [-o dir] [--keep-subject] [--mbox] [--check] [--signoff] [-<diff options>...] upstream [ our-head ]
|
||||
echo >&2 "usage: $0"' [-n] [-o dir | --stdout] [--keep-subject] [--mbox] [--check] [--signoff] [-<diff options>...] upstream [ our-head ]
|
||||
|
||||
Prepare each commit with its patch since our-head forked from upstream,
|
||||
one file per patch, for e-mail submission. Each output file is
|
||||
@ -49,6 +49,8 @@ do
|
||||
numbered=t ;;
|
||||
-s|--s|--si|--sig|--sign|--signo|--signof|--signoff)
|
||||
signoff=t ;;
|
||||
--st|--std|--stdo|--stdou|--stdout)
|
||||
stdout=t mbox=t date=t author=t ;;
|
||||
-o=*|--o=*|--ou=*|--out=*|--outp=*|--outpu=*|--output=*|--output-=*|\
|
||||
--output-d=*|--output-di=*|--output-dir=*|--output-dire=*|\
|
||||
--output-direc=*|--output-direct=*|--output-directo=*|\
|
||||
@ -141,25 +143,7 @@ do
|
||||
esac
|
||||
done >$series
|
||||
|
||||
total=`wc -l <$series | tr -dc "[0-9]"`
|
||||
i=1
|
||||
while read commit
|
||||
do
|
||||
git-cat-file commit "$commit" | git-stripspace >$commsg
|
||||
title=`sed -ne "$titleScript" <$commsg`
|
||||
case "$numbered" in
|
||||
'') num= ;;
|
||||
*)
|
||||
case $total in
|
||||
1) num= ;;
|
||||
*) num=' '`printf "%d/%d" $i $total` ;;
|
||||
esac
|
||||
esac
|
||||
|
||||
file=`printf '%04d-%stxt' $i "$title"`
|
||||
i=`expr "$i" + 1`
|
||||
echo "* $file"
|
||||
{
|
||||
process_one () {
|
||||
mailScript='
|
||||
/./d
|
||||
/^$/n'
|
||||
@ -178,6 +162,7 @@ do
|
||||
echo 'From nobody Mon Sep 17 00:00:00 2001' ;# UNIX "From" line
|
||||
;;
|
||||
esac
|
||||
|
||||
eval "$(sed -ne "$whosepatchScript" $commsg)"
|
||||
test "$author,$au" = ",$me" || {
|
||||
mailScript="$mailScript"'
|
||||
@ -196,7 +181,9 @@ Date: '"$ad"
|
||||
n
|
||||
b body'
|
||||
|
||||
sed -ne "$mailScript" <$commsg
|
||||
(cat $commsg ; echo; echo) |
|
||||
sed -ne "$mailScript" |
|
||||
git-stripspace
|
||||
|
||||
test "$signoff" = "t" && {
|
||||
offsigner=`git-var GIT_COMMITTER_IDENT | sed -e 's/>.*/>/'`
|
||||
@ -222,14 +209,39 @@ Date: '"$ad"
|
||||
echo
|
||||
;;
|
||||
esac
|
||||
} >"$outdir$file"
|
||||
case "$check" in
|
||||
t)
|
||||
# This is slightly modified from Andrew Morton's Perfect Patch.
|
||||
# Lines you introduce should not have trailing whitespace.
|
||||
# Also check for an indentation that has SP before a TAB.
|
||||
grep -n '^+\([ ]* .*\|.*[ ]\)$' "$outdir$file"
|
||||
}
|
||||
|
||||
: do not exit with non-zero because we saw no problem in the last one.
|
||||
total=`wc -l <$series | tr -dc "[0-9]"`
|
||||
i=1
|
||||
while read commit
|
||||
do
|
||||
git-cat-file commit "$commit" | git-stripspace >$commsg
|
||||
title=`sed -ne "$titleScript" <$commsg`
|
||||
case "$numbered" in
|
||||
'') num= ;;
|
||||
*)
|
||||
case $total in
|
||||
1) num= ;;
|
||||
*) num=' '`printf "%d/%d" $i $total` ;;
|
||||
esac
|
||||
esac
|
||||
|
||||
file=`printf '%04d-%stxt' $i "$title"`
|
||||
if test '' = "$stdout"
|
||||
then
|
||||
echo "* $file"
|
||||
process_one >"$outdir$file"
|
||||
if test t = "$check"
|
||||
then
|
||||
# This is slightly modified from Andrew Morton's Perfect Patch.
|
||||
# Lines you introduce should not have trailing whitespace.
|
||||
# Also check for an indentation that has SP before a TAB.
|
||||
grep -n '^+\([ ]* .*\|.*[ ]\)$' "$outdir$file"
|
||||
:
|
||||
fi
|
||||
else
|
||||
echo >&2 "* $file"
|
||||
process_one
|
||||
fi
|
||||
i=`expr "$i" + 1`
|
||||
done <$series
|
||||
|
Loading…
Reference in New Issue
Block a user