mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 08:47:12 +03:00
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.
This commit is contained in:
parent
b42457ae0a
commit
e6297851af
@ -23,6 +23,7 @@ from .node import (
|
||||
short,
|
||||
wdirid,
|
||||
wdirnodes,
|
||||
wdirrev,
|
||||
)
|
||||
from . import (
|
||||
encoding,
|
||||
@ -471,7 +472,7 @@ class changectx(basectx):
|
||||
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)
|
||||
|
@ -20,7 +20,6 @@ from .node import (
|
||||
hex,
|
||||
nullid,
|
||||
short,
|
||||
wdirrev,
|
||||
)
|
||||
from . import (
|
||||
bookmarks,
|
||||
@ -564,13 +563,17 @@ class localrepository(object):
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user