mercurial/dirstateutils/timestamp.py
changeset 48403 ca42667c8d26
parent 48398 111098af6356
child 48422 000130cfafb6
--- a/mercurial/dirstateutils/timestamp.py	Wed Nov 24 04:43:57 2021 +0100
+++ b/mercurial/dirstateutils/timestamp.py	Wed Nov 24 05:00:28 2021 +0100
@@ -102,16 +102,23 @@
     """
     file_mtime = mtime_of(stat_result)
     file_second = file_mtime[0]
+    file_ns = file_mtime[1]
     boundary_second = present_mtime[0]
+    boundary_ns = present_mtime[1]
     # If the mtime of the ambiguous file is younger (or equal) to the starting
     # point of the `status` walk, we cannot garantee that another, racy, write
     # will not happen right after with the same mtime and we cannot cache the
     # information.
     #
-    # However is the mtime is far away in the future, this is likely some
+    # However if the mtime is far away in the future, this is likely some
     # mismatch between the current clock and previous file system operation. So
     # mtime more than one days in the future are considered fine.
-    if boundary_second <= file_second < (3600 * 24 + boundary_second):
+    if boundary_second == file_second:
+        if file_ns and boundary_ns:
+            if file_ns < boundary_ns:
+                return timestamp((file_second, file_ns, True))
+        return None
+    elif boundary_second < file_second < (3600 * 24 + boundary_second):
         return None
     else:
         return file_mtime