Mercurial > public > mercurial-scm > hg
view hgext/git/gitutil.py @ 47050:ce24a00fe7f0 stable
git: pass the correct type to the sqlite3 query for baselog.hasnode()
It looks like this function is mostly used in exchange (which isn't supported
now) and histedit (which crashes). But I did verify in a REPL that passing
bytes to `db.execute()` fails to find the row, whereas passing str works.
Differential Revision: https://phab.mercurial-scm.org/D10526
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Tue, 27 Apr 2021 17:54:08 -0400 |
parents | c7c1efdfd4de |
children | d55b71393907 |
line wrap: on
line source
"""utilities to assist in working with pygit2""" from __future__ import absolute_import from mercurial.node import bin, hex, nullid from mercurial import pycompat 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 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 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) nullgit = togitnode(nullid)