Mercurial > hg
changeset 22188:0ad619c5e1a4
revert: use "remove" information from both statuses
Using status information against the target to make sure we are catching all
files that need to be re-added.
We still need to distinguish fresh removal because they use a different
message.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Tue, 24 Jun 2014 16:53:22 +0100 |
parents | aee5385e4bae |
children | cde6b489365c |
files | mercurial/cmdutil.py |
diffstat | 1 files changed, 7 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/cmdutil.py Fri Aug 01 18:27:47 2014 -0700 +++ b/mercurial/cmdutil.py Tue Jun 24 16:53:22 2014 +0100 @@ -2410,6 +2410,12 @@ dsadded |= _deletedadded dsmodified |= _deletedmodified + # only take into account for removes between wc and target + clean |= dsremoved - removed + dsremoved &= removed + # distinct between dirstate remove and other + removed -= dsremoved + # if f is a rename, update `names` to also revert the source cwd = repo.getcwd() for f in dsadded: @@ -2429,8 +2435,6 @@ dsmodified -= missingmodified missingadded = dsadded - smf dsadded -= missingadded - clean |= dsremoved - smf - dsremoved -= clean # action to be actually performed by revert # (<list of file>, message>) tuple @@ -2448,6 +2452,7 @@ (missingmodified, (actions['remove'], True)), (dsadded, (actions['revert'], True)), (missingadded, (actions['remove'], False)), + (removed, (actions['add'], True)), (dsremoved, (actions['undelete'], True)), (clean, (None, False)), )