summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 15ced75)
raw | patch | inline | side by side (parent: 15ced75)
author | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | |
Wed, 27 May 2009 09:25:18 +0000 (11:25 +0200) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Fri, 29 May 2009 06:07:43 +0000 (23:07 -0700) |
Support StGIT patches by implementing a simple perl-based converter
mimicking StGIT's own parse_patch. Also support StGIT patch series by
'exploding' the index into a list of files and re-running the mail
splitting with patch_format set to stgit.
Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
mimicking StGIT's own parse_patch. Also support StGIT patch series by
'exploding' the index into a list of files and re-running the mail
splitting with patch_format set to stgit.
Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-am.sh | patch | blob | history |
diff --git a/git-am.sh b/git-am.sh
index 552b888703e56462bb19372820c99246268f477a..0ff1f577a33ccc96adfbb14fa35adfeee9e309f5 100755 (executable)
--- a/git-am.sh
+++ b/git-am.sh
exit 1
}
;;
+ stgit-series)
+ if test $# -ne 1
+ then
+ echo "Only one StGIT patch series can be applied at once"
+ exit 1
+ fi
+ series_dir=`dirname "$1"`
+ series_file="$1"
+ shift
+ {
+ set x
+ while read filename
+ do
+ set "$@" "$series_dir/$filename"
+ done
+ # remove the safety x
+ shift
+ # remove the arg coming from the first-line comment
+ shift
+ } < "$series_file"
+ # set the patch format appropriately
+ patch_format=stgit
+ # now handle the actual StGIT patches
+ split_patches "$@"
+ ;;
+ stgit)
+ this=0
+ for stgit in "$@"
+ do
+ this=`expr "$this" + 1`
+ msgnum=`printf "%0${prec}d" $this`
+ # Perl version of StGIT parse_patch. The first nonemptyline
+ # not starting with Author, From or Date is the
+ # subject, and the body starts with the next nonempty
+ # line not starting with Author, From or Date
+ perl -ne 'BEGIN { $subject = 0 }
+ if ($subject > 1) { print ; }
+ elsif (/^\s+$/) { next ; }
+ elsif (/^Author:/) { print s/Author/From/ ; }
+ elsif (/^(From|Date)/) { print ; }
+ elsif ($subject) {
+ $subject = 2 ;
+ print "\n" ;
+ print ;
+ } else {
+ print "Subject: ", $_ ;
+ $subject = 1;
+ }
+ ' < "$stgit" > "$dotest/$msgnum" || {
+ echo "Failed to import $patch_format patch $stgit"
+ exit 1
+ }
+ done
+ echo "$this" > "$dotest/last"
+ this=
+ msgnum=
+ ;;
*)
echo "Patch format $patch_format is not supported."
exit 1