Re: [PATCHv2 4/4] git-am: refactor 'cleaning up and aborting'
Giuseppe Bilotta <giuseppe.bilotta@gmail.com> writes:
Show 5 quoted lines
> 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.
> ---
Show 15 quoted lines
> git-am.sh | 29 +++++++++++++++--------------
> 1 files changed, 15 insertions(+), 14 deletions(-)
>
> diff --git a/git-am.sh b/git-am.sh
> index 1a00830..057acfe 100755
> --- a/git-am.sh
> +++ b/git-am.sh
> @@ -134,6 +134,15 @@ It does not apply to blobs recorded in its index."
> unset GITHEAD_$his_tree
> }
>
> +clean_abort () {
> + if test $# -gt 0
> + then
> + echo "$@" > /dev/stderrShow 66 quoted lines
> + fi
> + rm -fr "$dotest"
> + exit 1
> +}
> +
> patch_format=
>
> check_patch_format () {
> @@ -192,22 +201,18 @@ check_patch_format () {
> fi
> ;;
> esac
> - } < "$1"
> + } < "$1" || clean_abort
> }
>
> split_patches () {
> case "$patch_format" in
> mbox)
> - git mailsplit -d"$prec" -o"$dotest" -b -- "$@" > "$dotest/last" || {
> - rm -fr "$dotest"
> - exit 1
> - }
> + git mailsplit -d"$prec" -o"$dotest" -b -- "$@" > "$dotest/last" || clean_abort
> ;;
> stgit-series)
> if test $# -ne 1
> then
> - echo "Only one StGIT patch series can be applied at once"
> - exit 1
> + clean_abort "Only one StGIT patch series can be applied at once"
> fi
> series_dir=`dirname "$1"`
> series_file="$1"
> @@ -222,7 +227,7 @@ split_patches () {
> shift
> # remove the arg coming from the first-line comment
> shift
> - } < "$series_file"
> + } < "$series_file" || clean_abort
> # set the patch format appropriately
> patch_format=stgit
> # now handle the actual StGIT patches
> @@ -254,18 +259,14 @@ split_patches () {
> print "Subject:", $0 ;
> subject = 1;
> }
> - }' "$stgit" > "$dotest/$msgnum" || {
> - echo "Failed to import $patch_format patch $stgit"
> - exit 1
> - }
> + }' "$stgit" > "$dotest/$msgnum" || clean_abort
> done
> echo "$this" > "$dotest/last"
> this=
> msgnum=
> ;;
> *)
> - echo "Patch format $patch_format is not supported."
> - exit 1
> + clean_abort "Patch format $patch_format is not supported."
> ;;
> esac
> }
> --
> 1.6.3.1.248.gb44be