# HG changeset patch # User Yuya Nishihara # Date 1471599635 -32400 # Node ID a722c8e173634cc6dfe70cf6724ac3bdf9db8efb # Parent 7b17f9de6d3e3c3076337d5a06bc0e4753e9b4ef localrepo: map integer and hex wdir identifiers to workingctx changectx.__init__() is slightly modified to take str(wdirrev) as a valid integer revision (and raise WdirUnsupported exception.) Test will be added by the next patch. diff -r 7b17f9de6d3e -r a722c8e17363 mercurial/context.py --- a/mercurial/context.py Sat Aug 20 22:37:58 2016 +0900 +++ b/mercurial/context.py Fri Aug 19 18:40:35 2016 +0900 @@ -23,6 +23,7 @@ short, wdirid, wdirnodes, + wdirrev, ) from . import ( encoding, @@ -471,7 +472,7 @@ l = len(repo.changelog) if r < 0: r += l - if r < 0 or r >= l: + if r < 0 or r >= l and r != wdirrev: raise ValueError self._rev = r self._node = repo.changelog.node(r) diff -r 7b17f9de6d3e -r a722c8e17363 mercurial/localrepo.py --- a/mercurial/localrepo.py Sat Aug 20 22:37:58 2016 +0900 +++ b/mercurial/localrepo.py Fri Aug 19 18:40:35 2016 +0900 @@ -20,7 +20,6 @@ hex, nullid, short, - wdirrev, ) from . import ( bookmarks, @@ -564,13 +563,17 @@ return nullid def __getitem__(self, changeid): - if changeid is None or changeid == wdirrev: + if changeid is None: return context.workingctx(self) if isinstance(changeid, slice): + # wdirrev isn't contiguous so the slice shouldn't include it return [context.changectx(self, i) for i in xrange(*changeid.indices(len(self))) if i not in self.changelog.filteredrevs] - return context.changectx(self, changeid) + try: + return context.changectx(self, changeid) + except error.WdirUnsupported: + return context.workingctx(self) def __contains__(self, changeid): """True if the given changeid exists