Hi John and Phillip, On Tue, Feb 7, 2023 at 9:05 AM John Cai <johncai86@xxxxxxxxx> wrote: > [...] > > Perhaps I'm over simplifying but having read the issue you linked to I couldn't help feeling that the majority of users might be satisfied by just changing gitlab to use the patience algorithm when generating diffs. > > Right, I recognize this is a judgment call that may be best left up to the list. > > We don't have a way in GitLab to change the diff algorithm currently. Of course > that can be implemented outside of Git, Well, the below doesn't allow users to make diffs better for *individual* files of interest, but if you agree with me that we should just make diffs better for all users automatically, it's a two-line change in git.git that I'd love to eventually convince the project to take (though obviously doing that would also require some documentation changes and some good messaging in release notes and whatnot). I've used it for a good long while, and had a few dozen users using this patch too, all without complaint: diff --git a/diff.c b/diff.c index 329eebf16a..77a46d5b7d 100644 --- a/diff.c +++ b/diff.c @@ -55,7 +55,7 @@ static int diff_relative; static int diff_stat_graph_width; static int diff_dirstat_permille_default = 30; static struct diff_options default_diff_options; -static long diff_algorithm; +static long diff_algorithm = XDF_HISTOGRAM_DIFF; static unsigned ws_error_highlight_default = WSEH_NEW; static char diff_colors[][COLOR_MAXLEN] = { diff --git a/t/t4015-diff-whitespace.sh b/t/t4015-diff-whitespace.sh index b298f220e0..2f663eab72 100755 --- a/t/t4015-diff-whitespace.sh +++ b/t/t4015-diff-whitespace.sh @@ -1549,7 +1549,7 @@ test_expect_success 'short lines of opposite sign do not get marked as moved' ' this line should be marked as oldMoved newMoved unchanged 4 EOF - test_expect_code 1 git diff --no-index --color --color-moved=zebra \ + test_expect_code 1 git diff --diff-algorithm=myers --no-index --color --color-moved=zebra \ old.txt new.txt >output && cat output && grep -v index output | test_decode_color >actual && cat >expect <<-\EOF && I used histogram above rather than patience, since (a) it's what git's merge backend uses, (b) it produces roughly similar results to patience from a user perspective, (c) past testing has shown it to be somewhat faster than patience, and (d) we've potentially got some leads in how to speed up our histogram implementation from the README over at https://github.com/pascalkuthe/imara-diff. But, if you really wanted to use patience as the default, it'd also be an easy tweak. Anyway, just some food for thought.