# HG changeset patch
# User Matt Harbison <matt_harbison@yahoo.com>
# Date 2020-11-26 20:09:57
# Node ID c7c1efdfd4dec044df57dd7f477e47165b576927
# Parent  a001e28ad5eb4ffb52a61f2371f64445cc918b5d

git: show the version of `pygit2` with verbose version output

This seems like useful info to have when debugging.  I followed the precedent of
hg-git, which prints something like:

      hggit        external  0.9.0a1 (dulwich 0.19.15)

We don't have a version number assigned (because it's internal), so it's just
the parenthetical.

Differential Revision: https://phab.mercurial-scm.org/D9436

diff --git a/hgext/git/__init__.py b/hgext/git/__init__.py
--- a/hgext/git/__init__.py
+++ b/hgext/git/__init__.py
@@ -44,6 +44,9 @@ configitem(
     default=False,
 )
 
+getversion = gitutil.pygit2_version
+
+
 # TODO: extract an interface for this in core
 class gitstore(object):  # store.basicstore):
     def __init__(self, path, vfstype):
diff --git a/hgext/git/gitutil.py b/hgext/git/gitutil.py
--- a/hgext/git/gitutil.py
+++ b/hgext/git/gitutil.py
@@ -20,6 +20,19 @@ def get_pygit2():
     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.
 
diff --git a/tests/test-git-interop.t b/tests/test-git-interop.t
--- a/tests/test-git-interop.t
+++ b/tests/test-git-interop.t
@@ -16,6 +16,10 @@ Setup:
   >  }
 
 
+  $ hg version -v --config extensions.git= | grep '^[E ]'
+  Enabled extensions:
+    git  internal  (pygit2 *) (glob)
+
 Test auto-loading extension works:
   $ mkdir nogit
   $ cd nogit