diff --git a/hgext3rd/fbconduit.py b/hgext3rd/fbconduit.py
--- a/hgext3rd/fbconduit.py
+++ b/hgext3rd/fbconduit.py
@@ -43,7 +43,6 @@
 
     revset.symbols['gitnode'] = gitnode
     extensions.wrapfunction(revset, 'stringset', overridestringset)
-    revset.symbols['stringset'] = revset.stringset
     revset.methods['string'] = revset.stringset
     revset.methods['symbol'] = revset.stringset
 
@@ -224,7 +223,7 @@
     rn = repo[node.bin(hghash)].rev()
     return subset.filter(lambda r: r == rn)
 
-def overridestringset(orig, repo, subset, x):
+def overridestringset(orig, repo, subset, x, *args, **kwargs):
     # Is the given revset a phabricator hg hash (ie: rHGEXTaaacb34aacb34aa)
     phabmatch = phabhashre.match(x)
     if phabmatch:
@@ -262,4 +261,4 @@
             return gitnode(repo, subset, ('string', githash))
         else:
             raise error.Abort('git hash must be 40 characters')
-    return orig(repo, subset, x)
+    return orig(repo, subset, x, *args, **kwargs)
diff --git a/hgext3rd/gitrevset.py b/hgext3rd/gitrevset.py
--- a/hgext3rd/gitrevset.py
+++ b/hgext3rd/gitrevset.py
@@ -12,14 +12,21 @@
   $ hg id -r 'g$HASH'
 
 """
-from mercurial import extensions
-from mercurial import error
-from mercurial import hg
-from mercurial import registrar
-from mercurial import revset
+
+from __future__ import absolute_import
+
+from mercurial (
+    error,
+    extensions,
+    hg,
+    registrar,
+    revset,
+)
 from mercurial.i18n import _
 import re
 
+revsetpredicate = registrar.revsetpredicate()
+
 githashre = re.compile('g([0-9a-fA-F]{40,40})')
 
 templatekeyword = registrar.templatekeyword()
@@ -32,6 +39,7 @@
     # data exists
     return hexgitnode.encode('hex') if hexgitnode else ''
 
+@revsetpredicate('gitnode(id)')
 def gitnode(repo, subset, x):
     """``gitnode(id)``
     Return the hg revision corresponding to a given git rev."""
@@ -73,15 +81,13 @@
         finally:
             repo.baseui.fout = oldfout
 
-def overridestringset(orig, repo, subset, x):
+def overridestringset(orig, repo, subset, x, *args, **kwargs):
     m = githashre.match(x)
     if m is not None:
         return gitnode(repo, subset, ('string', m.group(1)))
-    return orig(repo, subset, x)
+    return orig(repo, subset, x, *args, **kwargs)
 
 def extsetup(ui):
-    revset.symbols['gitnode'] = gitnode
     extensions.wrapfunction(revset, 'stringset', overridestringset)
-    revset.symbols['stringset'] = revset.stringset
     revset.methods['string'] = revset.stringset
     revset.methods['symbol'] = revset.stringset
diff --git a/hgext3rd/phrevset.py b/hgext3rd/phrevset.py
--- a/hgext3rd/phrevset.py
+++ b/hgext3rd/phrevset.py
@@ -268,17 +268,16 @@
             raise error.Abort('Conduit returned unknown '
                                'sourceControlSystem "%s"' % vcs)
 
-def revsetstringset(orig, repo, subset, revstr):
+def revsetstringset(orig, repo, subset, revstr, *args, **kwargs):
     """Wrapper that recognizes revisions starting with 'D'"""
 
     if revstr.startswith('D') and revstr[1:].isdigit():
         return smartset.baseset(revsetdiff(repo, subset, revstr[1:]))
 
-    return orig(repo, subset, revstr)
+    return orig(repo, subset, revstr, *args, **kwargs)
 
 def extsetup(ui):
     extensions.wrapfunction(revset, 'stringset', revsetstringset)
-    revset.symbols['stringset'] = revset.stringset
     revset.methods['string'] = revset.stringset
     revset.methods['symbol'] = revset.stringset