Mercurial > hg-stable
changeset 23403:edf29f9c15f0 stable
revert: look for copy information for all local modifications
Renaming a file over an existing one marks the file as modified. So we
track rename source in modified file too.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Tue, 25 Nov 2014 19:40:54 -0800 |
parents | 2963d5c9d90b |
children | b913c394386f dc4d2cd3aa3e c6329a0e8f94 |
files | mercurial/cmdutil.py tests/test-revert.t |
diffstat | 2 files changed, 11 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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':