]> git.ipfire.org Git - thirdparty/git.git/commitdiff
diff: simplify color_moved check when flushing
authorJeff King <peff@peff.net>
Tue, 16 Sep 2025 20:17:19 +0000 (16:17 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 16 Sep 2025 20:37:05 +0000 (13:37 -0700)
In diff_flush_patch_all_file_pairs(), we set o->emitted_symbols if and
only if o->color_moved is true. That causes the lower-level routines to
fill up o->emitted_symbols, which we then analyze in order to do the
actual colorizing.

But in that final step, we do:

  if (o->emitted_symbols) {
          if (o->color_moved) {
     ...actual coloring...
  }
  ...clean up of emitted_symbols...
  }

The inner "if" will always trigger, since we set emitted_symbols only
when doing color_moved (it is a little confusing that it is set inside
the diff_options struct, but that is for convenience of passing it to
the lower-level routines; we always clear it at the end of flushing,
since 48edf3a02a (diff: clear emitted_symbols flag after use,
2019-01-24)).

Let's simplify the code a bit by just dropping the inner "if" and
running its block unconditionally.

In theory the current code might be useful if another feature besides
color_moved setup and used emitted_symbols, but it would be easy to
refactor later to handle that. And in the meantime, this makes further
work in this area easier.

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 d9bed49f612f84a1c28e4692ce258c85f46ab695..c178aba75b85e78f4710a0593a9f1eb0fcbed170 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -6690,20 +6690,17 @@ static void diff_flush_patch_all_file_pairs(struct diff_options *o)
        }
 
        if (o->emitted_symbols) {
-               if (o->color_moved) {
-                       struct mem_pool entry_pool;
-                       struct moved_entry_list *entry_list;
-
-                       mem_pool_init(&entry_pool, 1024 * 1024);
-                       entry_list = add_lines_to_move_detection(o,
-                                                                &entry_pool);
-                       mark_color_as_moved(o, entry_list);
-                       if (o->color_moved == COLOR_MOVED_ZEBRA_DIM)
-                               dim_moved_lines(o);
-
-                       mem_pool_discard(&entry_pool, 0);
-                       free(entry_list);
-               }
+               struct mem_pool entry_pool;
+               struct moved_entry_list *entry_list;
+
+               mem_pool_init(&entry_pool, 1024 * 1024);
+               entry_list = add_lines_to_move_detection(o, &entry_pool);
+               mark_color_as_moved(o, entry_list);
+               if (o->color_moved == COLOR_MOVED_ZEBRA_DIM)
+                       dim_moved_lines(o);
+
+               mem_pool_discard(&entry_pool, 0);
+               free(entry_list);
 
                for (i = 0; i < esm.nr; i++)
                        emit_diff_symbol_from_struct(o, &esm.buf[i]);