Ignore obsolete changesets in GitLab branches and tags
It is a major design assumption that entries in GitLab state files for branches and tags should not contain obsolete changesets.
If that happens in practice, that's a bug, but revision.gitlab_revision_changeset
should just ignore it and return None
when not on the unfiltered repo, instead of such tracebacks:
File "/home/hg/venv/lib/python3.9/site-packages/hgitaly/service/repository.py", line 486, in CreateBundleFromRefList
incl_shas, excl_shas = resolve_revspecs_positive_negative(
File "/home/hg/venv/lib/python3.9/site-packages/hgitaly/revision.py", line 172, in resolve_revspecs_positive_negative
sha = gitlab_revision_hash(repo, rev)
File "/home/hg/venv/lib/python3.9/site-packages/hgitaly/revision.py", line 119, in gitlab_revision_hash
ctx = gitlab_revision_changeset(repo, revision)
File "/home/hg/venv/lib/python3.9/site-packages/hgitaly/revision.py", line 81, in gitlab_revision_changeset
return gitlab_branch_head(repo, gl_branch)
File "/home/hg/venv/lib/python3.9/site-packages/hgitaly/branch.py", line 112, in gitlab_branch_head
return repo[sha]
File "/home/hg/venv/lib/python3.9/site-packages/mercurial/localrepo.py", line 1944, in __getitem__
raise error.FilteredRepoLookupError(
In the example traceback, a backup failed because of this.