You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Over the time, GitGitGadget accumulated _quite_ a few open PRs. For all
of them, the commit mappings are updated whenever `pu` changed. But that
can take _quite_ a long time, due to an ancient merge base. See e.g.
gitgitgadget/git#15, which still awaits the time
when this developer can do some fun stuff again.
Even worse: since this task is run on a low-powered Azure VM, it takes
quite a few resources, and quite a long time just to update the commit
mappings.
Let's coalesce all the ranges that need to be compared into a single
one, and run only a single range-diff (which will still take something
like 90 seconds, but that is way better than the 20 minutes the many
range-diffs take right now).
To do so, we construct a throw-away octopus merge of all the base
commits, and another octopus merge of all the head commits, and then use
the range between these octopus merges as the first commit range for the
`git range-diff` command.
To make sure that we're not missing anything (e.g. when one of the PRs
has `pu` as its base commit), we do not use the first octopus merge in
the second commit range. Instead, we use `maint~100..pu`, which should
be plenty enough.
Note: we could save on some running time by using `maint~10` instead
(roughly 20 seconds) or even `maint~1` (about a minute), but we want to
stay safe in case a PR goes directly to `maint` (which _has_ happened
before).
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
0 commit comments