Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 25 Oct 2021 11:36:22 +0200] rev 48439
dirstate: remove `lastnormaltime` mechanism
This is now redundant with the new, simpler `mtime_boundary` one.
Differential Revision: https://phab.mercurial-scm.org/D11795
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 18 Nov 2021 13:12:40 +0100] rev 48438
status: use filesystem time boundary to invalidate racy mtime
We record the filesystem time at the start of the status walk and use that as a
boundary to detect files that might be modified during (or right after) the
status run without the mtime allowing that edition to be detected. We
currently do this at a second precision. In a later patch, we will use
nanosecond precision when available.
To cope with "broken" time on the file system where file could be in the
future, we also keep mtime for file over one day in the future. See inline
comment for details.
Large file tests get a bit more confused as we reduce the odds for race
condition.
As a "side effect", the win32text extension is happy again.
Differential Revision: https://phab.mercurial-scm.org/D11794
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 18 Nov 2021 15:00:13 +0100] rev 48437
test: use a different timestamp for the updated file
In the test we want to trigger a write after the underlying dirstate changed. To
do so, we need a write. And as we are about to make dirstate update smarter we
need to meddle with the script a bit to make sure there will be a write.
Differential Revision: https://phab.mercurial-scm.org/D11793
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 23 Nov 2021 03:22:30 +0100] rev 48436
win32text: drop associated dirstate cache information on revert
Otherwise the could get size from one version of the file while the on-disk
version is still clean but with another size.
This fix the previously introduced error.
Differential Revision: https://phab.mercurial-scm.org/D11792
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 17 Nov 2021 20:27:27 +0100] rev 48435
dirstate: stop gathering parentfiledata in update_file
Gathering information here assume that they are valid cache information for a
clean file. It is true most of the time, but not garanteed.
Accurate data can still be explicitly provided.
We drop the spontaneous and will let the next `hg status` call record actual information.
Differential Revision: https://phab.mercurial-scm.org/D11791
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 17 Nov 2021 20:26:33 +0100] rev 48434
dirstate: stop gathering parentfiledata in update_file_p1
Gathering information here assume that they are valid cache information for a
clean file. It is true most of the time, but not garanteed.
So we drop this and will let the next `hg status` call record actual information.
Differential Revision: https://phab.mercurial-scm.org/D11790
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 17 Nov 2021 20:26:14 +0100] rev 48433
dirstate: make it mandatory to provide parentfiledata in `set_clean`
Gathering the mode, size and mtime, independently from determining that the file
is clean is a race-machine. So we just make these information required arguments.
(note that the data is still gathered in a racy way in practice, but at least
the API is no longer encouraging it.)
Differential Revision: https://phab.mercurial-scm.org/D11789