changeset 9379:9d2e3508faf9

merge with crew-stable
author Dirkjan Ochtman <dirkjan@ochtman.nl>
date Sat, 22 Aug 2009 10:25:50 +0200
parents 4481ba0957c5 (current diff) 1a7bcf58ba56 (diff)
children 642febca0e5d
files mercurial/dirstate.py
diffstat 3 files changed, 19 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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