combine-diff: support format_callback
authorJunio C Hamano <gitster@pobox.com>
Sat, 20 Aug 2011 06:32:51 +0000 (23:32 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sun, 21 Aug 2011 06:03:06 +0000 (23:03 -0700)
commit25e5e2bf85c8a2c2c8945935267539940c11020d
treee5b5899165adae30fe77b27c078f96ab31b67de4
parent0906f6e14e6e9df0c4ea4edb08ebe9f5d16c2391
combine-diff: support format_callback

This teaches combine-diff machinery to feed a combined merge to a callback
function when DIFF_FORMAT_CALLBACK is specified.

So far, format callback functions are not used for anything but 2-way
diffs. A callback is given a diff_queue_struct, which is an array of
diff_filepair. As its name suggests, a diff_filepair is a _pair_ of
diff_filespec that represents a single preimage and a single postimage.

Since "diff -c" is to compare N parents with a single merge result and
filter out any paths whose result match one (or more) of the parent(s),
its output has to be able to represent N preimages and 1 postimage. For
this reason, a callback function that inspects a diff_filepair that
results from this new infrastructure can and is expected to view the
preimage side (i.e. pair->one) as an array of diff_filespec. Each element
in the array, except for the last one, is marked with "has_more_entries"
bit, so that the same callback function can be used for 2-way diffs and
combined diffs.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
combine-diff.c
diffcore.h