Skip to content

pr-2217/thomasbachem/rebase-auto-maintenance-v1

tagged this 04 Sep 07:53
While looking into the rerere lock race in [1], the "git commit" a rebase
spawns for a resolved pick turned out to be about the only place a rebase
with the merge backend runs auto maintenance, and it runs it against the
rebase itself. Phillip asked for auto maintenance to be kept out of a rebase
altogether [2], and for the merge backend to run it once at the end the way
the apply backend does [3]. Patrick would rather see that discussed on its
own [4], hence this series.

Patch 1 runs auto maintenance where the sequencer finishes a rebase, as the
apply backend does. Patch 2 then passes maintenance.auto=false and gc.auto=0
to the "git commit", "git merge" and exec commands a rebase spawns, so that
a rebase runs it once, at its end. Cherry-pick and revert are left as they
are.

Based on master. Independent of [1], which makes the rerere lock non-fatal:
with both, a rebase neither spawns the gc nor dies on one that something
else spawned.

[1] <pull.2214.git.1788337897490.gitgitgadget@gmail.com>

[2] <ca3b91b6-254c-4b86-adb8-da3217e9f6e7@gmail.com>

[3] <86efb07c-a0ce-49b0-b4eb-7d6b4bbaeccc@gmail.com>

[4] <apkwpKTGaMwTf0Hz@pks.im>

Thomas Bachem (2):
  sequencer: run auto maintenance once a rebase is done
  sequencer: keep auto maintenance out of the commands a rebase spawns

 sequencer.c                | 32 ++++++++++++++++++++++++++++++++
 t/t3418-rebase-continue.sh | 26 ++++++++++++++++++++++++++
 2 files changed, 58 insertions(+)

base-commit: 3cb9185f65410273787f74333cc027d2ea5daada

Submitted-As: https://lore.kernel.org/git/pull.2217.git.1788508426.gitgitgadget@gmail.com
Assets 2
Loading