]> git.ipfire.org Git - thirdparty/git.git/commitdiff
diff: simplify run_external_diff() quiet logic
authorJeff King <peff@peff.net>
Fri, 24 Oct 2025 17:25:07 +0000 (13:25 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 24 Oct 2025 17:38:58 +0000 (10:38 -0700)
We'd sometimes end up in run_external_diff() to do a dry-run diff (e.g.,
to find content-level changes for --quiet). We recognize this quiet mode
by seeing the lack of DIFF_FORMAT_PATCH in the output format.

But since introducing an explicit dry-run check via 3ed5d8bd73 (diff:
stop output garbled message in dry run mode, 2025-10-20), this logic can
never trigger. We can only get to this function by calling
diff_flush_patch(), and that comes from only two places:

  1. A dry-run flush comes from diff_flush_patch_quietly(), which is
     always in dry-run mode (so the other half of our "||" is true
     anyway).

  2. A regular flush comes from diff_flush_patch_all_file_pairs(),
     which is only called when output_format has DIFF_FORMAT_PATCH in
     it.

So we can simplify our "quiet" condition to just checking dry-run mode
(which used to be a specific flag, but recently became just a NULL
"file" pointer). And since it's so simple, we can just do that inline.
This makes the logic about o->file more obvious, since we handle the
NULL and non-stdout cases next to each other.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff.c

diff --git a/diff.c b/diff.c
index 9169ccfaa95e0d5a71534bf2b7481f9c9fadb315..a1961526c0dab1af182d4f400468bf5617f5175c 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -4423,7 +4423,6 @@ static void run_external_diff(const struct external_diff *pgm,
 {
        struct child_process cmd = CHILD_PROCESS_INIT;
        struct diff_queue_struct *q = &diff_queued_diff;
-       int quiet = !(o->output_format & DIFF_FORMAT_PATCH) || !o->file;
        int rc;
 
        /*
@@ -4432,7 +4431,7 @@ static void run_external_diff(const struct external_diff *pgm,
         * external diff program lacks the ability to tell us whether
         * it's empty then we consider it non-empty without even asking.
         */
-       if (!pgm->trust_exit_code && quiet) {
+       if (!pgm->trust_exit_code && !o->file) {
                o->found_changes = 1;
                return;
        }
@@ -4457,7 +4456,7 @@ static void run_external_diff(const struct external_diff *pgm,
        diff_free_filespec_data(one);
        diff_free_filespec_data(two);
        cmd.use_shell = 1;
-       if (quiet)
+       if (!o->file)
                cmd.no_stdout = 1;
        else if (o->file != stdout)
                cmd.out = xdup(fileno(o->file));