git-am: refactor 'cleaning up and aborting'

Introduce a clean_abort function that echoes an optional error message
to standard error, removes the dotest directory and exits with status 1.

Use it when patch format detection or patch splitting fails early.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Giuseppe Bilotta 2009-05-27 11:25:19 +02:00 committed by Junio C Hamano
parent c574e683b5
commit 0cd29a0371

View file

@ -134,6 +134,12 @@ It does not apply to blobs recorded in its index."
unset GITHEAD_$his_tree unset GITHEAD_$his_tree
} }
clean_abort () {
test $# = 0 || echo >&2 "$@"
rm -fr "$dotest"
exit 1
}
patch_format= patch_format=
check_patch_format () { check_patch_format () {
@ -180,22 +186,19 @@ check_patch_format () {
esac esac
;; ;;
esac esac
} < "$1" } < "$1" || clean_abort
} }
split_patches () { split_patches () {
case "$patch_format" in case "$patch_format" in
mbox) mbox)
git mailsplit -d"$prec" -o"$dotest" -b -- "$@" > "$dotest/last" || { git mailsplit -d"$prec" -o"$dotest" -b -- "$@" > "$dotest/last" ||
rm -fr "$dotest" clean_abort
exit 1
}
;; ;;
stgit-series) stgit-series)
if test $# -ne 1 if test $# -ne 1
then then
echo "Only one StGIT patch series can be applied at once" clean_abort "Only one StGIT patch series can be applied at once"
exit 1
fi fi
series_dir=`dirname "$1"` series_dir=`dirname "$1"`
series_file="$1" series_file="$1"
@ -210,7 +213,7 @@ split_patches () {
shift shift
# remove the arg coming from the first-line comment # remove the arg coming from the first-line comment
shift shift
} < "$series_file" } < "$series_file" || clean_abort
# set the patch format appropriately # set the patch format appropriately
patch_format=stgit patch_format=stgit
# now handle the actual StGIT patches # now handle the actual StGIT patches
@ -239,18 +242,14 @@ split_patches () {
print "Subject: ", $_ ; print "Subject: ", $_ ;
$subject = 1; $subject = 1;
} }
' < "$stgit" > "$dotest/$msgnum" || { ' < "$stgit" > "$dotest/$msgnum" || clean_abort
echo "Failed to import $patch_format patch $stgit"
exit 1
}
done done
echo "$this" > "$dotest/last" echo "$this" > "$dotest/last"
this= this=
msgnum= msgnum=
;; ;;
*) *)
echo "Patch format $patch_format is not supported." clean_abort "Patch format $patch_format is not supported."
exit 1
;; ;;
esac esac
} }