• Jeff King's avatar
    parse_opt_ref_sorting: always use with NONEG flag · 95be717c
    Jeff King authored
    The "--sort" parameter of for-each-ref, etc, does not handle negation,
    and instead returns an error to the parse-options code. But neither
    piece of code prints anything for the user, which may leave them
    confused:
    
      $ git for-each-ref --no-sort
      $ echo $?
      129
    
    As the comment in the callback function notes, this probably should
    clear the list, which would make it consistent with other list-like
    options (i.e., anything that uses OPT_STRING_LIST currently).
    Unfortunately that's a bit tricky due to the way the ref-filter code
    works. But in the meantime, let's at least make the error a little less
    confusing:
    
      - switch to using PARSE_OPT_NONEG in the option definition, which will
        cause the options code to produce a useful message
    
      - since this was cut-and-pasted to four different spots, let's define
        a single OPT_REF_SORT() macro that we can use everywhere
    
      - the callback can use BUG_ON_OPT_NEG() to make sure the correct flags
        are used (incidentally, this also satisfies -Wunused-parameters,
        since we're now looking at "unset")
    
      - expand the comment into a NEEDSWORK to make it clear that the
        direction is right, but the details need to be worked out
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    95be717c
ref-filter.c 65.1 KB