diff --git a/hggit/gitdirstate.py b/hggit/gitdirstate.py
index c1c2af8aecb30188cec7deb4a4f96a953b2a96fb_aGdnaXQvZ2l0ZGlyc3RhdGUucHk=..da01212cd53a11fa477b21924da5360e466cf9cd_aGdnaXQvZ2l0ZGlyc3RhdGUucHk= 100644
--- a/hggit/gitdirstate.py
+++ b/hggit/gitdirstate.py
@@ -163,7 +163,11 @@
         results, work, dirsnotfound = self._walkexplicit(match, subrepos)
 
         skipstep3 = skipstep3 and not (work or dirsnotfound)
-        work = [d for d in work if not dirignore(d)]
+        if work and isinstance(work[0], tuple):
+            # Mercurial >= 3.3.3
+            work = [nd for nd, d in work if not dirignore(d)]
+        else:
+            work = [d for d in work if not dirignore(d)]
         wadd = work.append
 
         # step 2: visit subdirectories