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

> Stefan Beller <sbel...@google.com> writes:
>
>>  
>> -static int parse_color_moved_ws(const char *arg)
>> +static unsigned parse_color_moved_ws(const char *arg)
>>  {
>>      int ret = 0;
>>      struct string_list l = STRING_LIST_INIT_DUP;
>> @@ -312,15 +312,19 @@ static int parse_color_moved_ws(const char *arg)
>>                      ret |= XDF_IGNORE_WHITESPACE;
>>              else if (!strcmp(sb.buf, "allow-indentation-change"))
>>                      ret |= COLOR_MOVED_WS_ALLOW_INDENTATION_CHANGE;
>> -            else
>> +            else {
>> +                    ret |= COLOR_MOVED_WS_ERROR;
>>                      error(_("ignoring unknown color-moved-ws mode '%s'"), 
>> sb.buf);
>> +            }
>> ...  
>>      } else if (skip_prefix(arg, "--color-moved-ws=", &arg)) {
>> -            options->color_moved_ws_handling = parse_color_moved_ws(arg);
>> +            unsigned cm = parse_color_moved_ws(arg);
>> +            if (cm & COLOR_MOVED_WS_ERROR)
>> +                    die("bad --color-moved-ws argument: %s", arg);
>> +            options->color_moved_ws_handling = cm;
>
> Excellent.
>
> Will queue.  Perhaps a test or two can follow to ensure a bad value
> from config does not kill while a command line does?

Wait.  This does not fix

        git -c diff.colormovedws=nonsense diff

that dies with an error message---it should ignore the config and at
moat issue a warning.

The command line handling of

        git diff --color-moved-ws=nonsense

does correctly die, but it first says "error: ignoring" before
saying "fatal: bad argument", which is suboptimal.

So, not so excellent (yet) X-<.

Reply via email to