Patchwork [3,of,4,STABLE] context.status: remove incorrect swapping of added/removed in workingctx

login
register
mail settings
Submitter Martin von Zweigbergk
Date Oct. 23, 2014, 9:39 p.m.
Message ID <2eb04f88de4b5103fb3c.1414100387@handduk2.mtv.corp.google.com>
Download mbox | patch
Permalink /patch/6456/
State Accepted
Headers show

Comments

Martin von Zweigbergk - Oct. 23, 2014, 9:39 p.m.
# HG changeset patch
# User Martin von Zweigbergk <martinvonz@google.com>
# Date 1414095679 25200
#      Thu Oct 23 13:21:19 2014 -0700
# Branch stable
# Node ID 2eb04f88de4b5103fb3c3584811b557b3ec2b771
# Parent  066f1db71b729c05d74418e214d21b377f51c396
context.status: remove incorrect swapping of added/removed in workingctx

The comment in workingctx.status() says that "calling 'super' subtly
reveresed the contexts", but that is simply not true, so we should not
be swapping added and removed fields.
Matt Mackall - Oct. 24, 2014, 10:16 p.m.
On Thu, 2014-10-23 at 14:39 -0700, Martin von Zweigbergk wrote:
> # HG changeset patch
> # User Martin von Zweigbergk <martinvonz@google.com>
> # Date 1414095679 25200
> #      Thu Oct 23 13:21:19 2014 -0700
> # Branch stable
> # Node ID 2eb04f88de4b5103fb3c3584811b557b3ec2b771
> # Parent  066f1db71b729c05d74418e214d21b377f51c396
> context.status: remove incorrect swapping of added/removed in workingctx
> 
> The comment in workingctx.status() says that "calling 'super' subtly
> reveresed the contexts", but that is simply not true, so we should not
> be swapping added and removed fields.

Thanks, these are now queued with a bit of reordering. I've put the
keyword change in first, followed by the other two changes folded into
one.

Patch

diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -1499,13 +1499,9 @@ 
                listclean=False, listunknown=False, listsubrepos=False):
         # yet to be determined: what to do if 'other' is a 'workingctx' or a
         # 'memctx'?
-        s = super(workingctx, self).status(other, match, listignored, listclean,
-                                           listunknown, listsubrepos)
-        # calling 'super' subtly reveresed the contexts, so we flip the results
-        # (s[1] is 'added' and s[2] is 'removed')
-        s = list(s)
-        s[1], s[2] = s[2], s[1]
-        return scmutil.status(*s)
+        return super(workingctx, self).status(other, match, listignored,
+                                              listclean, listunknown,
+                                              listsubrepos)
 
 class committablefilectx(basefilectx):
     """A committablefilectx provides common functionality for a file context
diff --git a/tests/test-diff-reverse.t b/tests/test-diff-reverse.t
--- a/tests/test-diff-reverse.t
+++ b/tests/test-diff-reverse.t
@@ -42,14 +42,24 @@ 
   -g
   -h
 
-BROKEN: should show removed file 'a' as being added
+should show removed file 'a' as being added
   $ hg revert a
   $ hg rm a
   $ hg diff --reverse --nodates a
+  diff -r 2855cdcfcbb7 a
+  --- /dev/null
+  +++ b/a
+  @@ -0,0 +1,3 @@
+  +d
+  +e
+  +f
 
-BROKEN: should show added file 'b' as being removed
+should show added file 'b' as being removed
   $ echo b >> b
   $ hg add b
   $ hg diff --reverse --nodates b
-  abort: b@2855cdcfcbb7: not found in manifest!
-  [255]
+  diff -r 2855cdcfcbb7 b
+  --- a/b
+  +++ /dev/null
+  @@ -1,1 +0,0 @@
+  -b