This patch adds the ability for "git am" to accept patches in the format
generated by "git show". Some people erroneously use "git show" instead
of "git format-patch", and it's nice as a maintainer to be able to
easily take their patch rather than going back and forth with them to
get a "correctly" formatted patch containing exactly the same actual
information.
Signed-off-by: Peter Jones <pjones@redhat.com>
---
git-am.sh | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/git-am.sh b/git-am.sh
index c682d34..cfd7b09 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -216,6 +216,21 @@ check_patch_format () {
read l2
read l3
case "$l1" in
+ "commit "*)
+ case "$l2" in
+ "Author: "*)
+ case "$l3" in
+ "Date: "*)
+ patch_format=gitshow
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
"From "* | "From: "*)
patch_format=mbox
;;@@ -321,6 +336,36 @@ split_patches () {
this=
msgnum=
;;
+ gitshow)
+ this=0
+ for stgit in "$@"
+ do
+ this=`expr "$this" + 1`
+ msgnum=`printf "%0${prec}d" $this`
+ # The first nonemptyline after an empty line is the
+ # subject, and the body starts with the next nonempty
+ # line.
+ perl -ne 'BEGIN { $subject = 0 }
+ if ($subject > 1) { print ; }
+ elsif (/^\s+$/) { next ; }
+ elsif (/^Author:/) { s/Author/From/ ; print ;}
+ elsif (/^(From|Date)/) { print ; }
+ elsif (/^commit/) { next ; }
+ elsif ($subject) {
+ $subject = 2 ;
+ print "\n" ;
+ s/^ // ;
+ print ;
+ } else {
+ print "Subject: ", $_ ;
+ $subject = 1;
+ }
+ ' < "$stgit" > "$dotest/$msgnum" || clean_abort
+ done
+ echo "$this" > "$dotest/last"
+ this=
+ msgnum=
+ ;;
hg)
this=0
for hg in "$@"--
1.7.11.4