[PATCH] context.status: restrict reversed deleted/unknown/ignored fields even more

Martin von Zweigbergk martinvonz at google.com
Fri Nov 14 17:00:00 CST 2014


# HG changeset patch
# User Martin von Zweigbergk <martinvonz at google.com>
# Date 1416005592 28800
#      Fri Nov 14 14:53:12 2014 -0800
# Node ID c43495015e452cba1223fadf2958b4d1f00898fa
# Parent  dd3f857598a0625305b106323544df425efeaf84
context.status: restrict reversed deleted/unknown/ignored fields even more

In c10dc5568069 (context.status: wipe deleted/unknown/ignored fields
when reversed, 2014-11-12), we set these fields to []. Let's take it
one step further and set them to None so we prevent iteration over
them and make any confused callers fail fast.

diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -306,9 +306,9 @@
                               listunknown)
 
         if reversed:
-            # Reverse added and removed. Clear deleted, unknown and ignored as
-            # these make no sense to reverse.
-            r = scmutil.status(r.modified, r.removed, r.added, [], [], [],
+            # Reverse added and removed. Deleted, unknown and ignored make no
+            # sense to reverse; use None to prevent users from iterating..
+            r = scmutil.status(r.modified, r.removed, r.added, None, None, None,
                                r.clean)
 
         if listsubrepos:
@@ -326,7 +326,8 @@
                                            "subrepository: %s\n") % subpath)
 
         for l in r:
-            l.sort()
+            if l is not None:
+                l.sort()
 
         return r
 
diff --git a/tests/test-context.py.out b/tests/test-context.py.out
--- a/tests/test-context.py.out
+++ b/tests/test-context.py.out
@@ -2,7 +2,7 @@
 ASCII   : Gr?ezi!
 Latin-1 : Grüezi!
 UTF-8   : Grüezi!
-<status modified=['foo'], added=[], removed=[], deleted=[], unknown=[], ignored=[], clean=[]>
+<status modified=['foo'], added=[], removed=[], deleted=None, unknown=None, ignored=None, clean=[]>
 diff --git a/foo b/foo
 
 --- a/foo


More information about the Mercurial-devel mailing list