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.
Thu, 01 Sep 2022 16:51:26 +0200 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Thu, 01 Sep 2022 16:51:26 +0200] rev 49487
branching: merge stable into default
Sun, 05 Jun 2022 07:16:29 +0200 compare-disco: support for `file` nodes specification
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Sun, 05 Jun 2022 07:16:29 +0200] rev 49486
compare-disco: support for `file` nodes specification This leverage the `nodefromfile` feature in core. This make it possible for callers to no longer pay the subset computation cost (and to make sure the subset is the right one, even when the base repository is different)
Sat, 04 Jun 2022 19:10:51 +0200 compare-disco: move case parsing into its own function
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Sat, 04 Jun 2022 19:10:51 +0200] rev 49485
compare-disco: move case parsing into its own function This is open the way to the next changeset that will allow to specify a list of heads.
Sat, 04 Jun 2022 19:04:01 +0200 compare-disco: add an option to skip the case
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Sat, 04 Jun 2022 19:04:01 +0200] rev 49484
compare-disco: add an option to skip the case If we already know the context, we can save a lot of display space by skipping the case. This also open the way to speedup to the way we specify the subsets. (the code is hacky, but this is a quicky and dirty debug script)
Sat, 04 Jun 2022 18:58:07 +0200 compare-disco: display a header by default
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Sat, 04 Jun 2022 18:58:07 +0200] rev 49483
compare-disco: display a header by default This help us to understand the output. (the code is hacky, but this is a quicky and dirty debug script)
Sat, 04 Jun 2022 18:57:19 +0200 compare-disco: prepare for primitive argument parsing
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Sat, 04 Jun 2022 18:57:19 +0200] rev 49482
compare-disco: prepare for primitive argument parsing We need to be able to configure a couple of things, so lets prepare the code for it. (the code is hacky, but this is a quicky and dirty debug script)
Mon, 22 Aug 2022 16:59:14 -0400 phase-shelve: correct unicode string to honor 'shelve.store=internal'
Jason R. Coombs <jaraco@jaraco.com> [Mon, 22 Aug 2022 16:59:14 -0400] rev 49481
phase-shelve: correct unicode string to honor 'shelve.store=internal' In the case of strip-based shelves, there should be no hidden commit found. That's because shelve.store=internal is necessary but not sufficient to enable phase-based shelves; internal-phase must also be set.
Fri, 12 Aug 2022 14:35:34 -0700 status: include `repo` in template context also for resolved paths
Martin von Zweigbergk <martinvonz@google.com> [Fri, 12 Aug 2022 14:35:34 -0700] rev 49480
status: include `repo` in template context also for resolved paths The `repo` object needs to be in the templater context when using e.g. `relpath`. It has been missing there since it was the unresolved files were added to the templated output in 07ebb567e8bb.
Wed, 24 Aug 2022 15:15:04 -0400 shelve: remove strip and rely on prior state (issue6735)
Jason R. Coombs <jaraco@jaraco.com> [Wed, 24 Aug 2022 15:15:04 -0400] rev 49479
shelve: remove strip and rely on prior state (issue6735)
Wed, 17 Aug 2022 10:17:15 -0400 shelve: in test for trailing whitespace, strip commit (issue6735)
Jason R. Coombs <jaraco@jaraco.com> [Wed, 17 Aug 2022 10:17:15 -0400] rev 49478
shelve: in test for trailing whitespace, strip commit (issue6735)
Mon, 15 Aug 2022 10:26:01 -0400 shelve: demonstrate that the state is different across platforms (issue6735)
Jason R. Coombs <jaraco@jaraco.com> [Mon, 15 Aug 2022 10:26:01 -0400] rev 49477
shelve: demonstrate that the state is different across platforms (issue6735)
Tue, 16 Aug 2022 20:09:31 +0200 phase: rename the requirement for internal-phase (BC)
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Aug 2022 20:09:31 +0200] rev 49476
phase: rename the requirement for internal-phase (BC) The previous requirements covers both `internal` and `archived` phase. However, the `archived` phase is not ready for usage (while the internal one is mostly ready for years). So we split the archived on in a dedicated requirements (see previous changeset for details) and rename the one for internal-phase. This will avoid older client trying to use the archived phase on `internal` only repositories. Since the requirements stayed experimental since its introduction. It seems fine to drop the previous version.
Tue, 16 Aug 2022 19:04:23 +0200 phase: introduce a dedicated requirement for the `archived` phase
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Aug 2022 19:04:23 +0200] rev 49475
phase: introduce a dedicated requirement for the `archived` phase See inline documentation for details.
Tue, 16 Aug 2022 18:20:42 +0200 phase: introduce a dedicated function to check for the archived phase
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 Aug 2022 18:20:42 +0200] rev 49474
phase: introduce a dedicated function to check for the archived phase The internal-phase is "ready to use" since its introduce. However, some question remains around the `archived` phase. So it seem safer to move them to separated configuration and requirements. This changeset is a first of a small series doing this.
Wed, 20 Apr 2022 19:24:39 +0200 rebase: add boolean config item rebase.store-source
C. Masloch <pushbx@ulukai.org> [Wed, 20 Apr 2022 19:24:39 +0200] rev 49473
rebase: add boolean config item rebase.store-source This allows to use rebase without recording a rebase_source extra field. This is useful for example to build a mirror converted from another SCM (such as svn) by converting only new revisions, and then incrementally add them to the destination by pulling from the newly converted (unrelated) repo and rebasing the new revisions onto the last old already stored changeset. Without this patch the rebased changesets would always receive some rebase_source that would depend on the particular history of the conversion process, instead of only depending on the original source revisions. This is used to implement a hg mirror repo of SvarDOS (a partially nonfree but completely redistributable DOS distribution) in the scripts at https://hg.pushbx.org/ecm/svardos.scr/ In particular, cre.sh creates an svn mirror, upd.sh recreates an entire hg repo from the svn mirror (which takes too long to do in a regular job), and akt.sh uses hg convert with the config item convert.svn.startrev to incrementally convert only the two most recent revisions already found in the mirror destination plus any possible new revisions. If any are found, the temporary repo's changesets are pulled into the destination (as changesets from an unrelated repository). Then the changesets corresponding to the new revisions are rebased onto the prior final changeset. (Finally, the two remaining duplicates of the prior head and its parent are stripped from the destination repository.) Without this patch, the particular rebase_source extra field would depend on the order and times at which akt.sh was used, instead of only depending on the source repository. In other words, whatever sequence of upd.sh and akt.sh is used at whatever times, it is desired that the final output repositories always match each other exactly.
Mon, 25 Jul 2022 05:30:06 +0200 sort-revset: introduce a `random` variant
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 25 Jul 2022 05:30:06 +0200] rev 49472
sort-revset: introduce a `random` variant This new `sort` variant allows to shuffle any revset. It also allow for randomly picking element using `first`.
Thu, 25 Aug 2022 05:12:25 +0200 perf: properly process formatter option in perf::unbundle
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 25 Aug 2022 05:12:25 +0200] rev 49471
perf: properly process formatter option in perf::unbundle Otherwise, the options are not understood.
Thu, 25 Aug 2022 05:11:48 +0200 perf: quiet stdout output in perf::unbundle
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 25 Aug 2022 05:11:48 +0200] rev 49470
perf: quiet stdout output in perf::unbundle There a lot of repetitive bundle application message we do not care about.
Thu, 25 Aug 2022 05:10:55 +0200 perf: quiet stderr output in perf::unbundle
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 25 Aug 2022 05:10:55 +0200] rev 49469
perf: quiet stderr output in perf::unbundle There a lot of repetitive transaction message we do not care about.
Tue, 23 Aug 2022 17:31:27 -0400 bisect: avoid adding irrelevant revisions to bisect state
Arun Kulshreshtha <akulshreshtha@janestreet.com> [Tue, 23 Aug 2022 17:31:27 -0400] rev 49468
bisect: avoid adding irrelevant revisions to bisect state When adding new revisions to the bisect state, it only makes sense to add information about revisions that are under consideration (i.e., those that are topologically between the known good and bad revisions). However, if the user passes in a revset (e.g., '!merge()' to exclude merge commits), hg will resolve the revset first and add all matching revisions to the bisect state (which in this case would likely be the majority of revisions in the repo). To avoid this, revisions should only be added to the bisect state if they are between the good and bad revisions (and therefore relevant to the bisection). -- Here are the results of some performance tests using the `mozilla-central` repo (since it is one of the largest freely-available hg repositories in the wild). These tests compare the performance of a locally-built `hg` before and after application of this series. Note that `--noupdate` is passed to avoid including update time (which should not vary across cases). Setup (run between each test): $ hg bisect --reset $ hg bisect --noupdate --bad 56c3ad4bde5c70714b784ccf15d099e0df0f5bde $ hg bisect --noupdate --good 57426696adaf08298af3027fa77486fee0633b13 Test using a revset that returns a very large number of revisions: $ time hg bisect --noupdate --skip '!merge()' > /dev/null Before: real 0m9.398s user 0m9.233s sys 0m0.120s After: real 0m1.513s user 0m1.425s sys 0m0.052s Test using a revset that is expensive to compute: $ time hg bisect --noupdate --skip 'desc("Bug")' > /dev/null Before: real 0m49.853s user 0m49.580s sys 0m0.243s After: real 0m4.120s user 0m4.036s sys 0m0.048s
Tue, 23 Aug 2022 17:31:19 -0400 bisect: limit ancestors to revs topologically between good and bad revs
Arun Kulshreshtha <akulshreshtha@janestreet.com> [Tue, 23 Aug 2022 17:31:19 -0400] rev 49467
bisect: limit ancestors to revs topologically between good and bad revs Previously, when constructing its dict of revisions to their ancestors, bisect would populate the dict with ALL of the descendents of the good set, which is a bit silly because it is impossible for a revision that is a descendent of the minimum known bad revision to be the first bad rev. Instead it makes more sense to limit the revisions to just those topologically between the good and bad.
Tue, 23 Aug 2022 17:31:13 -0400 bisect: bypass changectx when translating revs to nodes
Arun Kulshreshtha <akulshreshtha@janestreet.com> [Tue, 23 Aug 2022 17:31:13 -0400] rev 49466
bisect: bypass changectx when translating revs to nodes When resolving the revset given by the user into node hashes, use the changelog to perform the translation rather than the repo object. This avoids the overhead of constructing a changectx which is immediately discarded.
Wed, 24 Aug 2022 16:38:13 +0100 rhg: make [rhg status -v] work when it needs no extra output
Arseniy Alekseyev <aalekseyev@janestreet.com> [Wed, 24 Aug 2022 16:38:13 +0100] rev 49465
rhg: make [rhg status -v] work when it needs no extra output Add support for verbose [status] when no extra output is actually needed. This makes it so that [rhg status] is actually useful when [tweakdefaults] is true. (since tweakdefaults implies verbose status)
Thu, 28 Jul 2022 16:25:21 +0200 perf: introduce a benchmark for delta-find
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 28 Jul 2022 16:25:21 +0200] rev 49464
perf: introduce a benchmark for delta-find That part is responsible of serious slowdown in some `hg pull/unbundle` case. So lets add a way to benchmark it.
Thu, 28 Jul 2022 15:41:45 +0200 debug-delta-find: introduce a quiet mode
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 28 Jul 2022 15:41:45 +0200] rev 49463
debug-delta-find: introduce a quiet mode In quiet mode, we only print the summary of the search and skip the individual steps.
Wed, 17 Aug 2022 12:03:55 -0400 phase-shelve: also capture the state of shelve prior to unshelve
Jason R. Coombs <jaraco@jaraco.com> [Wed, 17 Aug 2022 12:03:55 -0400] rev 49462
phase-shelve: also capture the state of shelve prior to unshelve
Wed, 10 Aug 2022 15:31:39 -0400 phase-shelve: Add test for shelve technique config
Jason R. Coombs <jaraco@jaraco.com> [Wed, 10 Aug 2022 15:31:39 -0400] rev 49461
phase-shelve: Add test for shelve technique config
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 tip