Junio C Hamano wrote:

> You just made these two that the user clearly meant to express two
> different things indistinguishable.
>
>       opt.sh -S
>       opt.sh -S ''
[...]
> And that is exactly why gitcli.txt tells users to use the 'sticked'
> form, and ends the bullet point with:
>
>    An option that takes optional option-argument must be written in
>    the 'sticked' form.

Yes, another possibility in that vein would be to teach rev-parse
--parseopt an OPTIONS_LONG_STICKED output format, and then parse with

        while :
        do
                case $1 in
                --gpg-sign)
                        ... no keyid ...
                        ;;
                --gpg-sign=*)
                        keyid=${1#--gpg-sign=}
                        ...
                        ;;
                esac
                shift
        done

This still leaves

        opt.sh -S
        
and

        opt.sh -S''

indistinguishable.  Given what the shell passes to execve, I think
that's ok.

The analagous method without preferring long options could work almost
as well:

        while :
        do
                case $1 in
                -S)
                        ... no keyid ...
                        ;;
                -S?*)
                        keyid=${1#-S}
                        ...
                        ;;
                esac
                shift
        done

but it mishandles "--gpg-sign=" with empty argument.

Jonathan
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to