diff --git a/mercurial/context.py b/mercurial/context.py --- a/mercurial/context.py +++ b/mercurial/context.py @@ -1913,7 +1913,7 @@ class overlayworkingctx(committablectx): if self.isdirty(path): return self._cache[path]['copied'] else: - raise error.ProgrammingError('copydata() called on clean context') + return None def flags(self, path): if self.isdirty(path): 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 @@ -774,8 +774,14 @@ Test rebasing a commit with copy informa $ hg co -q 0 $ hg mv a b $ hg ci -qm 'rename a to b' - $ hg rebase -d 1 2>&1 | grep '** ProgrammingError' - ** ProgrammingError: copydata() called on clean context + $ hg rebase -d 1 + rebasing 2:b977edf6f839 "rename a to b" (tip) + merging a and b to b + saved backup bundle to $TESTTMP/rebase-rename/.hg/strip-backup/b977edf6f839-0864f570-rebase.hg + $ hg st --copies --change . + A b + a + R a $ cd .. Test rebasing when the file we are merging in destination is empty