mirror of
https://github.com/git/git.git
synced 2024-12-24 09:13:59 +08:00
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."
|
. git-sh-setup || die "Not a git archive."
|
||||||
|
|
||||||
usage () {
|
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,
|
Prepare each commit with its patch since our-head forked from upstream,
|
||||||
one file per patch, for e-mail submission. Each output file is
|
one file per patch, for e-mail submission. Each output file is
|
||||||
@ -49,6 +49,8 @@ do
|
|||||||
numbered=t ;;
|
numbered=t ;;
|
||||||
-s|--s|--si|--sig|--sign|--signo|--signof|--signoff)
|
-s|--s|--si|--sig|--sign|--signo|--signof|--signoff)
|
||||||
signoff=t ;;
|
signoff=t ;;
|
||||||
|
--st|--std|--stdo|--stdou|--stdout)
|
||||||
|
stdout=t mbox=t date=t author=t ;;
|
||||||
-o=*|--o=*|--ou=*|--out=*|--outp=*|--outpu=*|--output=*|--output-=*|\
|
-o=*|--o=*|--ou=*|--out=*|--outp=*|--outpu=*|--output=*|--output-=*|\
|
||||||
--output-d=*|--output-di=*|--output-dir=*|--output-dire=*|\
|
--output-d=*|--output-di=*|--output-dir=*|--output-dire=*|\
|
||||||
--output-direc=*|--output-direct=*|--output-directo=*|\
|
--output-direc=*|--output-direct=*|--output-directo=*|\
|
||||||
@ -141,25 +143,7 @@ do
|
|||||||
esac
|
esac
|
||||||
done >$series
|
done >$series
|
||||||
|
|
||||||
total=`wc -l <$series | tr -dc "[0-9]"`
|
process_one () {
|
||||||
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"
|
|
||||||
{
|
|
||||||
mailScript='
|
mailScript='
|
||||||
/./d
|
/./d
|
||||||
/^$/n'
|
/^$/n'
|
||||||
@ -178,6 +162,7 @@ do
|
|||||||
echo 'From nobody Mon Sep 17 00:00:00 2001' ;# UNIX "From" line
|
echo 'From nobody Mon Sep 17 00:00:00 2001' ;# UNIX "From" line
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
eval "$(sed -ne "$whosepatchScript" $commsg)"
|
eval "$(sed -ne "$whosepatchScript" $commsg)"
|
||||||
test "$author,$au" = ",$me" || {
|
test "$author,$au" = ",$me" || {
|
||||||
mailScript="$mailScript"'
|
mailScript="$mailScript"'
|
||||||
@ -196,7 +181,9 @@ Date: '"$ad"
|
|||||||
n
|
n
|
||||||
b body'
|
b body'
|
||||||
|
|
||||||
sed -ne "$mailScript" <$commsg
|
(cat $commsg ; echo; echo) |
|
||||||
|
sed -ne "$mailScript" |
|
||||||
|
git-stripspace
|
||||||
|
|
||||||
test "$signoff" = "t" && {
|
test "$signoff" = "t" && {
|
||||||
offsigner=`git-var GIT_COMMITTER_IDENT | sed -e 's/>.*/>/'`
|
offsigner=`git-var GIT_COMMITTER_IDENT | sed -e 's/>.*/>/'`
|
||||||
@ -222,14 +209,39 @@ Date: '"$ad"
|
|||||||
echo
|
echo
|
||||||
;;
|
;;
|
||||||
esac
|
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
|
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
|
done <$series
|
||||||
|
Loading…
Reference in New Issue
Block a user