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,17 +441,25 @@ class changelog(revlog.revlog):
|
|||||||
def tip(self):
|
def tip(self):
|
||||||
# type: () -> bytes
|
# type: () -> bytes
|
||||||
"""filtered version of revlog.tip"""
|
"""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):
|
for i in range(len(self) - 1, -2, -1):
|
||||||
# pyre-fixme[7]: Expected `bytes` but got implicit return value of `None`.
|
# pyre-fixme[7]: Expected `bytes` but got implicit return value of `None`.
|
||||||
return self.node(i)
|
return self.node(i)
|
||||||
|
|
||||||
def __contains__(self, rev):
|
def __contains__(self, rev):
|
||||||
"""filtered version of revlog.__contains__"""
|
"""filtered version of revlog.__contains__"""
|
||||||
return rev is not None and 0 <= rev < len(self)
|
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):
|
def __iter__(self):
|
||||||
"""filtered version of revlog.__iter__"""
|
"""filtered version of revlog.__iter__"""
|
||||||
return revlog.revlog.__iter__(self)
|
if self.userust("iter"):
|
||||||
|
return self.torevs(self.dag.all()).iterasc()
|
||||||
|
else:
|
||||||
|
return revlog.revlog.__iter__(self)
|
||||||
|
|
||||||
def __len__(self):
|
def __len__(self):
|
||||||
if self.userust("len"):
|
if self.userust("len"):
|
||||||
@ -461,6 +469,16 @@ class changelog(revlog.revlog):
|
|||||||
|
|
||||||
def revs(self, start=0, stop=None):
|
def revs(self, start=0, stop=None):
|
||||||
"""filtered version of revlog.revs"""
|
"""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):
|
for i in super(changelog, self).revs(start, stop):
|
||||||
yield i
|
yield i
|
||||||
|
|
||||||
|
@ -306,10 +306,12 @@ coreconfigitem("experimental", "rust-commits:ancestor", default=True)
|
|||||||
coreconfigitem("experimental", "rust-commits:ancestors", default=True)
|
coreconfigitem("experimental", "rust-commits:ancestors", default=True)
|
||||||
coreconfigitem("experimental", "rust-commits:children", default=True)
|
coreconfigitem("experimental", "rust-commits:children", default=True)
|
||||||
coreconfigitem("experimental", "rust-commits:commonancestorsheads", 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:descendants", default=True)
|
||||||
coreconfigitem("experimental", "rust-commits:findcommonmissing", default=True)
|
coreconfigitem("experimental", "rust-commits:findcommonmissing", default=True)
|
||||||
coreconfigitem("experimental", "rust-commits:index2", default=True)
|
coreconfigitem("experimental", "rust-commits:index2", default=True)
|
||||||
coreconfigitem("experimental", "rust-commits:isancestor", 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:len", default=True)
|
||||||
coreconfigitem("experimental", "rust-commits:node", default=True)
|
coreconfigitem("experimental", "rust-commits:node", default=True)
|
||||||
coreconfigitem("experimental", "rust-commits:nodesbetween", 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:reachableroots", default=True)
|
||||||
coreconfigitem("experimental", "rust-commits:rev", default=True)
|
coreconfigitem("experimental", "rust-commits:rev", default=True)
|
||||||
coreconfigitem("experimental", "rust-commits:revision", 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:revsetancestor", default=True)
|
||||||
coreconfigitem("experimental", "rust-commits:strip", 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", "single-head-per-branch", default=False)
|
||||||
coreconfigitem("experimental", "spacemovesdown", default=False)
|
coreconfigitem("experimental", "spacemovesdown", default=False)
|
||||||
|
Loading…
Reference in New Issue
Block a user