# HG changeset patch # User Martin von Zweigbergk # Date 1420506724 28800 # Node ID ccbaa2ed11a4b8caa4f8589810b4bc5bf374af66 # Parent 4b56219a5ac2a7d353e379fd04f2339b2913e80a status: don't list files as both clean and deleted Tracked files that are deleted should always be reported as such, no matter what their state was in earlier revisions. This is encoded in in two conditions in the loop in basectx._buildstatus() for modified and added files, but the check is missing for clean files. We should check for clean files too, but instead of adding the check in a third place, move it earlier and skip most of the loop body for deleted files. diff -r 4b56219a5ac2 -r ccbaa2ed11a4 mercurial/context.py --- a/mercurial/context.py Mon Jan 05 16:52:12 2015 -0800 +++ b/mercurial/context.py Mon Jan 05 17:12:04 2015 -0800 @@ -140,16 +140,17 @@ deletedset = set(deleted) withflags = mf1.withflags() | mf2.withflags() for fn, mf2node in mf2.iteritems(): + if fn in deletedset: + continue if fn in mf1: - if (fn not in deletedset and - ((fn in withflags and mf1.flags(fn) != mf2.flags(fn)) or + if ((fn in withflags and mf1.flags(fn) != mf2.flags(fn)) or (mf1[fn] != mf2node and - (mf2node != _newnode or self[fn].cmp(other[fn]))))): + (mf2node != _newnode or self[fn].cmp(other[fn])))): modified.append(fn) elif listclean: clean.append(fn) del mf1[fn] - elif fn not in deletedset: + else: added.append(fn) removed = mf1.keys() if removed: diff -r 4b56219a5ac2 -r ccbaa2ed11a4 tests/test-status-rev.t --- a/tests/test-status-rev.t Mon Jan 05 16:52:12 2015 -0800 +++ b/tests/test-status-rev.t Mon Jan 05 17:12:04 2015 -0800 @@ -153,13 +153,10 @@ R content1_missing_content1-untracked R content1_missing_content3-untracked R content1_missing_missing-untracked -BROKEN: content1_content*_missing-tracked appear twice; should just be '!' $ hg status -A --rev 0 'glob:*_*_missing-tracked' ! content1_content1_missing-tracked ! content1_content2_missing-tracked ! content1_missing_missing-tracked ! missing_content2_missing-tracked ! missing_missing_missing-tracked - C content1_content1_missing-tracked - C content1_content2_missing-tracked $ hg status -A --rev 0 'glob:missing_*_missing-untracked'