# HG changeset patch # User Matt Mackall # Date 1224321969 18000 # Node ID b801d6e5dc834a8fc5d2039d5800dfaf438996fa # Parent db7557359636017e4ebf55c3a8a8d3558a3a9eb3 rename: handle renaming to a target marked removed diff -r db7557359636 -r b801d6e5dc83 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Fri Oct 17 12:12:33 2008 +0200 +++ b/mercurial/cmdutil.py Sat Oct 18 04:26:09 2008 -0500 @@ -398,12 +398,12 @@ if state not in 'mn' and not dryrun: repo.dirstate.normallookup(abstarget) else: - if repo.dirstate[origsrc] == 'a': + if repo.dirstate[origsrc] == 'a' and origsrc == abssrc: if not ui.quiet: ui.warn(_("%s has not been committed yet, so no copy " "data will be stored for %s.\n") % (repo.pathto(origsrc, cwd), reltarget)) - if abstarget not in repo.dirstate and not dryrun: + if repo.dirstate[abstarget] in '?r' and not dryrun: repo.add([abstarget]) elif not dryrun: repo.copy(origsrc, abstarget) diff -r db7557359636 -r b801d6e5dc83 mercurial/localrepo.py --- a/mercurial/localrepo.py Fri Oct 17 12:12:33 2008 +0200 +++ b/mercurial/localrepo.py Sat Oct 18 04:26:09 2008 -0500 @@ -1149,7 +1149,7 @@ "symbolic link\n") % dest) else: wlock = self.wlock() - if dest not in self.dirstate: + if self.dirstate[dest] in '?r': self.dirstate.add(dest) self.dirstate.copy(source, dest) finally: