[PATCH v3] diff: search beyond ancestor when detecting renames
mads at kiilerich.com
Mon Jan 13 07:34:32 CST 2014
On 01/13/2014 08:01 AM, Pierre-Yves David wrote:
> On Sun, Jan 12, 2014 at 08:01:09PM +0100, Mads Kiilerich wrote:
>> # HG changeset patch
>> # User Mads Kiilerich <madski at unity3d.com>
>> # Date 1384634789 18000
>> # Sat Nov 16 15:46:29 2013 -0500
>> # Node ID 41372107d64bc9071b4ff24046965c3c59d54c38
>> # Parent 57abc08c399b28aa86248f6db2cc63a7cf0b0f13
>> diff: search beyond ancestor when detecting renames
>> This removes an optimization that was introduced in 91eb4512edd0 but was too
>> aggressive - as indicated by how it changed test-mq-merge.t .
> Patch looks good to me. A bit worried about the performance hit. Did you
> gathered some number?
No. But this is a matter of correctness so a performance hit would be
ok. Incorrect diffs has in some cases made a big impact on our team
performance when reviewing moved files ;-).
The code already walks the filelogs back to the ancestor for all missing
The change adds a single call to _findlimit. It will efficiently walk
the changeset DAG back to the ancestor (and a bit further) ... and we
will in worst case walk the filelogs one extra step back.
I don't expect that to be a problem.
Some quick benchmarks shows something like 2% extra for a huge diff --stat.
This code could be optimized for some trivial cases (where it probably
doesn't matter anyway) by only computing the limit if there actually is
missing files ... but I doubt that would be worth it.
More information about the Mercurial-devel