Mercurial > hg
comparison mercurial/copies.py @ 30229:69ffbbe73dd0 stable
merge: avoid superfluous filemerges when grafting through renames (issue5407)
This is a fix for a regression introduced by the patches for issue4028.
The test changes are due to us doing fewer _checkcopies searches now, which
makes some test outputs revert to the pre-issue4028 behavior. That issue itself
remains fixed, we only skip copy tracing for files where it isn't relevant.
As a nice side effect, this makes copy detection much faster when tracing
backwards through lots of renames.
author | Gábor Stefanik <gabor.stefanik@nng.com> |
---|---|
date | Tue, 25 Oct 2016 21:01:53 +0200 |
parents | 87a7c0d403ff |
children | 0298a07f64d9 |
comparison
equal
deleted
inserted
replaced
30228:b9f7b0c10027 | 30229:69ffbbe73dd0 |
---|---|
629 # the base) this is more complicated as we must detect a divergence. | 629 # the base) this is more complicated as we must detect a divergence. |
630 # We use 'backwards = False' in that case. | 630 # We use 'backwards = False' in that case. |
631 backwards = not remotebase and base != tca and f in mb | 631 backwards = not remotebase and base != tca and f in mb |
632 getfctx = _makegetfctx(ctx) | 632 getfctx = _makegetfctx(ctx) |
633 | 633 |
634 if m1[f] == mb.get(f) and not remotebase: | |
635 # Nothing to merge | |
636 return | |
637 | |
634 of = None | 638 of = None |
635 seen = set([f]) | 639 seen = set([f]) |
636 for oc in getfctx(f, m1[f]).ancestors(): | 640 for oc in getfctx(f, m1[f]).ancestors(): |
637 ocr = oc.linkrev() | 641 ocr = oc.linkrev() |
638 of = oc.path() | 642 of = oc.path() |