gitutil.py
53 lines
| 1.1 KiB
| text/x-python
|
PythonLexer
Augie Fackler
|
r44961 | """utilities to assist in working with pygit2""" | ||
from __future__ import absolute_import | ||||
Joerg Sonnenberger
|
r47771 | from mercurial.node import bin, hex, sha1nodeconstants | ||
Augie Fackler
|
r44961 | |||
from mercurial import pycompat | ||||
Martin von Zweigbergk
|
r44968 | pygit2_module = None | ||
def get_pygit2(): | ||||
global pygit2_module | ||||
if pygit2_module is None: | ||||
try: | ||||
import pygit2 as pygit2_module | ||||
pygit2_module.InvalidSpecError | ||||
except (ImportError, AttributeError): | ||||
pass | ||||
return pygit2_module | ||||
Augie Fackler
|
r44961 | |||
Matt Harbison
|
r46562 | 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") | ||||
Augie Fackler
|
r44961 | 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 pycompat.sysstr(hex(n)) | ||||
def fromgitnode(n): | ||||
"""Opposite of togitnode.""" | ||||
assert len(n) == 40 | ||||
if pycompat.ispy3: | ||||
return bin(n.encode('ascii')) | ||||
return bin(n) | ||||
Joerg Sonnenberger
|
r47771 | nullgit = togitnode(sha1nodeconstants.nullid) | ||