Fri, 02 Jul 2021 22:48:35 +0200 run-tests: unroll a non-so-one-liner
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 02 Jul 2021 22:48:35 +0200] rev 47499
run-tests: unroll a non-so-one-liner This is shorter and clearer. Differential Revision: https://phab.mercurial-scm.org/D10938
Fri, 02 Jul 2021 20:18:42 +0200 testing: fix _timeout_factor
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 02 Jul 2021 20:18:42 +0200] rev 47498
testing: fix _timeout_factor With `--debug`, `run-tests.py` set the timeout to 0... that breaks the logic in `mercurial.testing`. Differential Revision: https://phab.mercurial-scm.org/D10937
Sat, 03 Jul 2021 10:21:16 +0300 exchange: use "served" repo filter to guess what the server will publish
Anton Shestakov <av6@dwimlabs.net> [Sat, 03 Jul 2021 10:21:16 +0300] rev 47497
exchange: use "served" repo filter to guess what the server will publish Previously, the second push in the added test would say "push would publish 2 changesets" because _checkpublish() was considering secret changesets to be "pushable" when push command had a --rev argument. Without --rev argument to push command, we already filter the repo properly. Differential Revision: https://phab.mercurial-scm.org/D10948
Thu, 01 Jul 2021 18:51:18 +0200 rust: Document the DirstateMapMethods trait
Simon Sapin <simon.sapin@octobus.net> [Thu, 01 Jul 2021 18:51:18 +0200] rev 47496
rust: Document the DirstateMapMethods trait Differential Revision: https://phab.mercurial-scm.org/D10919
Fri, 02 Jul 2021 02:36:07 +0200 dirstate: document the dirstatetuple content
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 02 Jul 2021 02:36:07 +0200] rev 47495
dirstate: document the dirstatetuple content We are about to modify this, so let us document the existing code. Differential Revision: https://phab.mercurial-scm.org/D10935
Fri, 02 Jul 2021 02:17:31 +0200 dirstate: explicitely deal with the `added` case in `_addpath`
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 02 Jul 2021 02:17:31 +0200] rev 47494
dirstate: explicitely deal with the `added` case in `_addpath` This special case is now directly handled, this clarify the possible value for the other options. Differential Revision: https://phab.mercurial-scm.org/D10933
Fri, 02 Jul 2021 02:17:18 +0200 dirstate: add an explicit `possibly_dirty` parameter to `_addpath`
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 02 Jul 2021 02:17:18 +0200] rev 47493
dirstate: add an explicit `possibly_dirty` parameter to `_addpath` This lets says what we mean instead of using magic value. The lower level can then decide how to express that. Differential Revision: https://phab.mercurial-scm.org/D10932
Fri, 02 Jul 2021 02:01:10 +0200 dirstate: add an explicit `from_p2` parameter to `_addpath`
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 02 Jul 2021 02:01:10 +0200] rev 47492
dirstate: add an explicit `from_p2` parameter to `_addpath` This lets says what we mean instead of using magic value. The lower level can then decide how to express that. Differential Revision: https://phab.mercurial-scm.org/D10931
Fri, 02 Jul 2021 02:05:47 +0200 dirstate: add default value to _addpath
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 02 Jul 2021 02:05:47 +0200] rev 47491
dirstate: add default value to _addpath We want to remove the magic value usage from the higher level, so lets stop passing them explicitely when possible. Differential Revision: https://phab.mercurial-scm.org/D10930
Fri, 02 Jul 2021 01:02:46 +0200 dirstate: move the _rangemask filtering closer to its storage
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 02 Jul 2021 01:02:46 +0200] rev 47490
dirstate: move the _rangemask filtering closer to its storage The goal is to get ready to move these kind of processing at a lower level. We start with move move _rangemask filtering close to where it is sent to the lower level to make the future move trivial. Differential Revision: https://phab.mercurial-scm.org/D10929
Thu, 01 Jul 2021 19:15:30 +0200 dirstate: introduce a symbolic constant for the AMBIGUOUS_TIME marker
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 01 Jul 2021 19:15:30 +0200] rev 47489
dirstate: introduce a symbolic constant for the AMBIGUOUS_TIME marker This is going to be clearer and easier to track than -1. Ultimately I would like to get ride of this special value everywhere but in the lower level, however we need to clarify the API first. This changeset is part of such clarification. Differential Revision: https://phab.mercurial-scm.org/D10928
Thu, 01 Jul 2021 19:15:22 +0200 dirstate: introduce a symbolic constant for the NONNORMAL marker
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 01 Jul 2021 19:15:22 +0200] rev 47488
dirstate: introduce a symbolic constant for the NONNORMAL marker This is going to be clearer and easier to track than -1. Ultimately I would like to get ride of this special value everywhere but in the lower level, however we need to clarify the API first. This changeset is part of such clarification. Differential Revision: https://phab.mercurial-scm.org/D10927
Thu, 01 Jul 2021 19:04:11 +0200 dirstate: introduce a symbolic constant for the FROM_P2 marker
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 01 Jul 2021 19:04:11 +0200] rev 47487
dirstate: introduce a symbolic constant for the FROM_P2 marker This is going to be clearer and easier to track than -2. Ultimately I would like to get ride of this special value everywhere but in the lower level, however we need to clarify the API first. This changeset is part of such clarification. Differential Revision: https://phab.mercurial-scm.org/D10926
Thu, 01 Jul 2021 18:59:29 +0200 dirstate: split a not-so-one-liner
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 01 Jul 2021 18:59:29 +0200] rev 47486
dirstate: split a not-so-one-liner This is shorter and simpler to read. Differential Revision: https://phab.mercurial-scm.org/D10925
Thu, 01 Jul 2021 18:57:35 +0200 dirstate: split a not-so-one-liner
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 01 Jul 2021 18:57:35 +0200] rev 47485
dirstate: split a not-so-one-liner This is simpler to read. Differential Revision: https://phab.mercurial-scm.org/D10924
Thu, 01 Jul 2021 18:56:34 +0200 dirstate: split a not-so-one-liner
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 01 Jul 2021 18:56:34 +0200] rev 47484
dirstate: split a not-so-one-liner This is shorter and simpler to read. Differential Revision: https://phab.mercurial-scm.org/D10923
Mon, 28 Jun 2021 16:50:19 +0200 dirstate-tree: Keep a counter of descendant nodes that have an entry
Simon Sapin <simon.sapin@octobus.net> [Mon, 28 Jun 2021 16:50:19 +0200] rev 47483
dirstate-tree: Keep a counter of descendant nodes that have an entry … and change the `DirstateMap::has_dir` method to be based on this counter being non-zero instead of the mere presence of a node. A node with zero descendent with an entry currently should be removed from the tree, but soon we’ll make the dirstate track additional nodes. (Specifically, for non-ignored directories in order to keep track of their mtime and optimize status by doing fewer `read_dir` calls.) Differential Revision: https://phab.mercurial-scm.org/D10922
Mon, 28 Jun 2021 15:52:10 +0200 dirstate: Removed unused instances of `DirsMultiset`
Simon Sapin <simon.sapin@octobus.net> [Mon, 28 Jun 2021 15:52:10 +0200] rev 47482
dirstate: Removed unused instances of `DirsMultiset` … in Rust-backed dirstatemap. The Python class `dirstatemap` had cached properties `_dirs` and `_alldirs` that were not used for `hastrackeddir` and `hasdir` since they were redundant with corresponding fields for the Rust `DirstateMap` struct. `dirfoldmap` is modified to reuse instead the directory iterator introduced in 3b9914b28133c0918186b6e8b9e4f1916e21338d. Differential Revision: https://phab.mercurial-scm.org/D10921
Mon, 28 Jun 2021 15:41:50 +0200 dirstate-v2: Use 32-bit integers instead of 64-bit for offsets
Simon Sapin <simon.sapin@octobus.net> [Mon, 28 Jun 2021 15:41:50 +0200] rev 47481
dirstate-v2: Use 32-bit integers instead of 64-bit for offsets This saves 12 bytes per node. (Nodes representing files or directories.) These are offsets to other parts of the file. This would only be a limitation for a `.hg/dirstate` file larger than 4 GiB, which would only happen for a repository with dozens of millions of files and directories. Differential Revision: https://phab.mercurial-scm.org/D10920
Thu, 24 Jun 2021 21:54:14 +0200 status: Extend read_dir caching to directories with ignored files
Simon Sapin <simon.sapin@octobus.net> [Thu, 24 Jun 2021 21:54:14 +0200] rev 47480
status: Extend read_dir caching to directories with ignored files See code comments Differential Revision: https://phab.mercurial-scm.org/D10909
Fri, 04 Jun 2021 15:26:38 +0200 dirstate-v2: Drop cached read_dir results after .hgignore changes
Simon Sapin <simon.sapin@octobus.net> [Fri, 04 Jun 2021 15:26:38 +0200] rev 47479
dirstate-v2: Drop cached read_dir results after .hgignore changes Soon we’ll want the status algorithm to be able to skip `std::fs::read_dir` in more cases, notabling when listing unknown files but not ignored files. When ignore patterns change (which we detect by their hash, added to the dirstate-v2 format in a previous changeset), a formerly-ignored file could become unknown without changing its parent directory’s modification time. Therefore we remove any directory mtime from the dirstate, effictively invalidating the existing caches. Differential Revision: https://phab.mercurial-scm.org/D10907
Tue, 22 Jun 2021 22:52:08 +0200 censor: split the core of the logic into its own function
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 22 Jun 2021 22:52:08 +0200] rev 47478
censor: split the core of the logic into its own function We now have a "generic" rewrite function (only able to do censoring for now) and a thin wrapper that implement the `censor` API with it. We are now ready to start incorporating strip specific changes. Differential Revision: https://phab.mercurial-scm.org/D10904
Tue, 22 Jun 2021 23:20:32 +0200 censor: migrate the logic to a set of `censor_revs`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 22 Jun 2021 23:20:32 +0200] rev 47477
censor: migrate the logic to a set of `censor_revs` Instead of considering a special unique censored revision within the code, we consider a set of revision (currently always of size 1). This make the main code less censor-centric and prepare for the usage of a similar approach for stripping changesets. Differential Revision: https://phab.mercurial-scm.org/D10903
Tue, 22 Jun 2021 22:35:37 +0200 censor: rename `rl` to `revlog` in the main function
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 22 Jun 2021 22:35:37 +0200] rev 47476
censor: rename `rl` to `revlog` in the main function Now that the bulk of the code moved to smaller function we are less restricted on line length and we can use more explicite naming. Differential Revision: https://phab.mercurial-scm.org/D10902
Tue, 22 Jun 2021 22:28:51 +0200 censor: extract the part about creating and opening new files in a function
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 22 Jun 2021 22:28:51 +0200] rev 47475
censor: extract the part about creating and opening new files in a function The v2_censor function is huge, now that its content has settled a bit it is a good time to split individual part inside dedicated function. The last part is the file copying and opening logic. It now have its own function. Differential Revision: https://phab.mercurial-scm.org/D10901
Tue, 22 Jun 2021 22:10:22 +0200 censor: extract the part about recomputing delta in a function
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 22 Jun 2021 22:10:22 +0200] rev 47474
censor: extract the part about recomputing delta in a function The v2_censor function is huge, now that its content has settled a bit it is a good time to split individual part inside dedicated function. It is now the turn of the logic that recompute new delta to replace the one based on the revision that are going away. Differential Revision: https://phab.mercurial-scm.org/D10900
Tue, 22 Jun 2021 21:49:31 +0200 censor: extract the part about writing the other revision in a function
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 22 Jun 2021 21:49:31 +0200] rev 47473
censor: extract the part about writing the other revision in a function The v2_censor function is huge, now that its content has settled a bit it is a good time to split individual part inside dedicated function. We continue with a small function that add a non-censored revision back to the revlog. Differential Revision: https://phab.mercurial-scm.org/D10899
Tue, 22 Jun 2021 21:41:33 +0200 censor: extract the part about writing the censored revision in a function
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 22 Jun 2021 21:41:33 +0200] rev 47472
censor: extract the part about writing the censored revision in a function The v2_censor function is huge, now that its content has settled a bit it is a good time to split individual part inside dedicated function. We start with a small function that process the censored revision. Differential Revision: https://phab.mercurial-scm.org/D10898
Tue, 22 Jun 2021 21:22:55 +0200 censor: put the tuple of open files in an explicit variable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 22 Jun 2021 21:22:55 +0200] rev 47471
censor: put the tuple of open files in an explicit variable This will be simpler to pass these file around in future changesets. Differential Revision: https://phab.mercurial-scm.org/D10897
Tue, 22 Jun 2021 11:09:25 +0200 revlog: rewrite `censors.py` to `rewrite.py`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 22 Jun 2021 11:09:25 +0200] rev 47470
revlog: rewrite `censors.py` to `rewrite.py` The logic we use for censoring revision will be mostly common with the one we needs for stripping. So we rename the module to `rewrite` to better match its future content. Differential Revision: https://phab.mercurial-scm.org/D10896
Thu, 17 Jun 2021 19:48:25 +0200 copies: Keep changelog sidedata file open during copy tracing
Simon Sapin <simon.sapin@octobus.net> [Thu, 17 Jun 2021 19:48:25 +0200] rev 47469
copies: Keep changelog sidedata file open during copy tracing Instead of having a callback that opens and closes that file many times, a add and use a context manager method on the `revlog` class that keeps files open for its duration. Differential Revision: https://phab.mercurial-scm.org/D10888
Tue, 22 Jun 2021 13:18:29 -0400 purge: restore the `testedwith` declaration
Matt Harbison <matt_harbison@yahoo.com> [Tue, 22 Jun 2021 13:18:29 -0400] rev 47468
purge: restore the `testedwith` declaration Otherwise, this extension gets highlighted as a 3rd party extension when an exception occurs. Differential Revision: https://phab.mercurial-scm.org/D10895
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -32 +32 +50 +100 +300 +1000 +3000 tip