# HG changeset patch # User Dirkjan Ochtman # Date 2009-08-22 08:25:50 # Node ID 9d2e3508faf93bbe365e5f981b7fdbeb0436be7a # Parent 4481ba0957c5a2f0b2863c2b485eee7d92bb3b9e # Parent 1a7bcf58ba56a9043e63d0c637647666cb23a48d merge with crew-stable diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py --- a/mercurial/dirstate.py +++ b/mercurial/dirstate.py @@ -377,9 +377,9 @@ class dirstate(object): 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 @@ class dirstate(object): 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) diff --git a/tests/test-dirstate-future b/tests/test-dirstate-future new file mode 100755 --- /dev/null +++ b/tests/test-dirstate-future @@ -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 diff --git a/tests/test-dirstate-future.out b/tests/test-dirstate-future.out new file mode 100644 --- /dev/null +++ b/tests/test-dirstate-future.out @@ -0,0 +1,2 @@ +adding a +n 644 2 2021-01-01 12:00:00 a