Raphaël Gomès <rgomes@octobus.net> [Tue, 07 Dec 2021 15:01:30 +0100] rev 48412
fsmonitor: fix criteria for nonnormalset computation
... oops.
Differential Revision: https://phab.mercurial-scm.org/D11875
Raphaël Gomès <rgomes@octobus.net> [Mon, 06 Dec 2021 11:10:59 +0100] rev 48411
fsmonitor: incorporate fixes for Python 3.10 (
issue6612)
Differential Revision: https://phab.mercurial-scm.org/D11862
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 04 Dec 2021 03:51:33 +0100] rev 48410
python2-compat: fix extensions' tests on python2
They are minor output different to be taken in account.
Differential Revision: https://phab.mercurial-scm.org/D11861
Arseniy Alekseyev <aalekseyev@janestreet.com> [Tue, 16 Nov 2021 11:53:58 +0000] rev 48409
rhg: add support for narrow clones and sparse checkouts
This adds a minimal support that can be implemented without parsing the narrowspec.
We can parse the narrowspec and add support for more operations later.
The reason we need so few code changes is as follows:
Most operations need no special treatment of sparse because
some of them only read dirstate (`rhg files` without `-r`),
which bakes in the filtering,
some of them only read store (`rhg files -r`, `rhg cat`),
and some of them read no data at all (`rhg root`, `rhg debugrequirements`).
`status` is the command that might care about sparse, so we just disable
rhg on it.
For narrow clones, `rhg files` clearly needs the narrowspec to work
correctly, so we fall back.
`rhg cat` seems to work consistently with `hg cat` if the file exists.
If the file is hidden by narrow spec, the error message is different and confusing, so
that's something that we should improve in follow-up patches.
Differential Revision: https://phab.mercurial-scm.org/D11764
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Dec 2021 14:36:40 +0100] rev 48408
update: reformat the `commands.update.check` help
This make the various option clearer.
Differential Revision: https://phab.mercurial-scm.org/D11852
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Dec 2021 12:03:23 +0100] rev 48407
update: properly overwrite `check` config with `--no-` variants
Before this change `--merge` override `commands.update.check=abort/noconflict`,
and `--check` "override" `commands.update.check=none/linear`. However the
`--no-merge` and `--no-check` version where not doing anything.
The `--no-` two flags now behave properly.
Differential Revision: https://phab.mercurial-scm.org/D11851
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Dec 2021 12:19:36 +0100] rev 48406
update: add a test for `--merge` overriding the "abort" config
I don't see this behavior tested anywhere.
Differential Revision: https://phab.mercurial-scm.org/D11850
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Dec 2021 12:01:00 +0100] rev 48405
update: use long version of the flag in the test
This helps readability and searchability.
Differential Revision: https://phab.mercurial-scm.org/D11848
Raphaël Gomès <rgomes@octobus.net> [Mon, 22 Nov 2021 10:47:12 +0100] rev 48404
backout: backed out changeset
5d83a40cd3f8
This is the re-send of the backout in D11757 that I accidentally queued. I'll
rewrite the original commit message:
...sigh
We do not have Python 3 packaging for thg on Windows where the vast majority of
of users use the thg installer for Mercurial. Until this is done (hopefully
this cycle), we're keeping Python.
(end of the old commit message)
On top of this, we have a solid lead to have competent people take care of this
packaging issue for us in time for the 6.1 release, which is really the main
reason for us to wait. We're trying our best to make this work, so please bear
with us.
Differential Revision: https://phab.mercurial-scm.org/D11770
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 24 Nov 2021 05:00:28 +0100] rev 48403
status: keep second-ambiguous mtimes during fixup
Now that we support the feature, we can keep "second ambiguous" mtime during the fixup phase.
These are the mtime that would be ambiguous if we did not had sub-second précions.
See the v2 format documentation for details.
Differential Revision: https://phab.mercurial-scm.org/D11847
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 24 Nov 2021 04:43:57 +0100] rev 48402
dirstate-item: make sure we load `mtime-second-ambiguous` from disk
Now that we support the associated logic, we can safely load it from it. It is
no longer necessary to ignore the stored mtime when the flag is encountered.
Differential Revision: https://phab.mercurial-scm.org/D11846
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 24 Nov 2021 05:00:06 +0100] rev 48401
dirstate-item: make sure we set the mtime-second-ambiguous on v2 write
We want to preserve the second-ambiguity alongside the ambiguous mtime. So we
use the decimated flag for that.
note: the C code was already doing so. No change was needed to it.
Differential Revision: https://phab.mercurial-scm.org/D11845
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 24 Nov 2021 04:59:48 +0100] rev 48400
dirstate-item: ignore mtime to write v1 when `mtime-second-ambiguous` is set
We cannot preserve that information in the v1 format so that mtime is ambiguous.
Differential Revision: https://phab.mercurial-scm.org/D11844
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 24 Nov 2021 04:51:05 +0100] rev 48399
dirstate-item: implement the comparison logic for mtime-second-ambiguous
If the flag is set we now process it properly.
We "just" need to actually set it and persist it.
Differential Revision: https://phab.mercurial-scm.org/D11843
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 24 Nov 2021 04:40:00 +0100] rev 48398
dirstate-item: add a "second_ambiguous` flag in the mtime tuple
This will be used to support the `mtime-second-ambiguous` flag from dirstate
v2. See format documentation for details.
For now, we only make it possible to store the information, no other logic have
been added.
Differential Revision: https://phab.mercurial-scm.org/D11842
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 23 Nov 2021 19:27:17 +0100] rev 48397
dirstate: drop comparison primitive on the timestamp class
All comparison are now managed without using operator :
- the status mtime comparisons is handled by the DirstateItem,
- the fixup reliability check,
- the update "hack".
So we no longer needs the operator and should discourage its usage.
Differential Revision: https://phab.mercurial-scm.org/D11841
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 23 Nov 2021 18:13:33 +0100] rev 48396
largefile: use the proper "mtime boundary" logic during fixup
This will prevent ambiguous cache entry to be used in racy situation. This fix
flakiness in test and some real live misbehavior.
Differential Revision: https://phab.mercurial-scm.org/D11800
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 23 Nov 2021 18:03:51 +0100] rev 48395
status: move the boundary comparison logic within the timestamp module
Some extensions will need it too. So lets isolate the logic. It also makes
things clearer.
Differential Revision: https://phab.mercurial-scm.org/D11799
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 23 Nov 2021 18:11:42 +0100] rev 48394
tests: remove potential mtime ambiguity in a dirstate test
If the test was fast enough, some mtime where not stored. We now wait long
enough to ensure the mtime is no longer ambiguous.
Differential Revision: https://phab.mercurial-scm.org/D11798
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 Nov 2021 03:03:01 +0100] rev 48393
dirstate: cleanup remaining of "now" during write
Since the whole `need_delay` have been removed, we no longer need this.
Differential Revision: https://phab.mercurial-scm.org/D11797
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 Nov 2021 03:04:42 +0100] rev 48392
dirstate: remove need_delay logic
Now that all¹ stored mtime are non ambiguous, we no longer need to apply the `need_delay` step.
The need delay logic was not great are mtime gathered during longer operation
could be ambiguous but younger than the `dirstate.write` call time.
So, we don't need that logic anymore and can drop it
This make the code much simpler. The code related to the test extension faking
the dirstate write is now obsolete and associated test will be migrated as
follow up. They currently do not break.
[1] except the ones from `hg update`, but `need_delay` no longer help for them
either.
Differential Revision: https://phab.mercurial-scm.org/D11796
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 25 Oct 2021 11:36:22 +0200] rev 48391
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 48390
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 48389
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 48388
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 48387
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 48386
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 48385
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
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 22 Nov 2021 15:58:51 +0100] rev 48384
dirstate: do no use `set_clean` in revert
The current `set_clean` usage is racy (the file might be modified between its
restoration and the `set_clean` call).
So we simply leave the file as ambiguous and the next status will fix that.
We still have to make sure the copy information is dropped, so we teach dirstate
how to do that.
The win32txt extension is confused after this because current logic is broken in
more location. However this series will ultimately fix that so we "ignore" it
for now. Fixing it now is complicated without some extra fix landing later.
Differential Revision: https://phab.mercurial-scm.org/D11788
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 18 Nov 2021 22:49:05 +0100] rev 48383
status: adapt the "keyword" extensions to gather stats at lookup time
See main core code for details.
We don't factor the code in a common function yet, because we will have to adapt
a bit more things in the keyword case at the end of the series.
Differential Revision: https://phab.mercurial-scm.org/D11787