[PATCH 2 of 6 V2] context: remove unreliable accessor methods from committablectx

FUJIWARA Katsunori foozy at lares.dti.ne.jp
Wed Dec 31 03:29:49 CST 2014


At Wed, 31 Dec 2014 17:58:07 +0900,
FUJIWARA Katsunori wrote:
> 
> # HG changeset patch
> # User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
> # Date 1420016143 -32400
> #      Wed Dec 31 17:55:43 2014 +0900
> # Node ID 096d94e1da4c704dbda74d9da247f04dad3f3541
> # Parent  bce1ac4b56fe44996029885129e69dd8f803c7f7
> context: remove unreliable accessor methods from committablectx
> 
> There are two caching routes for (propertycache-ed) "_status" below in
> committablectx:
> 
>   - invoking "status()":
> 
>     "dirstate.status()" is invoked, and the result of it is cached
>     into "_status". In this case, any of "listignored", "listclean"
>     and "listunknown" may be True.
> 
>   - accessing "_status" directly before "status()":
> 
>     Own "status()" is invoked, but all of "listignored", "listclean"
>     and "listunknown" arguments are False, in this case.
> 
> "ignored"/"clean"/"unknown" accessor methods of "committablectx" use
> corresponded fields of "_status", but these fields aren't reliable,
> because these fields are empty when:
> 
>   - "_status" method is executed before accessors, or
>   - "status()" is executed with "list*=False" before accessors
> 
> In addition to it, these accessors aren't used in the recent Mercurial
> implementation. At least, removing them doesn't cause any test
> failures.

To confirm "not used in the recent Mercurial implementation", I also
checked that there is no code path using them of workingctx in output
of "grep" for '\.ignored', '\.clean' and '\.unknown' patterns (not
just remove-and-test :-))


> diff --git a/mercurial/context.py b/mercurial/context.py
> --- a/mercurial/context.py
> +++ b/mercurial/context.py
> @@ -1112,12 +1112,6 @@
>          return self._status.removed
>      def deleted(self):
>          return self._status.deleted
> -    def unknown(self):
> -        return self._status.unknown
> -    def ignored(self):
> -        return self._status.ignored
> -    def clean(self):
> -        return self._status.clean
>      def branch(self):
>          return encoding.tolocal(self._extra['branch'])
>      def closesbranch(self):
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel

----------------------------------------------------------------------
[FUJIWARA Katsunori]                             foozy at lares.dti.ne.jp


More information about the Mercurial-devel mailing list