Junio C Hamano <gits...@pobox.com> writes:

> Ben Peart <benpe...@microsoft.com> writes:
>
>> +if test -n "$GIT_FSMONITOR_TEST"
>> +then
>> +    if test -n "$GIT_TEST_FSMONITOR"
>> +    then
>> +            echo "warning: the GIT_FSMONITOR_TEST variable has been renamed 
>> to GIT_TEST_FSMONITOR"
>> +    else
>> +            echo "error: the GIT_FSMONITOR_TEST variable has been renamed 
>> to GIT_TEST_FSMONITOR"
>> +            exit 1
>> +    fi
>> +fi
>
> I would have expected that, because we are now doing multiple pairs
> of variables in a single series, we would add a helper function that
> can be called like so:
>
>       check_var_migration GIT_FSMONITOR_TEST GIT_TEST_FSMONITOR
>
> in the earliest step.  Perhaps something like this.
>
> check_var_migration () {
>       old_name=$1 new_name=$2
>       eval "old_isset=\${${old_name}:+isset}"
>       eval "new_isset=\${${new_name}:+isset}"
>       case "$old_isset,$new_isset" in
>       isset,)
>               echo >&2 "error: $old_name is now $new_name"
>               exit 1 ;;
>       isset,isset)
>               # enable this, once $old_name no longer is valid anywhere
>               # echo >&2 "warning: $old_name is now $new_name"
>               # echo >&2 "hint: remove $old_name"
>               ;;
>       esac
> }

Alternatively, we could do this, to warn and then migrate the value
given to the old variable automatically to the new variable and let
the test proceed.

check_var_migration () {
        old_name=$1 new_name=$2
        eval "old_isset=\${${old_name}:+isset}"
        eval "new_isset=\${${new_name}:+isset}"
        case "$old_isset,$new_isset" in
        isset,)
                echo >&2 "warning: $old_name is now $new_name"
                echo >&2 "hint: set $new_name too during the transition period"
                eval "$new_name=\$$old_name"
                ;;
        isset,isset)
                # do this later
                # echo >&2 "warning: $old_name is now $new_name"
                # echo >&2 "hint: remove $old_name"
                ;;
        esac
}

Reply via email to