We can use the range-diff on the same range to examine differences in the diff algorithm. Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> --- range-diff.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/range-diff.c b/range-diff.c index 347b4a79f25..a977289b7dc 100644 --- a/range-diff.c +++ b/range-diff.c @@ -28,7 +28,8 @@ struct patch_util { * Reads the patches into a string list, with the `util` field being populated * as struct object_id (will need to be free()d). */ -static int read_patches(const char *range, struct string_list *list) +static int read_patches(const char *range, struct string_list *list, + struct argv_array *extra_log_args) { struct child_process cp = CHILD_PROCESS_INIT; FILE *in; @@ -36,7 +37,12 @@ static int read_patches(const char *range, struct string_list *list) struct patch_util *util = NULL; int in_header = 1; - argv_array_pushl(&cp.args, "log", "--no-color", "-p", "--no-merges", + argv_array_pushl(&cp.args, "log", "--no-color", "-p", "--no-merges", NULL); + + if (extra_log_args) + argv_array_pushv(&cp.args, extra_log_args->argv); + + argv_array_pushl(&cp.args, "--reverse", "--date-order", "--decorate=no", "--no-abbrev-commit", range, NULL); @@ -419,14 +425,20 @@ int show_range_diff(const char *range1, const char *range2, { int res = 0; + struct argv_array extra = ARGV_ARRAY_INIT; + struct string_list branch1 = STRING_LIST_INIT_DUP; struct string_list branch2 = STRING_LIST_INIT_DUP; - if (read_patches(range1, &branch1)) + argv_array_push(&extra, "--diff-algorithm=patience"); + argv_array_push(&extra, "--indent-heuristic"); + + if (read_patches(range1, &branch1, NULL)) res = error(_("could not parse log for '%s'"), range1); - if (!res && read_patches(range2, &branch2)) + if (!res && read_patches(range2, &branch2, &extra)) res = error(_("could not parse log for '%s'"), range2); + diffopt->color_moved = COLOR_MOVED_DEFAULT; if (!res) { find_exact_matches(&branch1, &branch2); get_correspondences(&branch1, &branch2, creation_factor); -- 2.18.0.597.ga71716f1ad-goog