Support StGIT patches by implementing a simple awk-based converter mimicking StGIT's own parse_patch. Also support StGIT patch series by 'exploding' the index into a lif of files and re-running the mail splitting with patch_format set to stgit. --- git-am.sh | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 60 insertions(+), 0 deletions(-) diff --git a/git-am.sh b/git-am.sh index 4cf66aa..1a00830 100755 --- a/git-am.sh +++ b/git-am.sh @@ -203,6 +203,66 @@ split_patches () { 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` + touch "$dotest/$msgnum" + # Awk 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 + awk 'BEGIN { subject=0 } + { + if (subject > 1) + print ; + else if (/^$/) next ; + else if (/^Author:/) print sub("Author", "From"), $ORS ; + else if (/^(From|Date)/) print ; + else if (subject) { + subject = 2 ; + print "" ; + print ; + } else { + print "Subject:", $0 ; + 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 -- 1.6.3.1.248.gb44be -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html