Mercurial > public > mercurial-scm > hg
view hgext/git/gitutil.py @ 52494:db6efd74cf14
git: add missing `repository.imanifestdict` methods to `gittreemanifest`
The next logical step was to explicitly subclass `repository.imanifestdict`, but
pytype flagged a few missing methods, because they're marked abstract.
File "/mnt/c/Users/Matt/hg/hgext/git/manifest.py", line 238, in copy:
Can't instantiate gittreemanifest with abstract methods dirs, fastdelta, set [not-instantiable]
File "/mnt/c/Users/Matt/hg/hgext/git/manifest.py", line 287, in read:
Can't instantiate gittreemanifest with abstract methods dirs, fastdelta, set [not-instantiable]
File "/mnt/c/Users/Matt/hg/hgext/git/manifest.py", line 309, in read:
Can't instantiate gittreemanifest with abstract methods dirs, fastdelta, set [not-instantiable]
I'm not bothering to figure out how to implement them- add them to appease
pytype, and put a TODO to fill in a proper implementation later.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Wed, 11 Dec 2024 02:02:34 -0500 |
parents | f4733654f144 |
children |
line wrap: on
line source
"""utilities to assist in working with pygit2""" from __future__ import annotations from mercurial.node import bin, sha1nodeconstants pygit2_module = None def get_pygit2(): global pygit2_module if pygit2_module is None: try: import pygit2 as pygit2_module # pytype: disable=import-error pygit2_module.InvalidSpecError except (ImportError, AttributeError): pass return pygit2_module def pygit2_version(): mod = get_pygit2() v = "N/A" if mod: try: v = mod.__version__ except AttributeError: pass return b"(pygit2 %s)" % v.encode("utf-8") def togitnode(n): """Wrapper to convert a Mercurial binary node to a unicode hexlified node. pygit2 and sqlite both need nodes as strings, not bytes. """ assert len(n) == 20 return n.hex() def fromgitnode(n): """Opposite of togitnode.""" assert len(n) == 40 return bin(n) nullgit = togitnode(sha1nodeconstants.nullid)