diff -r 2963d5c9d90b -r edf29f9c15f0 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Mon Nov 24 18:42:56 2014 -0800 +++ b/mercurial/cmdutil.py Tue Nov 25 19:40:54 2014 -0800 @@ -2531,12 +2531,16 @@ dsmodified = modified dsadded = added dsremoved = removed + # store all local modifications, useful later for rename detection + localchanges = dsmodified | dsadded modified, added, removed = set(), set(), set() else: changes = repo.status(node1=parent, match=m) dsmodified = set(changes[0]) dsadded = set(changes[1]) dsremoved = set(changes[2]) + # store all local modifications, useful later for rename detection + localchanges = dsmodified | dsadded # only take into account for removes between wc and target clean |= dsremoved - removed @@ -2570,7 +2574,7 @@ # if f is a rename, update `names` to also revert the source cwd = repo.getcwd() - for f in dsadded: + for f in localchanges: src = repo.dirstate.copied(f) # XXX should we check for rename down to target node? if src and src not in names and repo.dirstate[src] == 'r':