revlog: split revlog v1 and revlog v2 handling
Explicitly splitting their fields packing and unpacking makes it easier to
extend the existing C implemenation to handle the new changelog format, whose
fields and offsets are not simply a superset of the revlog.
Differential Revision: https://phab.mercurial-scm.org/D12137
revlog: extract entry byte offsets into named constants
Labelling the fields pointed by the given offsets shared by revlog v1 and v2.
Differential Revision: https://phab.mercurial-scm.org/D12136
doc: inspect.getargspec has been removed in Python 3.11
Fixed by dropping the inspection introduced in
cdda48c93676. The 2nd "reporter"
parameter to docutils.languages.get_language has been available since 0.8 more
than 10 years ago.
Reported for Fedora on https://bugzilla.redhat.com/show_bug.cgi?id=2022252#c2 .
branchmap: split a long condition in branchcache.validfor(), add comments
Differential Revision: https://phab.mercurial-scm.org/D12138
branchmap: don't add branch entries if there are no heads
We definitely don't want any empty entries to be present in repo.branchmap()
just for the sake of not breaking test-notify.t.
No test changes required because the previous patch made notify extension to
not raise any tracebacks in case of RepoLookupErrors.
Differential Revision: https://phab.mercurial-scm.org/D12135
notify: don't produce errors if a revision is not found
Notify extension has a way to only subscribe to a specific revset, such as
"branch(foo)". Before this patch, when there was no branch with that name, it
would produce a traceback saying "unknown revision: foo". With this patch it
would no longer do that, and instead it'll assume there are no revisions that
match this revset. I think this patch is an improvement in general, but there's
a reason I'm sending it now.
test-notify.t has a test case where it obsoletes the only revision on a branch,
and previously that wouldn't produce any complications, because head
computation wasn't obsolescence-aware. Now if the only revision on a branch is
obsolete, repo should not see that branch at all.
That branch will still be present in branchcache (with an empty list of
revisions) until the next patch.
Differential Revision: https://phab.mercurial-scm.org/D12134