On Tue, Jun 14, 2011 at 05:21:27PM +0200, Neels J Hofmeyr wrote: > Hi Johan, > > it's been a while and I still haven't sent you my diff wish we briefly > touched on the Subversion hackathon. > > Here is a fabricated example of why I don't like diff to match empty lines:
> A couple of lines get replaced by completely different ones. By matching the > blank line in the middle, it becomes far less readable, IMHO. In my fantasy > dream world, this diff would print: > > [[[ > Index: x > =================================================================== > --- x (revision 1) > +++ x (working copy) > @@ -4,11 +4,13 @@ > > void aaa() > { > - if (x) > - do(things); > - > - if (y) > - do(stuff); > + while (x || y) > + { > + check(something); > + notify(stuff); > + > + try(somethingelse); > + } > > bb(b); > } > ]]] Actually, I was already planning on making the LCS algorithm estimate how statistically significant each matching section is (just a simple heuristic, of course, nothing mathematically exact) - I need this for the proposals in my recent thread "Improvements to diff3 (merge) performance" - and the standard diff could then take an option -noflukes (for instance) which would only keep the significant matches. That should eliminate (or at least reduce) both problems with blank lines and similar issues with braces being matched in unrelated code. Estimating the significance should be quite quick, so no worries there. --- Morten