diff -r fd1bab28a8cc -r 2963d5c9d90b mercurial/context.py --- a/mercurial/context.py Wed Nov 26 14:54:16 2014 -0800 +++ b/mercurial/context.py Mon Nov 24 18:42:56 2014 -0800 @@ -1337,8 +1337,10 @@ else: wlock = self._repo.wlock() try: - if self._repo.dirstate[dest] in '?r': + if self._repo.dirstate[dest] in '?': self._repo.dirstate.add(dest) + elif self._repo.dirstate[dest] in 'r': + self._repo.dirstate.normallookup(dest) self._repo.dirstate.copy(source, dest) finally: wlock.release()