gitutil.py
48 lines
| 988 B
| text/x-python
|
PythonLexer
Augie Fackler
|
r44961 | """utilities to assist in working with pygit2""" | ||
Manuel Jacob
|
r50195 | from mercurial.node import bin, sha1nodeconstants | ||
Augie Fackler
|
r44961 | |||
Martin von Zweigbergk
|
r44968 | pygit2_module = None | ||
def get_pygit2(): | ||||
global pygit2_module | ||||
if pygit2_module is None: | ||||
try: | ||||
Matt Harbison
|
r50744 | import pygit2 as pygit2_module # pytype: disable=import-error | ||
Martin von Zweigbergk
|
r44968 | |||
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 | ||||
Manuel Jacob
|
r50195 | return n.hex() | ||
Augie Fackler
|
r44961 | |||
def fromgitnode(n): | ||||
"""Opposite of togitnode.""" | ||||
assert len(n) == 40 | ||||
return bin(n) | ||||
Joerg Sonnenberger
|
r47771 | nullgit = togitnode(sha1nodeconstants.nullid) | ||