Skip to content
  • Junio C Hamano's avatar
    diff_opt: track whether flags have been set explicitly · 6c374008
    Junio C Hamano authored
    
    
    The diff_opt infrastructure sets flags based on defaults and command
    line options.  It is impossible to tell whether a flag has been set
    as a default or on explicit request.  Update the structure so that
    this detection is possible:
    
     * Add an extra "opt->touched_flags" that keeps track of all the
       fields that have been touched by DIFF_OPT_SET and DIFF_OPT_CLR.
    
     * You may continue setting the default values to the flags, like
       commands in the "log" family do in cmd_log_init_defaults(), but
       after you finished setting the defaults, you clear the
       touched_flags field;
    
     * And then you let the usual callchain call diff_opt_parse(),
       allowing the opt->flags be set or unset, while keeping track of
       which bits the user touched;
    
     * There is an optional callback "opt->set_default" that is called
       at the very beginning to let you inspect touched_flags and update
       opt->flags appropriately, before the remainder of the diffcore
       machinery is set up, taking the opt->flags value into account.
    
    Signed-off-by: default avatarMichael J Gruber <git@drmicha.warpmail.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    6c374008