On Wed, May 21, 2008 at 03:14:46PM +0300, Pekka Pessi wrote: > Hello, > > The diff optimization with shiftBoundaries used by darcs whatsnew and > darcs record does not work properly with last (and first) hunk. The > culprit is in dropStart and dropEnd, which keep only one line of > context to perform the optimizations. Beside aesthetics the practical > consequence is that darcsum loses track of hunks that get moved after > hunks before or after them are recorded. > > The attached patch refactors the code so that the complete files gets > passed to shiftBoundaries. There is also a minor optimization handling > hash conflicts within one file only. > > The performance of darcs whatsnew seems to improve by 2..3 %, however, > the measurements were done with only one repository. > > Any comments on use of Haskell and programming style are greatly > appreciated...
Looks reasonable to me. The style looks generally fine, although I saw one place where you included unnecessary parentheses around a variable. If you're interested in improving the diff code even more, I think it'd be worth trying to implement the "patience diff" algorithm from bazaar, which is most likely simpler, and probably produces nicer diffs. Applied, and thanks! David > Wed May 21 14:36:55 EEST 2008 Pekka Pessi <[EMAIL PROTECTED]> > * getChanges with better shifting of first and last hunk with > shiftBoundaries > > The one-line context left with old dropStart and dropEnd is not always > enough. As a consequence first and last hunk in the file got treated > inconsistently by shiftBoundaries. > > The refactored code converts lists into PArrays already by getChanges, > dropStart and dropEnd advance bounds within PArray. > > getChanges' handles PArrays, and refactored code introduces minor > optimizations to hash handling (collisions within one file are not > propagated to diffArr). _______________________________________________ darcs-users mailing list [email protected] http://lists.osuosl.org/mailman/listinfo/darcs-users
