Mercurial > hg
diff mercurial/copies.py @ 41752:012f695546aa
copies: respect narrowmatcher in "parent -> working dir" case
I don't know when this case happens and we don't seem to have tests
for it, but let's fix it anyway since I happened to notice it.
Differential Revision: https://phab.mercurial-scm.org/D5987
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Tue, 19 Feb 2019 10:31:06 -0800 |
parents | 35158796f52f |
children | 3158cb74fbca |
line wrap: on
line diff
--- a/mercurial/copies.py Wed Feb 20 15:39:01 2019 -0800 +++ b/mercurial/copies.py Tue Feb 19 10:31:06 2019 -0800 @@ -141,8 +141,8 @@ if limit >= 0 and not f.isintroducedafter(limit): return None -def _dirstatecopies(d, match=None): - ds = d._repo.dirstate +def _dirstatecopies(repo, match=None): + ds = repo.dirstate c = ds.copies().copy() for k in list(c): if ds[k] not in 'anm' or (match and not match(k)): @@ -221,11 +221,11 @@ if b.rev() is None: if a == b.p1(): # short-circuit to avoid issues with merge states - return _dirstatecopies(b, match) + return _dirstatecopies(b._repo, match) cm = _committedforwardcopies(a, b.p1(), match) # combine copies from dirstate if necessary - return _chain(a, b, cm, _dirstatecopies(b, match)) + return _chain(a, b, cm, _dirstatecopies(b._repo, match)) return _committedforwardcopies(a, b, match) def _backwardrenames(a, b): @@ -391,9 +391,11 @@ if not c1 or not c2 or c1 == c2: return {}, {}, {}, {}, {} + narrowmatch = c1.repo().narrowmatch() + # avoid silly behavior for parent -> working dir if c2.node() is None and c1.node() == repo.dirstate.p1(): - return repo.dirstate.copies(), {}, {}, {}, {} + return _dirstatecopies(repo, narrowmatch), {}, {}, {}, {} copytracing = repo.ui.config('experimental', 'copytrace') boolctrace = stringutil.parsebool(copytracing)