From: Patrick Steinhardt Date: Mon, 02 Mar 2026 12:13:04 GMT Subject: [PATCH 0/8] history: introduce "split" subcommand Message-ID: <20260302-pks-history-split-v1-0-444fc987a324@pks.im> Hi, this patch series introduces `git history split` as an easy way to split up one commit into multiple commits. This subcommand has already been introduced in earlier versions of my git-history(1) patch series, but I eventually decided to evict them from this series so that we can rather focus more on basic decisions. In any case, the current version of this patch series matches (to the best of my knowledge) the latest agreements on the mailing list around its behaviour. Most importantly: - It will ask for commit messages for both commits, not only the first commit, which has been a bit of a discussion point. - It is not possible to edit hunks. This results in a mode where conflicts are not possible as the tree of the second commit will always match the tree of the original commit. Conflict handling for subsequent subcommands will be a bigger topic, as it probably depends on support for first-class conflicts. - We also update dependent branches, same as with the latest iteration of `git history reword`. The patch series is built on top of 2cc7191751 (The 8th batch, 2026-02-27) with aa/add-p-no-auto-advance at 417b181f99 (add-patch: allow interfile navigation when selecting hunks, 2026-02-14) merged into it. Thanks! Patrick --- Patrick Steinhardt (8): add-patch: split out header from "add-interactive.h" add-patch: split out `struct interactive_options` add-patch: remove dependency on "add-interactive" subsystem add-patch: add support for in-memory index patching add-patch: allow disabling editing of hunks cache-tree: allow writing in-memory index as tree builtin/history: split out extended function to create commits builtin/history: implement "split" subcommand Documentation/git-history.adoc | 62 ++++ add-interactive.c | 177 ++-------- add-interactive.h | 48 +-- add-patch.c | 363 ++++++++++++++++---- add-patch.h | 74 ++++ builtin/add.c | 26 +- builtin/checkout.c | 9 +- builtin/commit.c | 16 +- builtin/history.c | 317 +++++++++++++++-- builtin/reset.c | 20 +- builtin/stash.c | 54 +-- cache-tree.c | 4 +- cache-tree.h | 3 +- commit.h | 2 +- t/meson.build | 1 + t/t3452-history-split.sh | 757 +++++++++++++++++++++++++++++++++++++++++ 16 files changed, 1592 insertions(+), 341 deletions(-) --- base-commit: caec355702b7a86dadec53344ba65ae33558cfa8 change-id: 20260202-pks-history-split-fb3a93df61ba