# HG changeset patch
# User Kevin Bullock <kbullock@ringworld.org>
# Date 1518064952 21600
#      Wed Feb 07 22:42:32 2018 -0600
# Node ID 56a3fc2086b359062f7eae2f1820e39e1d23fed4
# Parent  583ac3ddd54b02a0d69b86d743887bfdb99e457f
compat: find listdir function in compat module

diff --git a/hggit/compat.py b/hggit/compat.py
--- a/hggit/compat.py
+++ b/hggit/compat.py
@@ -83,6 +83,13 @@
     except TypeError:
         phases.advanceboundary(repo, targetphase, nodes)
 
+# hg 4.3 - osutil moved, but mercurial.util re-exports listdir
+if hgutil.safehasattr(hgutil, 'listdir'):
+    listdir = hgutil.listdir
+else:
+    from mercurial import osutil
+    listdir = osutil.listdir
+
 
 try:
     import dulwich.client
diff --git a/hggit/gitdirstate.py b/hggit/gitdirstate.py
--- a/hggit/gitdirstate.py
+++ b/hggit/gitdirstate.py
@@ -11,6 +11,8 @@
     util,
 )
 
+import compat
+
 # COMPAT: hg 3.5 - ignore module was removed
 try:
     from mercurial import ignore
@@ -164,12 +166,6 @@
         matchalways = match.always()
         matchtdir = match.traversedir
         dmap = self._map
-        # COMPAT: hg 4.3 - osutil moved, but util re-exports listdir
-        try:
-            listdir = util.listdir
-        except AttributeError:
-            from mercurial import osutil
-            listdir = osutil.listdir
         lstat = os.lstat
         dirkind = stat.S_IFDIR
         regkind = stat.S_IFREG
@@ -209,7 +205,7 @@
             else:
                 skip = '.hg'
             try:
-                entries = listdir(join(nd), stat=True, skip=skip)
+                entries = compat.listdir(join(nd), stat=True, skip=skip)
             except OSError, inst:
                 if inst.errno in (errno.EACCES, errno.ENOENT):
                     fwarn(nd, inst.strerror)