Mercurial > hg > mercurial-source
changeset 33443:a722c8e17363
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.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Fri, 19 Aug 2016 18:40:35 +0900 |
parents | 7b17f9de6d3e |
children | a3064fe3e495 |
files | mercurial/context.py mercurial/localrepo.py |
diffstat | 2 files changed, 8 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/context.py +++ b/mercurial/context.py @@ -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)
--- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -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