diff --git a/hggit/__init__.py b/hggit/__init__.py
index bd4674a5dee253d0131635324908aca43c189cf1_aGdnaXQvX19pbml0X18ucHk=..c53cf3e64409dcfd6792ee67caabc1a374f9aa24_aGdnaXQvX19pbml0X18ucHk= 100644
--- a/hggit/__init__.py
+++ b/hggit/__init__.py
@@ -133,7 +133,6 @@
 from . import templates
 from . import util
 
-from mercurial.node import bin
 from mercurial import (
     bundlerepo,
     demandimport,
@@ -142,7 +141,6 @@
     extensions,
     pycompat,
     registrar,
-    repoview,
 )
 
 demandimport.IGNORES |= {
@@ -173,6 +171,7 @@
 def extsetup(ui):
     commands.extsetup(ui)
     gitrepo.extsetup(ui)
+    hgrepo.extsetup(ui)
     overlay.extsetup(ui)
     revsets.extsetup(ui)
     schemes.extsetup(ui)
@@ -222,22 +221,6 @@
 extensions.wrapfunction(bundlerepo, b'getremotechanges', getremotechanges)
 
 
-def pinnedrevs(orig, repo):
-    pinned = orig(repo)
-
-    # Mercurial pins bookmarks, even if obsoleted, so that they always
-    # appear in e.g. log; do the same with git tags and remotes.
-    if repo.local() and hasattr(repo, 'githandler'):
-        rev = repo.changelog.rev
-
-        pinned.update(rev(bin(r)) for r in repo.githandler.tags.values())
-        pinned.update(rev(r) for r in repo.githandler.remote_refs.values())
-
-    return pinned
-
-extensions.wrapfunction(repoview, b'pinnedrevs', pinnedrevs)
-
-
 @util.transform_notgit
 def exchangepull(orig, repo, remote, heads=None, force=False, bookmarks=(),
                  **kwargs):
diff --git a/hggit/hgrepo.py b/hggit/hgrepo.py
index bd4674a5dee253d0131635324908aca43c189cf1_aGdnaXQvaGdyZXBvLnB5..c53cf3e64409dcfd6792ee67caabc1a374f9aa24_aGdnaXQvaGdyZXBvLnB5 100644
--- a/hggit/hgrepo.py
+++ b/hggit/hgrepo.py
@@ -1,5 +1,7 @@
 from __future__ import generator_stop
 
+from mercurial import extensions
+from mercurial import repoview
 from mercurial import util as hgutil
 from mercurial.node import bin
 
@@ -57,3 +59,20 @@
 
     repo.__class__ = hgrepo
 
+
+def pinnedrevs(orig, repo):
+    pinned = orig(repo)
+
+    # Mercurial pins bookmarks, even if obsoleted, so that they always
+    # appear in e.g. log; do the same with git tags and remotes.
+    if repo.local() and hasattr(repo, 'githandler'):
+        rev = repo.changelog.rev
+
+        pinned.update(rev(bin(r)) for r in repo.githandler.tags.values())
+        pinned.update(rev(r) for r in repo.githandler.remote_refs.values())
+
+    return pinned
+
+
+def extsetup(ui):
+    extensions.wrapfunction(repoview, b'pinnedrevs', pinnedrevs)