mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 16:57:49 +03:00
changelog: use Rust RevlogIndex for 'tip', '__iter__', '__contains__', 'revs'
Summary: Those methods are less fancy. Use the Rust path to avoid depending on revlog internals. Reviewed By: DurhamG Differential Revision: D22519588 fbshipit-source-id: 0fede55ee04373c069ae7a6dd727f4d7208ee321
This commit is contained in:
parent
3d9f195721
commit
4061daadb0
@ -441,16 +441,24 @@ class changelog(revlog.revlog):
|
||||
def tip(self):
|
||||
# type: () -> bytes
|
||||
"""filtered version of revlog.tip"""
|
||||
if self.userust("tip"):
|
||||
return self.dag.all().first() or nullid
|
||||
for i in range(len(self) - 1, -2, -1):
|
||||
# pyre-fixme[7]: Expected `bytes` but got implicit return value of `None`.
|
||||
return self.node(i)
|
||||
|
||||
def __contains__(self, rev):
|
||||
"""filtered version of revlog.__contains__"""
|
||||
if self.userust("contains"):
|
||||
return rev is not None and rev in self.torevs(self.dag.all())
|
||||
else:
|
||||
return rev is not None and 0 <= rev < len(self)
|
||||
|
||||
def __iter__(self):
|
||||
"""filtered version of revlog.__iter__"""
|
||||
if self.userust("iter"):
|
||||
return self.torevs(self.dag.all()).iterasc()
|
||||
else:
|
||||
return revlog.revlog.__iter__(self)
|
||||
|
||||
def __len__(self):
|
||||
@ -461,6 +469,16 @@ class changelog(revlog.revlog):
|
||||
|
||||
def revs(self, start=0, stop=None):
|
||||
"""filtered version of revlog.revs"""
|
||||
if self.userust("revs"):
|
||||
allrevs = self.torevs(self.dag.all())
|
||||
if stop is not None:
|
||||
# exclusive -> inclusive
|
||||
stop = stop - 1
|
||||
revs = bindings.dag.spans.unsaferange(start, stop) & allrevs
|
||||
for i in revs.iterasc():
|
||||
yield i
|
||||
return
|
||||
|
||||
for i in super(changelog, self).revs(start, stop):
|
||||
yield i
|
||||
|
||||
|
@ -306,10 +306,12 @@ coreconfigitem("experimental", "rust-commits:ancestor", default=True)
|
||||
coreconfigitem("experimental", "rust-commits:ancestors", default=True)
|
||||
coreconfigitem("experimental", "rust-commits:children", default=True)
|
||||
coreconfigitem("experimental", "rust-commits:commonancestorsheads", default=True)
|
||||
coreconfigitem("experimental", "rust-commits:contains", default=True)
|
||||
coreconfigitem("experimental", "rust-commits:descendants", default=True)
|
||||
coreconfigitem("experimental", "rust-commits:findcommonmissing", default=True)
|
||||
coreconfigitem("experimental", "rust-commits:index2", default=True)
|
||||
coreconfigitem("experimental", "rust-commits:isancestor", default=True)
|
||||
coreconfigitem("experimental", "rust-commits:iter", default=True)
|
||||
coreconfigitem("experimental", "rust-commits:len", default=True)
|
||||
coreconfigitem("experimental", "rust-commits:node", default=True)
|
||||
coreconfigitem("experimental", "rust-commits:nodesbetween", default=True)
|
||||
@ -319,8 +321,10 @@ coreconfigitem("experimental", "rust-commits:rawheadrevs", default=True)
|
||||
coreconfigitem("experimental", "rust-commits:reachableroots", default=True)
|
||||
coreconfigitem("experimental", "rust-commits:rev", default=True)
|
||||
coreconfigitem("experimental", "rust-commits:revision", default=True)
|
||||
coreconfigitem("experimental", "rust-commits:revs", default=True)
|
||||
coreconfigitem("experimental", "rust-commits:revsetancestor", default=True)
|
||||
coreconfigitem("experimental", "rust-commits:strip", default=True)
|
||||
coreconfigitem("experimental", "rust-commits:tip", default=True)
|
||||
|
||||
coreconfigitem("experimental", "single-head-per-branch", default=False)
|
||||
coreconfigitem("experimental", "spacemovesdown", default=False)
|
||||
|
Loading…
Reference in New Issue
Block a user