Subject: Re: [PATCH 2/2] git-am: add --message-id/--no-message-id

From: Junio C Hamano <[email-masked]>
Date: Tue, 25 Nov 2014 15:34:02 -0800

Paolo Bonzini <[email-masked]> writes:

> @@ -371,13 +372,18 @@ split_patches () {
>  prec=4
>  dotest="$GIT_DIR/rebase-apply"
>  sign= utf8=t keep= keepcr= skip= interactive= resolved= rebasing= abort=
> -resolvemsg= resume= scissors= no_inbody_headers=
> +messageid= resolvemsg= resume= scissors= no_inbody_headers=

It is somewhat irritating to read a diff that adds new things to the
beginning of anything (a line, or a block of lines) that lists
things in no particular order, as it just adds cognitive burden.

>  git_apply_opt=
>  committer_date_is_author_date=
>  ignore_date=
>  allow_rerere_autoupdate=
>  gpg_sign_opt=
>  
> +if test "$(git config --bool --get am.messageid)" = true
> +then
> +    messageid=t
> +fi
> +
>  if test "$(git config --bool --get am.keepcr)" = true
>  then
>      keepcr=t
> @@ -400,6 +406,10 @@ it will be removed. Please do not use it anymore."
>  		utf8=t ;; # this is now default
>  	--no-utf8)
>  		utf8= ;;
> +	-m|--message-id)
> +		messageid=t ;;
> +	--no-message-id)
> +		messageid=f ;;

This one, taken together with these two hunks ...

>  	-k|--keep)
>  		keep=t ;;
>  	--keep-non-patch)
> @@ -567,6 +577,7 @@ Use \"git am --abort\" to remove it.")"
>  	echo "$sign" >"$dotest/sign"
>  	echo "$utf8" >"$dotest/utf8"
>  	echo "$keep" >"$dotest/keep"
> +	echo "$messageid" >"$dotest/messageid"
>  	echo "$scissors" >"$dotest/scissors"
>  	echo "$no_inbody_headers" >"$dotest/no_inbody_headers"
>  	echo "$GIT_QUIET" >"$dotest/quiet"
> @@ -621,6 +632,12 @@ b)
>  *)
>  	keep= ;;
>  esac
> +case "$(cat "$dotest/messageid")" in
> +t)
> +	messageid=-m ;;
> +f)
> +	messageid= ;;
> +esac

... makes the result look questionable.  The variable is initialized
to empty; when it is written out to $dotest/messageid and later read
back here, that empty value is not covered by this case statement.

Perhaps clearing messageid= upon seeing "--no-message-id" and using
"'t' or empty" makes the code a bit easier to follow?  I dunno.