Thu, 15 Jul 2021 10:31:43 +0200 dirstate-v2: Reuse existing paths when appending to a data file
Simon Sapin <simon.sapin@octobus.net> [Thu, 15 Jul 2021 10:31:43 +0200] rev 47680
dirstate-v2: Reuse existing paths when appending to a data file When writing a dirstate in v2 format by appending to an existing data file, filenames / paths that are borrowed from the previous on-disk representation can be reused. Differential Revision: https://phab.mercurial-scm.org/D11096
Thu, 15 Jul 2021 08:53:03 +0200 dirstate-v2: Reuse existing nodes when appending to a data file
Simon Sapin <simon.sapin@octobus.net> [Thu, 15 Jul 2021 08:53:03 +0200] rev 47679
dirstate-v2: Reuse existing nodes when appending to a data file When writing a dirstate in v2 format by appending to an existing data file, nodes that are still "unparsed" from the previous on-disk representation have been unchanged and can therefore be reused. This makes the new data point to previously-existing data for tree nodes. Differential Revision: https://phab.mercurial-scm.org/D11095
Tue, 13 Jul 2021 17:18:23 +0200 dirstate-v2: Support appending to the same data file
Simon Sapin <simon.sapin@octobus.net> [Tue, 13 Jul 2021 17:18:23 +0200] rev 47678
dirstate-v2: Support appending to the same data file For now we’re still writing the entire data every time, so appending is not useful yet. Later we’ll have new nodes pointing to some existing data for nodes and paths that haven’t changed. The decision whether to append is pseudo-random in order to make tests exercise both code paths. This will be replaced by a heuristic based on the amount of unused existing data. Differential Revision: https://phab.mercurial-scm.org/D11094
Tue, 13 Jul 2021 09:44:44 +0200 dirstate-v2: shrink on-disk path lengths to 16-bits
Simon Sapin <simon.sapin@octobus.net> [Tue, 13 Jul 2021 09:44:44 +0200] rev 47677
dirstate-v2: shrink on-disk path lengths to 16-bits Differential Revision: https://phab.mercurial-scm.org/D11091
Mon, 12 Jul 2021 23:05:56 +0200 dirstate-v2: Rename Header to Root, move it to the end of the data file
Simon Sapin <simon.sapin@octobus.net> [Mon, 12 Jul 2021 23:05:56 +0200] rev 47676
dirstate-v2: Rename Header to Root, move it to the end of the data file Now that they don’t have to be at the start, a given data file may contain multiple "roots". A docket only points to one of them, and previous ones are left unused to allow allow append-only in-place writing to an existing data file. Differential Revision: https://phab.mercurial-scm.org/D11090
Mon, 12 Jul 2021 22:46:52 +0200 dirstate-v2: Enforce data size read from the docket file
Simon Sapin <simon.sapin@octobus.net> [Mon, 12 Jul 2021 22:46:52 +0200] rev 47675
dirstate-v2: Enforce data size read from the docket file The data file may not be shorter than its size given by the docket. It may be longer, but additional data is ignored. Differential Revision: https://phab.mercurial-scm.org/D11089
Thu, 08 Jul 2021 12:18:21 +0200 dirstate-v2: Introduce a docket file
Simon Sapin <simon.sapin@octobus.net> [Thu, 08 Jul 2021 12:18:21 +0200] rev 47674
dirstate-v2: Introduce a docket file .hg/dirstate now only contains some metadata to point to a separate data file named .hg/dirstate.{}.d with a random hexadecimal identifier. For now every update creates a new data file and removes the old one, but later we’ll (usually) append to an existing file. Separating into two files allows doing the "write to a temporary file then atomically rename into destination" dance with only a small docket file, without always rewriting a lot of data. Differential Revision: https://phab.mercurial-scm.org/D11088
Thu, 15 Jul 2021 17:24:09 +0200 dirstate: replace a dead conditional branch with an assert in `update_file`
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 15 Jul 2021 17:24:09 +0200] rev 47673
dirstate: replace a dead conditional branch with an assert in `update_file` This is a case we never meet, so lets trim it away to simplify the code before more changes. Differential Revision: https://phab.mercurial-scm.org/D11128
Wed, 14 Jul 2021 23:32:35 +0200 dirstate-map: do not use `size` to gate copy dropping during remove_file
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 14 Jul 2021 23:32:35 +0200] rev 47672
dirstate-map: do not use `size` to gate copy dropping during remove_file This get us close to moving the block right above withing the DirstateItem object. Doing so will help us getting rid of magic constant at the dirstatemap level. Differential Revision: https://phab.mercurial-scm.org/D11127
Thu, 15 Jul 2021 00:27:29 +0200 dirstate: drop a duplicated assert
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 15 Jul 2021 00:27:29 +0200] rev 47671
dirstate: drop a duplicated assert This very case is checked in 3 line above that one. Differential Revision: https://phab.mercurial-scm.org/D11126
Thu, 15 Jul 2021 00:22:49 +0200 dirstate: drop duplicated check
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 15 Jul 2021 00:22:49 +0200] rev 47670
dirstate: drop duplicated check This is covered by the `@requires_parents_change` decorator that this function use. Differential Revision: https://phab.mercurial-scm.org/D11125
Mon, 19 Jul 2021 06:21:04 +0200 dirstate: add a `set_possibly_dirty` in `fakedirstatewritetime`
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 19 Jul 2021 06:21:04 +0200] rev 47669
dirstate: add a `set_possibly_dirty` in `fakedirstatewritetime` Differential Revision: https://phab.mercurial-scm.org/D11122
(0) -30000 -10000 -3000 -1000 -300 -100 -12 +12 +100 +300 +1000 +3000 tip