Thread (2 messages) 2 messages, 2 authors, 2025-08-07

Re: [PATCH v3] diff: ensure consistent diff behavior with ignore options

From: Lidong Yan <hidden>
Date: 2025-08-07 01:24:01

Junio C Hamano [off-list ref] writes:
The code looks much easier to reason about than the previous rounds.

A few comments about the design.

- Are there other possible values that might fit in this "optimize"
  member, and what kind of behaviour would they trigger, that we
  can envision?  I do not think of any and that is why the "enum
  diff_optimize" member in the diff_options structure smells more
  like a "bool dry_run".
I was thinking about DIFF_OPT_BUFFER , but "bool dry_run" would be good
enough for now.
  By the way, giving a member "diff_" prefix when the enclosing
  struct is clearly about "diff" by having a name "diff_options" is
  often a waste of readers' time.
Good advice, field name should avoid overlapping with struct name.
- It is unclear why the dry-run need to imply 0-line context.
I was thinking about matching ignored regex in `quick_consume()`, in which
case we only need to match regex for changes rather than context, so I set
ctxlen to zero. But anyway more `if` reduce both readability and maintainability,
so I won’t set ctxlen in the next version.
- diff_flush_patch_quietly() would be a better name for
  diff_flush_patch_quiet().
Understand, I suppose the idea behind this is to stick to proper grammar as
much as possible when choosing names.
On to the details.
quoted
diff --git a/diff.c b/diff.c
index dca87e164f..5254ef9373 100644
--- a/diff.c
+++ b/diff.c
@@ -2444,6 +2444,15 @@ static int fn_out_consume(void *priv, char *line, unsigned long len)
return 0;
}

+static int quick_consume(void *priv, char *line, unsigned long len)
+{
+ struct emit_callback *ecbdata = priv;
+ struct diff_options *o = ecbdata->opt;
+
+ o->found_changes = 1;
+ return 1;
+}
OK, as a non-zero return value from consume callbacks is supposed
to signal an error and causes xdiff_outf() an early return, this
serves as a short-cut.  One downside is that we cannot truly notice
and signal an error to our callers, as we will see in a later hunk.
I want to think about how to solve this problem later, but I believe I shouldn’t
address it in this patch.

Thanks,
Lidong
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help