D4543: context: don't count deleted files as candidates for path conflicts in IMM
pulkit (Pulkit Goyal)
phabricator at mercurial-scm.org
Wed Sep 12 15:40:12 UTC 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rHGfa4d16daf1be: context: don't count deleted files as candidates for path conflicts in IMM (authored by pulkit, committed by ).
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D4543?vs=10949&id=10952
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
More information about the Mercurial-devel
mailing list