mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
xdiff: provide a separate emit callback for hunks
The xdiff library always emits hunk header lines to our callbacks as
formatted strings like "@@ -a,b +c,d @@\n". This is convenient if we're
going to output a diff, but less so if we actually need to compute using
those numbers, which requires re-parsing the line.
In preparation for moving away from this, let's teach xdiff a new
callback function which gets the broken-out hunk information. To help
callers that don't want to use this new callback, if it's NULL we'll
continue to format the hunk header into a string.
Note that this function renames the "outf" callback to "out_line", as
well. This isn't strictly necessary, but helps in two ways:
1. Now that there are two callbacks, it's nice to use more descriptive
names.
2. Many callers did not zero the emit_callback_data struct, and needed
to be modified to set ecb.out_hunk to NULL. By changing the name of
the existing struct member, that guarantees that any new callers
from in-flight topics will break the build and be examined
manually.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
cae598d998
commit
611e42a598
@@ -152,7 +152,7 @@ int xdi_diff_outf(mmfile_t *mf1, mmfile_t *mf2,
|
||||
state.consume = fn;
|
||||
state.consume_callback_data = consume_callback_data;
|
||||
memset(&ecb, 0, sizeof(ecb));
|
||||
ecb.outf = xdiff_outf;
|
||||
ecb.out_line = xdiff_outf;
|
||||
ecb.priv = &state;
|
||||
strbuf_init(&state.remainder, 0);
|
||||
ret = xdi_diff(mf1, mf2, xpp, xecfg, &ecb);
|
||||
|
||||
Reference in New Issue
Block a user