--- a/mercurial/cmdutil.py Sat Aug 30 02:30:24 2014 +0200
+++ b/mercurial/cmdutil.py Sat Aug 30 02:39:08 2014 +0200
@@ -2524,6 +2524,7 @@
unknown = set(changes[4])
unknown.update(changes[5])
clean = set(changes[6])
+ modadded = set()
# split between files known in target manifest and the others
smf = set(mf)
@@ -2554,6 +2555,9 @@
# distinct between dirstate remove and other
removed -= dsremoved
+ modadded = added & dsmodified
+ added -= modadded
+
# tell newly modified apart.
dsmodified &= modified
dsmodified |= modified & dsadded # dirstate added may needs backup
@@ -2653,6 +2657,8 @@
(added, actions['remove'], discard),
# Added in working directory
(dsadded, actions['forget'], discard),
+ # Added since target, have local modification
+ (modadded, actions['remove'], discard),
# Added since target but file is missing in working directory
(deladded, actions['drop'], discard),
# Removed since target, before working copy parent