[PATCH 1 of 8 RFC] localrepo: extend "changeid in repo" to return True for workingctx revision

Pierre-Yves David pierre-yves.david at ens-lyon.org
Tue Aug 19 18:41:29 CDT 2014



On 08/19/2014 03:56 PM, Yuya Nishihara wrote:
> # HG changeset patch
> # User Yuya Nishihara <yuya at tcha.org>
> # Date 1408242931 -32400
> #      Sun Aug 17 11:35:31 2014 +0900
> # Node ID 0e8b104fd419419ddf9ec3c9df4df1991e9ba3a5
> # Parent  8dda6f6ff564d8fe6ac7b8ce4c74eb9bfb5de14a
> localrepo: extend "changeid in repo" to return True for workingctx revision

I love the idea of having annotate agains working directory (could 
probably be extended to some other command) but I'm really not a fan of 
messing with the revision rumbering.

Is there a way to get the same feature without messaging with a 9 yeah 
old numerotation scheme?

>
> This is necessary to implement revision specifier for workingctx, that will
> be used like
>
>      $ hg annotate -r workingdir FILE
>
> In principle, "rev in repo" should be True if "repo[rev]" can return context
> object.  But when it was implemented by ea3acaae25bb, lookup() had long logic
> to map all sorts of changeid to node, and "None in repo" did crash because
> lookup() did not support it.  So I guess the case of changeid=None was not
> considered.
>
> Since now "None in repo" doesn't crash, it should be True for workingctx
> revision.
>
> Behavior of "changeid in repo":
>
>       X in repo  "null"  existing rev  None (workingctx)
>      ----------  ------  ------------  -----------------
>      original*   True    True          TypeError
>      current     True    True          False
>      this patch  True    True          True
>
>      (*original: ea3acaae25bb)
>
> diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
> --- a/mercurial/localrepo.py
> +++ b/mercurial/localrepo.py
> @@ -449,7 +449,8 @@ class localrepository(object):
>
>       def __contains__(self, changeid):
>           try:
> -            return bool(self.lookup(changeid))
> +            self[changeid]
> +            return True
>           except error.RepoLookupError:
>               return False
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
>

-- 
Pierre-Yves David


More information about the Mercurial-devel mailing list