mercurial/pure/parsers.py
changeset 48399 af303ae33cd7
parent 48398 111098af6356
child 48400 0b3f3a3ca50a
--- a/mercurial/pure/parsers.py	Wed Nov 24 04:40:00 2021 +0100
+++ b/mercurial/pure/parsers.py	Wed Nov 24 04:51:05 2021 +0100
@@ -310,9 +310,21 @@
             return False
         self_ns = self._mtime_ns
         other_sec, other_ns, second_ambiguous = other_mtime
-        return self_sec == other_sec and (
-            self_ns == other_ns or self_ns == 0 or other_ns == 0
-        )
+        if self_sec != other_sec:
+            # seconds are different theses mtime are definitly not equal
+            return False
+        elif other_ns == 0 or self_ns == 0:
+            # at least one side as no nano-seconds information
+
+            if self._mtime_second_ambiguous:
+                # We cannot trust the mtime in this case
+                return False
+            else:
+                # the "seconds" value was reliable on its own. We are good to go.
+                return True
+        else:
+            # We have nano second information, let us use them !
+            return self_ns == other_ns
 
     @property
     def state(self):