hgext/git/dirstate.py
changeset 45422 601e3658216d
parent 45421 0c6b2cc9a7bb
child 45423 d4cf80341589
--- a/hgext/git/dirstate.py	Mon Sep 07 17:13:45 2020 -0400
+++ b/hgext/git/dirstate.py	Mon Sep 07 17:14:59 2020 -0400
@@ -129,6 +129,7 @@
             return False
 
     def status(self, match, subrepos, ignored, clean, unknown):
+        listignored, listclean, listunknown = ignored, clean, unknown
         # TODO handling of clean files - can we get that from git.status()?
         modified, added, removed, deleted, unknown, ignored, clean = (
             [],
@@ -168,6 +169,22 @@
                     b'unhandled case: status for %r is %r' % (path, status)
                 )
 
+        if listclean:
+            observed = set(
+                modified + added + removed + deleted + unknown + ignored
+            )
+            index = self.git.index
+            index.read()
+            for entry in index:
+                path = pycompat.fsencode(entry.path)
+                if not match(path):
+                    continue
+                if path in observed:
+                    continue  # already in some other set
+                if path[-1] == b'/':
+                    continue  # directory
+                clean.append(path)
+
         # TODO are we really always sure of status here?
         return (
             False,