]> git.ipfire.org Git - thirdparty/git.git/commit
diff: disable rename detection with --quiet
authorRené Scharfe <l.s.r@web.de>
Sun, 9 Nov 2025 16:43:36 +0000 (17:43 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 10 Nov 2025 19:23:57 +0000 (11:23 -0800)
commitfa052367ef8f7829996ff15368d63edfff0e40c3
treefbd4210e322478f1d5d315805c9c7f16512d0110
parentf368df439b31b422169975cc3c95f7db6a46eada
diff: disable rename detection with --quiet

Detecting renames and copies improves diff's output.  This effort is
wasted if we don't show any.  Disable detection in that case.

This actually fixes the error code when using the options --cached,
--find-copies-harder, --no-ext-diff and --quiet together:
run_diff_index() indirectly calls diff-lib.c::show_modified(), which
queues even non-modified entries using diff_change() because we need
them for copy detection.  diff_change() sets flags.has_changes, though,
which causes diff_can_quit_early() to declare we're done after seeing
only the very first entry -- way too soon.

Using --cached, --find-copies-harder and --quiet together without
--no-ext-diff was not affected even before, as it causes the flag
flags.diff_from_contents to be set, which disables the optimization
in a different way.

Reported-by: D. Ben Knoble <ben.knoble@gmail.com>
Suggested-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff.c
t/t4007-rename-3.sh