status: back out changeset 89f49813526c
authorMartin von Zweigbergk <martinvonz@google.com>
Tue, 12 Jan 2016 12:43:36 -0800
changeset 27747 54522bbe1597
parent 27746 f0e9f38d250f
child 27748 81b391a45264
status: back out changeset 89f49813526c This backs out 89f49813526c (status: change + back out == clean (API), 2016-01-04). Although correct, it turned out that it was just too slow. For example, 'hg status --rev .~1000 --rev .' on the Mozilla repo went from <1s to >30s on cold disk. So we go back to reporting reverted changes as modified instead of clean. These are rare anyway, as suggested by the fact that it had been broken since before Mercurial 2.0.
mercurial/context.py
tests/test-status.t
--- a/mercurial/context.py	Tue Jan 12 13:43:41 2016 -0800
+++ b/mercurial/context.py	Tue Jan 12 12:43:36 2016 -0800
@@ -140,9 +140,15 @@
                 added.append(fn)
             elif node2 is None:
                 removed.append(fn)
+            elif node2 != _newnode:
+                # The file was not a new file in mf2, so an entry
+                # from diff is really a difference.
+                modified.append(fn)
             elif flag1 != flag2:
                 modified.append(fn)
             elif self[fn].cmp(other[fn]):
+                # node2 was newnode, but the working file doesn't
+                # match the one in mf1.
                 modified.append(fn)
             else:
                 clean.append(fn)
--- a/tests/test-status.t	Tue Jan 12 13:43:41 2016 -0800
+++ b/tests/test-status.t	Tue Jan 12 12:43:36 2016 -0800
@@ -390,14 +390,6 @@
   reverting file
 #endif
 
-reverted and commit change should appear clean
-
-  $ hg ci -m a
-  $ hg status -A --rev 0 --rev 2
-  C file
-
-  $ cd ..
-
 hg status of binary file starting with '\1\n', a separator for metadata:
 
   $ hg init repo5