--- a/mercurial/dirstate.py Sat Aug 22 01:37:28 2009 +0200
+++ b/mercurial/dirstate.py Sat Aug 22 10:25:50 2009 +0200
@@ -377,9 +377,9 @@
gran = int(self._ui.config('dirstate', 'granularity', 1))
except ValueError:
gran = 1
- limit = sys.maxint
if gran > 0:
- limit = util.fstat(st).st_mtime - gran
+ hlimit = util.fstat(st).st_mtime
+ llimit = hlimit - gran
cs = cStringIO.StringIO()
copymap = self._copymap
@@ -389,7 +389,8 @@
for f, e in self._map.iteritems():
if f in copymap:
f = "%s\0%s" % (f, copymap[f])
- if e[3] > limit and e[0] == 'n':
+ if gran > 0 and e[0] == 'n' and llimit < e[3] <= hlimit:
+ # file was updated too recently, ignore stat data
e = (e[0], 0, -1, -1)
e = pack(_format, e[0], e[1], e[2], e[3], len(f))
write(e)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-dirstate-future Sat Aug 22 10:25:50 2009 +0200
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+hg init
+echo a > a
+hg add
+hg ci -m1
+
+# set mtime of a into the future
+touch -t 202101011200 a
+
+# status must not set a's entry to unset (issue1790)
+hg status
+hg debugstate
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-dirstate-future.out Sat Aug 22 10:25:50 2009 +0200
@@ -0,0 +1,2 @@
+adding a
+n 644 2 2021-01-01 12:00:00 a