pulkit created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers.
REVISION SUMMARY This patch makes sure we don't consider the deleted files in our IMM wctx as potential conflicts while calculating paths conflicts. This fixes the bug demonstrated in previous patch. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D4543 AFFECTED FILES mercurial/context.py tests/test-rebase-inmemory.t CHANGE DETAILS diff --git a/tests/test-rebase-inmemory.t b/tests/test-rebase-inmemory.t --- a/tests/test-rebase-inmemory.t +++ b/tests/test-rebase-inmemory.t @@ -218,8 +218,25 @@ $ hg rebase -r . -d 5 rebasing 7:855e9797387e "added a back!" (tip) - abort: error: file 'a' cannot be written because 'a/' is a folder in 9b94b9373deb (containing 1 entries: a/a) - [255] + saved backup bundle to $TESTTMP/repo1/repo2/.hg/strip-backup/855e9797387e-81ee4c5d-rebase.hg + + $ hg tglog + @ 7: bb3f02be2688 'added a back!' + | + | o 6: d14530e5e3e6 'added bar' + | | + o | 5: 9b94b9373deb 'added foo' + |/ + o 4: c6ad37a4f250 'a/a' + | + | o 3: 844a7de3e617 'c' + | | + o | 2: 09c044d2cb43 'd' + | | + o | 1: fc055c3b4d33 'b' + |/ + o 0: b173517d0057 'a' + $ cd .. diff --git a/mercurial/context.py b/mercurial/context.py --- a/mercurial/context.py +++ b/mercurial/context.py @@ -1910,14 +1910,19 @@ # in p1 (test that p1 doesn't any paths matching `path/*`). match = matchmod.match('/', '', [path + '/'], default=b'relpath') matches = self.p1().manifest().matches(match) - if len(matches) > 0: - if len(matches) == 1 and matches.keys()[0] == path: + mfiles = matches.keys() + if len(mfiles) > 0: + if len(mfiles) == 1 and mfiles[0] == path: + return + # omit the files which are deleted in current IMM wctx + mfiles = [m for m in mfiles if self._cache[m]['exists']] + if not mfiles: return raise error.Abort("error: file '%s' cannot be written because " " '%s/' is a folder in %s (containing %d " "entries: %s)" - % (path, path, self.p1(), len(matches), - ', '.join(matches.keys()))) + % (path, path, self.p1(), len(mfiles), + ', '.join(mfiles))) def write(self, path, data, flags='', **kwargs): if data is None: To: pulkit, #hg-reviewers Cc: mercurial-devel _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel