changeset 23730:4b56219a5ac2

status: don't list files as both removed and deleted When calculating status involving the working copy and a revision other than the parent of the working copy, the files that are not in the working context manifest ('mf2' in the basectx._buildstatus()) will be reported as removed (note that deleted files _are_ in the working context manifest). However, if the file is reported as deleted in the dirstate, it will get that status too (as shown by failing tests). Fix by removing deleted files from the 'removed' list after the main loop in _buildstatus().
author Martin von Zweigbergk <martinvonz@google.com>
date Mon, 05 Jan 2015 16:52:12 -0800
parents 07a6faf939dc
children ccbaa2ed11a4
files mercurial/context.py tests/test-revert.t tests/test-status-rev.t
diffstat 3 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/context.py	Tue Jan 06 11:23:38 2015 -0800
+++ b/mercurial/context.py	Mon Jan 05 16:52:12 2015 -0800
@@ -156,6 +156,8 @@
             # need to filter files if they are already reported as removed
             unknown = [fn for fn in unknown if fn not in mf1]
             ignored = [fn for fn in ignored if fn not in mf1]
+            # if they're deleted, don't report them as removed
+            removed = [fn for fn in removed if fn not in deletedset]
 
         return scmutil.status(modified, added, removed, deleted, unknown,
                               ignored, clean)
--- a/tests/test-revert.t	Tue Jan 06 11:23:38 2015 -0800
+++ b/tests/test-revert.t	Mon Jan 05 16:52:12 2015 -0800
@@ -679,7 +679,6 @@
   R content1_content2_missing-untracked
   R content1_missing_content1-untracked
   R content1_missing_content3-untracked
-  R content1_missing_missing-tracked
   R content1_missing_missing-untracked
   ! content1_content1_missing-tracked
   ! content1_content2_missing-tracked
--- a/tests/test-status-rev.t	Tue Jan 06 11:23:38 2015 -0800
+++ b/tests/test-status-rev.t	Mon Jan 05 16:52:12 2015 -0800
@@ -153,9 +153,8 @@
   R content1_missing_content1-untracked
   R content1_missing_content3-untracked
   R content1_missing_missing-untracked
-BROKEN: content1_*_missing-tracked appear twice; should just be '!'
+BROKEN: content1_content*_missing-tracked appear twice; should just be '!'
   $ hg status -A --rev 0 'glob:*_*_missing-tracked'
-  R content1_missing_missing-tracked
   ! content1_content1_missing-tracked
   ! content1_content2_missing-tracked
   ! content1_missing_missing-tracked