Tue, 30 Aug 2022 15:29:55 -0400 bisect: avoid copying ancestor list for non-merge commits
Arun Kulshreshtha <akulshreshtha@janestreet.com> [Tue, 30 Aug 2022 15:29:55 -0400] rev 49503
bisect: avoid copying ancestor list for non-merge commits During a bisection, hg needs to compute a list of all ancestors for every candidate commit. This is accomplished via a bottom-up traversal of the set of candidates, during which each revision's ancestor list is populated using the ancestor list of its parent(s). Previously, this involved copying the entire list, which could be very long in if the bisection range was large. To help improve this, we can observe that each candidate commit is visited exactly once, at which point its ancestor list is copied into its children's lists and then dropped. In the case of non-merge commits, a commit's ancestor list consists exactly of its parent's list plus itself. This means that we can trivially reuse the parent's existing list for one of its non-merge children, which avoids copying entirely if that commit is the parent's only child. This makes bisections over linear ranges of commits much faster. During some informal testing in the large publicly-available `mozilla-central` repository, this noticeably sped up bisections over large ranges of history: Setup: $ cd mozilla-central $ hg bisect --reset $ hg bisect --good 0 $ hg log -r tip -T '{rev}\n' 628417 Test: $ time hg bisect --bad tip --noupdate Before: real 3m35.927s user 3m35.553s sys 0m0.319s After: real 1m41.142s user 1m40.810s sys 0m0.285s
Mon, 25 Jul 2022 15:39:04 +0200 rhg-status: add support for narrow clones
Raphaël Gomès <rgomes@octobus.net> [Mon, 25 Jul 2022 15:39:04 +0200] rev 49502
rhg-status: add support for narrow clones
Tue, 19 Jul 2022 17:07:09 +0200 rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net> [Tue, 19 Jul 2022 17:07:09 +0200] rev 49501
rust: add support for hints in error messages This will be used by the narrow support code in the next commit.
Mon, 11 Jul 2022 11:59:13 +0200 rust: add Debug constraint to Matcher trait
Raphaël Gomès <rgomes@octobus.net> [Mon, 11 Jul 2022 11:59:13 +0200] rev 49500
rust: add Debug constraint to Matcher trait This makes sure we can easily debug which Matcher we're looking at when using trait objects, and is just generally useful. Effort to make the debugging output nicer has been kept to a minimum, please feel free to improve.
Tue, 19 Jul 2022 15:37:45 +0200 rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net> [Tue, 19 Jul 2022 15:37:45 +0200] rev 49499
rhg: add sparse support
Tue, 19 Jul 2022 15:37:09 +0200 rhg: add debugrhgsparse command to help figure out bugs in rhg
Raphaël Gomès <rgomes@octobus.net> [Tue, 19 Jul 2022 15:37:09 +0200] rev 49498
rhg: add debugrhgsparse command to help figure out bugs in rhg
Tue, 26 Jul 2022 17:33:34 +0200 rhg-status: extract a function for printing pattern file warnings
Raphaël Gomès <rgomes@octobus.net> [Tue, 26 Jul 2022 17:33:34 +0200] rev 49497
rhg-status: extract a function for printing pattern file warnings This will be reused for the warnings produced by the sparse file parsing functions.
Mon, 18 Jul 2022 17:25:49 +0200 rust-filepatterns: allow overriding default syntax
Raphaël Gomès <rgomes@octobus.net> [Mon, 18 Jul 2022 17:25:49 +0200] rev 49496
rust-filepatterns: allow overriding default syntax This will be used when parsing pattern files other than .hgignore like the sparse spec.
Tue, 12 Jul 2022 10:15:52 +0200 rhg: don't fallback if `strip` or `rebase` are activated
Raphaël Gomès <rgomes@octobus.net> [Tue, 12 Jul 2022 10:15:52 +0200] rev 49495
rhg: don't fallback if `strip` or `rebase` are activated Neither of these extensions do anything other than add commands, so ignoring them opens up more of the test suite to rhg.
Mon, 11 Jul 2022 17:44:03 +0200 rhg: fallback in `debugdata` if repo has `narrow`
Raphaël Gomès <rgomes@octobus.net> [Mon, 11 Jul 2022 17:44:03 +0200] rev 49494
rhg: fallback in `debugdata` if repo has `narrow` Narrow uses ellipsis nodes and debugdata does not understand them yet.
Wed, 06 Jul 2022 11:46:00 +0200 rust-status: expose DifferenceMatcher from Rust to Python
Raphaël Gomès <rgomes@octobus.net> [Wed, 06 Jul 2022 11:46:00 +0200] rev 49493
rust-status: expose DifferenceMatcher from Rust to Python
Wed, 06 Jul 2022 11:44:20 +0200 rust-matchers: implement DifferenceMatcher
Raphaël Gomès <rgomes@octobus.net> [Wed, 06 Jul 2022 11:44:20 +0200] rev 49492
rust-matchers: implement DifferenceMatcher This can be generated by the sparse matcher.
Mon, 11 Jul 2022 17:27:39 +0200 rhg: support "!" syntax for disabling extensions
Raphaël Gomès <rgomes@octobus.net> [Mon, 11 Jul 2022 17:27:39 +0200] rev 49491
rhg: support "!" syntax for disabling extensions This makes it so that calls in test-log.t do not fall back immediately because of the disabled extension, instead going through the CLI parsing code, which breaks because of invalid UTF-8 in a flag. I *think* clap 3.x+ supports this? I'm not sure, and we have to upgrade the minimum Rust version to use clap 3.x anyway which is out of scope for this series, so let's just kick that can down the road a little bit.
Fri, 20 May 2022 11:02:52 +0100 revlog: finer computation of "issnapshot"
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 20 May 2022 11:02:52 +0100] rev 49490
revlog: finer computation of "issnapshot" If the parent had an empty diff, we skip of it to compute a diff against the parent base. This create shorter and simpler chain. However these case could be wrongly detected as snapshot. So we improve the code doing this detection. In practice nobody care as when tried on a copy of mozilla-try and we got the same number of snapshot (1315) in both case. Performance where equivalent.
Fri, 26 Aug 2022 00:50:31 +0200 perf: make perf::bundle compatible down to 5.2
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 26 Aug 2022 00:50:31 +0200] rev 49489
perf: make perf::bundle compatible down to 5.2 A another small change to make it compatible with a wider set of revision. I did not check compatibility in the python-2 territory yet.
Fri, 26 Aug 2022 00:48:54 +0200 perf: make perf::bundle compatible before 61ba04693d65
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 26 Aug 2022 00:48:54 +0200] rev 49488
perf: make perf::bundle compatible before 61ba04693d65 A small change to make it compatible with a wider set of revision.
(0) -30000 -10000 -3000 -1000 -300 -100 -16 +16 +100 +300 +1000 tip