changelog: bypass revlog APIs if Rust DAG is used

Summary:
The changegroup logic uses those APIs, which uses low-level revlog details like
the C index.  Bypass them if the Rust DAG is used.

Reviewed By: DurhamG

Differential Revision: D22519583

fbshipit-source-id: 228c7ba0a8ea77c0cf85db39d1194274d6331416
This commit is contained in:
Jun Wu 2020-07-30 19:58:13 -07:00 committed by Facebook GitHub Bot
parent 4061daadb0
commit 20b1d3879c
2 changed files with 15 additions and 0 deletions

View File

@ -955,6 +955,20 @@ class changelog(revlog.revlog):
else:
return super(changelog, self).parentrevs(rev)
def deltaparent(self, rev):
if self.userust("bypassrevlog"):
# Changelog does not have deltaparent
return nullrev
else:
return super(changelog, self).deltaparent(rev)
def flags(self, rev):
if self.userust("bypassrevlog"):
# Changelog does not have deltaparent
return 0
else:
return super(changelog, self).flags(rev)
def readfiles(text):
# type: (bytes) -> List[str]

View File

@ -304,6 +304,7 @@ coreconfigitem("experimental", "remotenames", default=False)
coreconfigitem("experimental", "rust-commits", default=util.istest())
coreconfigitem("experimental", "rust-commits:ancestor", default=True)
coreconfigitem("experimental", "rust-commits:ancestors", default=True)
coreconfigitem("experimental", "rust-commits:bypassrevlog", default=True)
coreconfigitem("experimental", "rust-commits:children", default=True)
coreconfigitem("experimental", "rust-commits:commonancestorsheads", default=True)
coreconfigitem("experimental", "rust-commits:contains", default=True)