• Johannes Schindelin's avatar
    range-diff: also show the diff between patches · c8c5e43a
    Johannes Schindelin authored
    Just like tbdiff, we now show the diff between matching patches. This is
    a "diff of two diffs", so it can be a bit daunting to read for the
    beginner.
    
    An alternative would be to display an interdiff, i.e. the hypothetical
    diff which is the result of first reverting the old diff and then
    applying the new diff.
    
    Especially when rebasing frequently, an interdiff is often not feasible,
    though: if the old diff cannot be applied in reverse (due to a moving
    upstream), an interdiff can simply not be inferred.
    
    This commit brings `range-diff` closer to feature parity with regard
    to tbdiff.
    
    To make `git range-diff` respect e.g. color.diff.* settings, we have
    to adjust git_branch_config() accordingly.
    
    Note: while we now parse diff options such as --color, the effect is not
    yet the same as in tbdiff, where also the commit pairs would be colored.
    This is left for a later commit.
    
    Note also: while tbdiff accepts the `--no-patches` option to suppress
    these diffs between patches, we prefer the `-s` (or `--no-patch`) option
    that is automatically supported via our use of diff_opt_parse().
    
    And finally note: to support diff options, we have to call
    `parse_options()` such that it keeps unknown options, and then loop over
    those and let `diff_opt_parse()` handle them. After that loop, we have
    to call `parse_options()` again, to make sure that no unknown options
    are left.
    Helped-by: default avatarThomas Gummerer <t.gummerer@gmail.com>
    Helped-by: Eric Sunshine's avatarEric Sunshine <sunshine@sunshineco.com>
    Signed-off-by: Johannes Schindelin's avatarJohannes Schindelin <johannes.schindelin@gmx.de>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    c8c5e43a
range-diff.c 8.78 KB