Wed, 13 Feb 2019 18:34:08 -0800 templates: adding a config() function for template customization
rdamazio@google.com [Wed, 13 Feb 2019 18:34:08 -0800] rev 41720
templates: adding a config() function for template customization This allows templates to be written such that users can customize them easily, or that they can be customized based on other configuration of the system. For enterprise deployments, we often have complex template aliases, and right now the only way individual users can customize those is by replacing the whole template alias (which means they won't get company-wide updates to it anymore, plus most users don't want to have to get a complex template right). With this change, they can just set a config option which feeds into our templates for common changes (e.g. whether to limit commit descriptions to the width of their terminal or not). To work around the issue of having to register the config options, I declared a dedicated section [templateconfig] for these options to be dynamically declared. They can still reference any other config option that's registered elsewhere. I only did string, bool and int at this time - list and date would add other complications with parsing the default so I'll leave that as an exercise to the reader :) Differential Revision: https://phab.mercurial-scm.org/D5959
Thu, 31 Jan 2019 20:11:16 +0300 changegroup: don't try to prune manifest nodes if not ellipses
Pulkit Goyal <pulkit@yandex-team.ru> [Thu, 31 Jan 2019 20:11:16 +0300] rev 41719
changegroup: don't try to prune manifest nodes if not ellipses In non-ellipses case, the number of manifest nodes can be very big, and finding whether one of them can be pruned or not is very costly. For each node, we try to find the rev and the linkrev, which is expensive. Sending bit more manifest nodes seems better and much faster here. On our internal repository, this saves around 5 seconds on `hg tracked --addinclude <some_path>` on a narrow repo with ellipses disabled. Differential Revision: https://phab.mercurial-scm.org/D5782
Mon, 11 Feb 2019 16:34:48 +0300 branchmap: improve doc about BranchMapCache class
Pulkit Goyal <pulkit@yandex-team.ru> [Mon, 11 Feb 2019 16:34:48 +0300] rev 41718
branchmap: improve doc about BranchMapCache class It was confusing that we are having two different branchcache and BranchMapCache classes. The doc in BranchMapCache class was not much helpful to understand the difference. This patch improves the doc there. Differential Revision: https://phab.mercurial-scm.org/D5933
Mon, 04 Feb 2019 19:46:57 +0100 rust: itering less on MissingAncestors.bases for max()
Georges Racinet <georges.racinet@octobus.net> [Mon, 04 Feb 2019 19:46:57 +0100] rev 41717
rust: itering less on MissingAncestors.bases for max() Instead of iterating on the whole `self.bases` each time to find its max, we keep the latter in a separate member attribute and keep it up to date in `add_bases()` On a perfdiscovery done on PyPy, with repos prepared with `contrib/discovery-helper.sh 50 100`, this gives a slight improvement (around 0.5% on wall time, but 10% on CPU) before: ! wall 0.172801 comb 0.180000 user 0.180000 sys 0.000000 (median of 541) after: ! wall 0.171798 comb 0.160000 user 0.160000 sys 0.000000 (median of 551) (perf command run time upped because of bigger variability during this test). Differential Revision: https://phab.mercurial-scm.org/D5945
Tue, 05 Feb 2019 10:28:32 +0100 rust: stop putting NULL_REVISION in MissingAncestors.bases
Georges Racinet <georges.racinet@octobus.net> [Tue, 05 Feb 2019 10:28:32 +0100] rev 41716
rust: stop putting NULL_REVISION in MissingAncestors.bases As noted in initial review of MissingAncestors, adding NULL_REVISION in constructor in case the given `bases` is empty wasn't really useful, yet it's been kept for identity with the Python implementation Differential Revision: https://phab.mercurial-scm.org/D5944
Mon, 04 Feb 2019 12:04:59 +0100 rust: less set lookups in MissingAncestors
Georges Racinet <georges.racinet@octobus.net> [Mon, 04 Feb 2019 12:04:59 +0100] rev 41715
rust: less set lookups in MissingAncestors using the return values of HashSet::remove(), we can factor pairs of `contains()/remove()` into a single `remove()`. On a perfdiscovery run done on the PyPy repository, prepared with contrib/discovery-helper.sh 50 100, I do get a modest improvement with this (mean of medians of three runs is better by 2%) Sample readings, before this change: ! wall 0.175609 comb 0.180000 user 0.180000 sys 0.000000 (median of 58) With this change: ! wall 0.171662 comb 0.180000 user 0.170000 sys 0.010000 (median of 60) Differential Revision: https://phab.mercurial-scm.org/D5943
(0) -30000 -10000 -3000 -1000 -300 -100 -30 -10 -6 +6 +10 +30 +100 +300 +1000 +3000 +10000 tip