Mercurial > hg-stable
diff mercurial/context.py @ 42865:2b869a515ba6
context: filter out invalid copies from workingctx.p[12]copies()
workingctx normally gets its lists of modified, added, removed files
etc. based on the dirstate status. Its constructor also accepts a
"changes" argument to override the status from the dirstate. This is
used for partial commits. If a "changed" argument was passed, we
should clearly also filter out copies to those paths, which I had
previously missed. This patch adds that filtering and fixes the bugs
demonstrated in the previous patch.
Differential Revision: https://phab.mercurial-scm.org/D6750
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Mon, 19 Aug 2019 15:43:27 -0700 |
parents | e75981b7ce84 |
children | 008e74b34fb7 |
line wrap: on
line diff
--- a/mercurial/context.py Mon Aug 19 12:30:02 2019 -0700 +++ b/mercurial/context.py Mon Aug 19 15:43:27 2019 -0700 @@ -1558,9 +1558,10 @@ parents = self._repo.dirstate.parents() p1manifest = self._repo[parents[0]].manifest() p2manifest = self._repo[parents[1]].manifest() + changedset = set(self.added()) | set(self.modified()) narrowmatch = self._repo.narrowmatch() for dst, src in self._repo.dirstate.copies().items(): - if not narrowmatch(dst): + if dst not in changedset or not narrowmatch(dst): continue if src in p1manifest: p1copies[dst] = src