diff mercurial/localrepo.py @ 14500:e880433a2e00 stable

localrepo: don't add deleted files to list of modified/added files (issue2761) If a file is deleted (rm, not 'hg rm') from the working dir an attempt to run 'hg diff -r X', with the file being present in X will cause an abort. We didn't check if the file has been deleted from the working dir and later on tried to open it to compare with the one from X, causing the abort. This fix adds that check. Consequently, no output will be returned.
author Idan Kamara <idankk86@gmail.com>
date Mon, 11 Apr 2011 21:44:22 +0300
parents a281981e2033
children 4f695345979c
line wrap: on
line diff
--- a/mercurial/localrepo.py	Mon Apr 04 22:51:10 2011 +0300
+++ b/mercurial/localrepo.py	Mon Apr 11 21:44:22 2011 +0300
@@ -1233,14 +1233,15 @@
             modified, added, clean = [], [], []
             for fn in mf2:
                 if fn in mf1:
-                    if (mf1.flags(fn) != mf2.flags(fn) or
-                        (mf1[fn] != mf2[fn] and
-                         (mf2[fn] or ctx1[fn].cmp(ctx2[fn])))):
+                    if (fn not in deleted and
+                        (mf1.flags(fn) != mf2.flags(fn) or
+                         (mf1[fn] != mf2[fn] and
+                          (mf2[fn] or ctx1[fn].cmp(ctx2[fn]))))):
                         modified.append(fn)
                     elif listclean:
                         clean.append(fn)
                     del mf1[fn]
-                else:
+                elif fn not in deleted:
                     added.append(fn)
             removed = mf1.keys()