Mercurial > hg-stable
changeset 32598:5313d98089f5
copies: introduce getdstfctx
Previously `c2` may had an incorrect linkrev because getsrcfctx set wrong
_descendantrev. getsrcfctx() sets descendant rev equals to srcctx.rev() (see
_makegetfctx()), but for `c2` descendant rev should be dstctx. While we were
lucky it didn't broke copytracing it made it significantly slower in some
cases. Besides it broke some external extensions, for example remotefilelog.
author | Stanislau Hlebik <stash@fb.com> |
---|---|
date | Mon, 29 May 2017 06:06:13 -0700 |
parents | 6966e42f833a |
children | 1b90036f42f0 |
files | mercurial/copies.py |
diffstat | 1 files changed, 2 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/copies.py Mon May 29 05:58:08 2017 -0700 +++ b/mercurial/copies.py Mon May 29 06:06:13 2017 -0700 @@ -632,6 +632,7 @@ # We use 'backwards = False' in that case. backwards = not remotebase and base != tca and f in mb getsrcfctx = _makegetfctx(srcctx) + getdstfctx = _makegetfctx(dstctx) if msrc[f] == mb.get(f) and not remotebase: # Nothing to merge @@ -658,7 +659,7 @@ continue # no match, keep looking if mdst[of] == mb.get(of): return # no merge needed, quit early - c2 = getsrcfctx(of, mdst[of]) + c2 = getdstfctx(of, mdst[of]) # c2 might be a plain new file on added on destination side that is # unrelated to the droids we are looking for. cr = _related(oc, c2, tca.rev())