rust-revlog: fix RevlogEntry.data() for NULL_REVISION
Before this change, the pseudo-entry returned by `Revlog.get_entry` for
`NULL_REVISION` would trigger errors in application code using it.
For example, this fixes a crash spotted with changelog data
while implementing RHGitaly: `Changelog.data_for_rev(-1)` was already
returning the pseudo content as expected, e.g., for `hg log`, but
`Changelog.entry_for_rev(-1).data()` would still crash with
"corrupted revlog, hash check failed for revision -1". There is
an added test for this scenario.
from mercurial.i18n import _
from mercurial import (
hg,
registrar,
)
from mercurial.utils import (
urlutil,
)
cmdtable = {}
command = registrar.command(cmdtable)
@command(b'getflogheads', [], b'path')
def getflogheads(ui, repo, path):
"""
Extension printing a remotefilelog's heads
Used for testing purpose
"""
dest = urlutil.get_unique_pull_path_obj(b'getflogheads', ui)
peer = hg.peer(repo, {}, dest)
try:
flogheads = peer.x_rfl_getflogheads(path)
finally:
peer.close()
if flogheads:
for head in flogheads:
ui.write(head + b'\n')
else:
ui.write(_(b'EMPTY\n'))