Fri, 10 Dec 2021 23:08:25 +0100 tests: add a short `sleep` in test-status.t
Simon Sapin <simon.sapin@octobus.net> [Fri, 10 Dec 2021 23:08:25 +0100] rev 48455
tests: add a short `sleep` in test-status.t With dirstate-v2 and rhg both enabled, this test would sometimes fail for me with: ``` --- tests/test-status.t +++ tests/test-status.t#dirstate-v2.err @@ -943,7 +943,7 @@ $ rm subdir/unknown $ hg status $ hg debugdirstate --all --no-dates | grep '^ ' - 0 -1 set subdir + 0 -1 unset subdir ``` Meaning that `status` did not write a directory mtime in the dirstate as expected. This can happen if the observed mtime of the directory is the same as "current time" at the start of `status`. This current time is obtained by creating a temporary file and checking its mtime. Even with ext4 on my system being able to store nanosecond precision, identical mtime for successive but separate operations is still possible becuse the kernel may cache the current time: https://stackoverflow.com/a/14393315/1162888 0.1 second should be enough for this cache to be updated, without significantly slowing down the test. Differential Revision: https://phab.mercurial-scm.org/D11900
Fri, 10 Dec 2021 16:18:58 +0100 rhg: Add support for `rhg status --copies`
Simon Sapin <simon.sapin@octobus.net> [Fri, 10 Dec 2021 16:18:58 +0100] rev 48454
rhg: Add support for `rhg status --copies` Copy sources are collected during `status()` rather than after the fact like in Python, because `status()` takes a `&mut` exclusive reference to the dirstate map (in order to potentially mutate it for directory mtimes) and returns `Cow<'_, HgPath>` that borrow the dirstate map. Even though with `Cow` only some shared borrows remain, the still extend the same lifetime of the initial `&mut` so the dirstate map cannot be borrowed again to access copy sources after the fact: https://doc.rust-lang.org/nomicon/lifetime-mismatch.html#limits-of-lifetimes Additionally, collecting copy sources during the dirstate tree traversal that `status()` already does avoids the cost of another traversal or other lookups (though I haven’t benchmarked that cost). Differential Revision: https://phab.mercurial-scm.org/D11899
Fri, 10 Dec 2021 16:57:39 +0100 rhg: refactor relativize_path into a struct + method
Simon Sapin <simon.sapin@octobus.net> [Fri, 10 Dec 2021 16:57:39 +0100] rev 48453
rhg: refactor relativize_path into a struct + method … instead of a function that takes an iterator and a callback. Differential Revision: https://phab.mercurial-scm.org/D11898
Fri, 10 Dec 2021 16:31:16 +0100 rhg: refactor display_status_paths with a struct for common arguments
Simon Sapin <simon.sapin@octobus.net> [Fri, 10 Dec 2021 16:31:16 +0100] rev 48452
rhg: refactor display_status_paths with a struct for common arguments Differential Revision: https://phab.mercurial-scm.org/D11897
Fri, 10 Dec 2021 14:27:00 +0100 rhg: Add support for ui.ignore and ui.ignore.* config
Simon Sapin <simon.sapin@octobus.net> [Fri, 10 Dec 2021 14:27:00 +0100] rev 48451
rhg: Add support for ui.ignore and ui.ignore.* config This fixes some but not all failures in `tests/test-hgignore.t` when running with `rhg status` enabled. Differential Revision: https://phab.mercurial-scm.org/D11907
Fri, 10 Dec 2021 17:20:21 +0100 doc: remove a spurious ^L in some doc
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 10 Dec 2021 17:20:21 +0100] rev 48450
doc: remove a spurious ^L in some doc This was wrongly introduced in D11784. Differential Revision: https://phab.mercurial-scm.org/D11896
Mon, 06 Dec 2021 21:30:32 +0100 upgrade: drop some dead code
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Dec 2021 21:30:32 +0100] rev 48449
upgrade: drop some dead code Everything done by this block is now done by earlier code. So we don't need it anymore. Differential Revision: https://phab.mercurial-scm.org/D11872
Mon, 06 Dec 2021 17:54:39 +0100 upgrade: only process revlogs that needs it by default
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Dec 2021 17:54:39 +0100] rev 48448
upgrade: only process revlogs that needs it by default We have more and more requirement that does not affect revlog or that only affect some of them. It is silly to force a full processing of all revlog to juste move the requirement around, or to simply rewrite the dirstate. So now, only the revlog that needs to be touched will be touched. Unless the --changelog & al flags are used. Differential Revision: https://phab.mercurial-scm.org/D11871
Mon, 06 Dec 2021 17:13:26 +0100 upgrade: issue a message when a revlog type has to be upgraded
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Dec 2021 17:13:26 +0100] rev 48447
upgrade: issue a message when a revlog type has to be upgraded This is more explicite and prepare for a smoother transition to smarter picking of the revlog we will process. Differential Revision: https://phab.mercurial-scm.org/D11870
Mon, 06 Dec 2021 17:12:21 +0100 upgrade: explicitly warn when a `--no-xxx` flag is overwritten
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Dec 2021 17:12:21 +0100] rev 48446
upgrade: explicitly warn when a `--no-xxx` flag is overwritten Some format upgrade/downgrades -needs- revlog to be recomputed. So we now detect that individually and warn when it contradict explicitly passed flag. This is part of a larger series to make `debugupgraderepo` smarter about which revlog it picks by default. Differential Revision: https://phab.mercurial-scm.org/D11869
Mon, 06 Dec 2021 14:40:13 +0100 upgrade: make the list of explicitly specified revlog a dict
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Dec 2021 14:40:13 +0100] rev 48445
upgrade: make the list of explicitly specified revlog a dict This makes various logic simpler and will help making future patch clearer. Differential Revision: https://phab.mercurial-scm.org/D11868
Mon, 06 Dec 2021 11:59:48 +0100 upgrade: move the revlog selection code lower down the chain
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Dec 2021 11:59:48 +0100] rev 48444
upgrade: move the revlog selection code lower down the chain We about about to make revlog section smarter. Moving the code around will make the next changesets clearer. Differential Revision: https://phab.mercurial-scm.org/D11867
Thu, 09 Dec 2021 10:55:17 +0100 rhg: Set second_ambiguous as needed in post-status fixup
Simon Sapin <simon.sapin@octobus.net> [Thu, 09 Dec 2021 10:55:17 +0100] rev 48443
rhg: Set second_ambiguous as needed in post-status fixup This fixes an intermittent bug that manifested only in test-revert.t, and unfortunately not on CI. On a fast enough machine we could have: 1. A file is modified 2. `rhg status` writes an updated dirstate-v1 3. The same file is modified again … all within the same integer second. Because the dirstate-v1 file format does not store sub-second precision, step 2 must write the file’s mtime as "unknown" because of the possibility of step 3. However, most of the code now handles timestamps with nanosecond precision in order to take advantage of it in dirstate-v2. `second_ambiguous` must be set for timestamps that become ambiguous if sub-second precision is dropped (such as through serialization in dirstate-v1 format). Differential Revision: https://phab.mercurial-scm.org/D11889
Thu, 09 Dec 2021 10:23:41 +0100 dirstate: Document Timestamp.second_ambiguous
Simon Sapin <simon.sapin@octobus.net> [Thu, 09 Dec 2021 10:23:41 +0100] rev 48442
dirstate: Document Timestamp.second_ambiguous Differential Revision: https://phab.mercurial-scm.org/D11888
Mon, 13 Dec 2021 00:18:31 -0500 hghave: fix the check for suid on platforms lacking support stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 13 Dec 2021 00:18:31 -0500] rev 48441
hghave: fix the check for suid on platforms lacking support The mac tests were raising an AttributeError without the default arg. Differential Revision: https://phab.mercurial-scm.org/D11906
Sun, 12 Dec 2021 19:36:11 -0500 upgrade: byteify a few error messages stable
Matt Harbison <matt_harbison@yahoo.com> [Sun, 12 Dec 2021 19:36:11 -0500] rev 48440
upgrade: byteify a few error messages These were flagged by pytype (which is currently disabled on this file due to another failure). Differential Revision: https://phab.mercurial-scm.org/D11905
Tue, 07 Dec 2021 12:34:58 +0100 rhg: support the new extension suboptions syntax
Raphaël Gomès <rgomes@octobus.net> [Tue, 07 Dec 2021 12:34:58 +0100] rev 48439
rhg: support the new extension suboptions syntax See inline comments Differential Revision: https://phab.mercurial-scm.org/D11874
Wed, 08 Dec 2021 10:14:37 +0100 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Wed, 08 Dec 2021 10:14:37 +0100] rev 48438
branching: merge stable into default
Mon, 06 Dec 2021 10:08:04 +0100 dirstate-v2: fix upgrade on an empty repository stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Dec 2021 10:08:04 +0100] rev 48437
dirstate-v2: fix upgrade on an empty repository This used to crash as the dirstate file does not exist in this case. Differential Revision: https://phab.mercurial-scm.org/D11866
Mon, 06 Dec 2021 10:52:40 +0100 dirstate-v2: test upgrade without rust too stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Dec 2021 10:52:40 +0100] rev 48436
dirstate-v2: test upgrade without rust too There is no reason to gate this anymore. Differential Revision: https://phab.mercurial-scm.org/D11865
Tue, 07 Dec 2021 10:03:00 +0100 upgrade: don't use `dd status=none` in the test stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 07 Dec 2021 10:03:00 +0100] rev 48435
upgrade: don't use `dd status=none` in the test This breaks on Windows, so lets use `>2 /dev/null` like in the other tests. Differential Revision: https://phab.mercurial-scm.org/D11873
Mon, 06 Dec 2021 10:23:51 +0100 test-upgrade: narrow the `debugformat` call when upgrading to dirstate-v2 stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Dec 2021 10:23:51 +0100] rev 48434
test-upgrade: narrow the `debugformat` call when upgrading to dirstate-v2 This will make the test less noisy when new requirement are added. Differential Revision: https://phab.mercurial-scm.org/D11864
Mon, 06 Dec 2021 12:30:54 -0800 filemerge: remove `premerge` argument from `_makebackup()`
Martin von Zweigbergk <martinvonz@google.com> [Mon, 06 Dec 2021 12:30:54 -0800] rev 48433
filemerge: remove `premerge` argument from `_makebackup()` We now always pass `True`, so there's no need to pass it. Differential Revision: https://phab.mercurial-scm.org/D11863
Fri, 03 Dec 2021 22:45:35 -0800 filemerge: inline `_filemerge()` into `filemerge()`
Martin von Zweigbergk <martinvonz@google.com> [Fri, 03 Dec 2021 22:45:35 -0800] rev 48432
filemerge: inline `_filemerge()` into `filemerge()` The caller is now trivial, so the indirection is pointless. Differential Revision: https://phab.mercurial-scm.org/D11860
Fri, 03 Dec 2021 21:41:43 -0800 filemerge: make `_filemerge()` do both premerge and merge
Martin von Zweigbergk <martinvonz@google.com> [Fri, 03 Dec 2021 21:41:43 -0800] rev 48431
filemerge: make `_filemerge()` do both premerge and merge This patch removes the `premerge` argument from `_filemerge()` and makes it do both the "premerge" and "merge" steps without the caller having to call it twice. Differential Revision: https://phab.mercurial-scm.org/D11859
Fri, 03 Dec 2021 16:21:46 -0800 filemerge: merge `premerge()` into `filemerge()`
Martin von Zweigbergk <martinvonz@google.com> [Fri, 03 Dec 2021 16:21:46 -0800] rev 48430
filemerge: merge `premerge()` into `filemerge()` Differential Revision: https://phab.mercurial-scm.org/D11858
Fri, 03 Dec 2021 15:43:54 -0800 mergestate: inline `_resolve()` into `resolve()`
Martin von Zweigbergk <martinvonz@google.com> [Fri, 03 Dec 2021 15:43:54 -0800] rev 48429
mergestate: inline `_resolve()` into `resolve()` The caller is now trivial, so the indirection is pointless. Differential Revision: https://phab.mercurial-scm.org/D11857
Fri, 03 Dec 2021 13:53:02 -0800 mergestate: make `_resolve()` do both preresolve and resolve
Martin von Zweigbergk <martinvonz@google.com> [Fri, 03 Dec 2021 13:53:02 -0800] rev 48428
mergestate: make `_resolve()` do both preresolve and resolve This patch removes the `preresolve` argument from `_resolve()` and makes it do both the "preresolve" and "resolve" steps without the caller having to call it twice. Differential Revision: https://phab.mercurial-scm.org/D11856
Thu, 02 Dec 2021 22:59:36 -0800 mergestate: merge `preresolve()` into `resolve()`
Martin von Zweigbergk <martinvonz@google.com> [Thu, 02 Dec 2021 22:59:36 -0800] rev 48427
mergestate: merge `preresolve()` into `resolve()` The separation between `preresolve()` and `resolve()` was something added for the "merge driver" feature. Since we removed that in 32ce4cbaec4b (mergedriver: delete it, 2020-09-17), we don't need the separation anymore. More cleanups will follow. Differential Revision: https://phab.mercurial-scm.org/D11855
Fri, 03 Dec 2021 21:50:25 -0800 tests: remove unnecessary explicit args from `failfilemerge.py`
Martin von Zweigbergk <martinvonz@google.com> [Fri, 03 Dec 2021 21:50:25 -0800] rev 48426
tests: remove unnecessary explicit args from `failfilemerge.py` The `failfilemerge()` function always raises an exception without looking at its arguments, so let's use `*args` and `**kwargs`. Differential Revision: https://phab.mercurial-scm.org/D11854
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 tip