# HG changeset patch # User Yuya Nishihara # Date 1408242931 -32400 # Node ID b9f7f3eeb99c206897beacc0eb323ab9c178e599 # Parent 6ff513495a8b0b01268254c384572b07cc9b2ae8 localrepo: extend "changeid in repo" to return True for workingctx revision This is necessary to implement "wc" symbol for workingctx, that will be used as follows: $ hg annotate -r wc FILE In principle, "rev in repo" should be True if "repo[rev]" can return a context object. But when it was implemented by ea3acaae25bb, lookup() had a long logic to map all sorts of changeids to nodes, and "None in repo" did crash because lookup() could not accept None. So I assume that the case of changeid=None was not considered. Now "None in repo" doesn't crash, it should be True for workingctx revision. Behavior of "changeid in repo": revision "null" existing rev None (workingctx) ---------- ------ ------------ ----------------- original* True True TypeError current True True False this patch True True True (*original: ea3acaae25bb) diff -r 6ff513495a8b -r b9f7f3eeb99c mercurial/localrepo.py --- a/mercurial/localrepo.py Mon Mar 16 13:41:45 2015 -0500 +++ b/mercurial/localrepo.py Sun Aug 17 11:35:31 2014 +0900 @@ -465,7 +465,8 @@ def __contains__(self, changeid): try: - return bool(self.lookup(changeid)) + self[changeid] + return True except error.RepoLookupError: return False