Skip to content

RFC rebase -i: Implement `reword` and `squash` in terms of `do_pick`

Fabian Ruch git 1 version New

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest0 of 7 patches 0 repliesNew

Patches in v1 No applies recorded yet

None of the 7 patches the cover letter announces are in this archive.

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [RFC PATCH 0/7] rebase -i: Implement `reword` and `squash` in terms of `do_pick`

Hi,

This patch series is part of the undertaking to add command line options to to-do list commands. The goal is to be able to write something similar to

pick --reset-author --signoff a Some changes
pick b Some more changes
squash --no-edit c Ack Some more changes.

The first submission to the mailing list adds options parsing to do_pick and reimplements the current set of to-do list commands in terms[1] of a parametrized do_pick. It neither adds new commands to to-do lists nor exposes the command line options feature to the user. Still it makes the implementation of do_next slightly more straight-forward and the function do_pick behave more like an internal git-cherry-pick.

The patches try to accomplish one thing at a time but are not standalone in the sense that each of them constitutes a frame only in which a subsequent patch can express its one thing. For instance, only committing once and not dying in do_pick are things specific to implementing squash in terms of do_pick but presented as separate patches so that their correctness can be discussed independently.

The last patch contains some notes about when to run the post-rewrite hook, something I could not figure out myself.

Thanks for your time,
Fabian

[1] pick, reword, squash, fixup

Fabian Ruch (7):
rebase -i: Make option handling in pick_one more flexible rebase -i: Teach do_pick the option --edit rebase -i: Stop on root commits with empty log messages rebase -i: Commit only once when rewriting picks rebase -i: Do not die in do_pick
rebase -i: Prepare for squash in terms of do_pick --amend rebase -i: Teach do_pick the options --amend and --file

 git-rebase--interactive.sh    | 194 +++++++++++++++++++++++++++++++-----------
 t/t3404-rebase-interactive.sh |   8 ++
 t/t3412-rebase-root.sh        |  39 +++++++++
 3 files changed, 193 insertions(+), 48 deletions(-)
Signature · 1 line
2.0.0