提交 c574e683 编写于 作者: G Giuseppe Bilotta 提交者: Junio C Hamano

git-am foreign patch support: StGIT support

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: NGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 15ced753
......@@ -191,6 +191,63 @@ 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`
# 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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册