Thread (11 messages) flat view 11 messages, 3 authors, 2016-06-15

Re: [RFH] xdiff shows trivially redundant diff.

From: Davide Libenzi <hidden>
Date: 2016-06-15 22:42:23

On Sun, 2 Apr 2006, Linus Torvalds wrote:

On Sun, 2 Apr 2006, Davide Libenzi wrote:
quoted
Yes, it does even vanilla libxdiff ;) It's not a problem though, since it is
created in xdl_cleanup_records() that tries to do a fast pass over the records
to try to simplify the real diff operation. In trying to be fast, only hashes
are compared, and it happens that the hash for "'')" collides with another one
(try to replace one of the "'')" chars with another one). Why is this not a
problem? Because what this lead to is only lines to be marked as changed, with
a probability of about N/2^(8 * sizeof(long) - 1), even though they are not.
And this happens only during sequential groups of lines changed, that is when
the hash-colliding line is either at the begin or the end of the run.
Hmm. It's still ugly, though. No possibility to have a "clean up identical
initial and final lines" stage to get rid of extraneous bogus diffs?
It does ;) If you make the second hunk (the one with the '') line) to be 
the first, the shrink-initial-and-final lines optimizations will make it 
eat the '') line.

I look at diffs a lot, and while this may be rare, if I were to end up
having to wonder what the difference is and it turns out that it's just
due to a libxdelta thing, I'd be a bit irritated and wish it gave me a
proper diff..
Tomorrow I'll take a look at it.


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