Subject: [PATCH v5 0/8][Outreachy] rebase -i: add options to fixup command

From: Charvi Mendiratta <[email-masked]>
Date: Fri, 5 Feb 2021 00:34:59 +0530

This patch series adds fixup [-C|-c] options to interactive rebase. In
addition to amending the contents of the commit as the `fixup` command
does now, `fixup -C` replaces the commit message of the original commit
which we are fixing up with the message of the fixup commit.
And to edit the fixup commit message before committing, `fixup -c`
command is used instead of `fixup -C`. This convention is similar to
the existing `merge` command in the interactive rebase, that also supports
`-c` and `-C` options with similar meanings.

Also, `fixup -C` is intended to support amend! commit upon --autosquash
and it's working will be added in another patch series with the implementation
of amend! commit.

Changes from v4 :
(Thanks to Eric Sunshine, Christian Couder and Phillip Wood for suggestions
 and reviews)

The major change in this version is to remove the working of `fixup -C`
with amend! commit and will include in the another patch series, in order
to avoid the confusion. So there are following changes :
* removed the patch (rebase -i : teach --autosquash to work with amend!)
* updated the test script (t3437-*.sh), changed the test setup and removed
  two tests.

  Earlier every test includes the commit message having subject starting
  with amend! So, now it includes a setup of different branch for testing
  fixup with options and also updated all the tests.
  Removed the test - "skip fixup -C removes amend! from message" and also
  "sequence of fixup, fixup -C & squash --signoff works" as I think it would
  be better to test this also in the branch with amend! commit with different
  author. (Will add these tests with amend! commit implementation)

* changed the flag type from enum todo_item_flags to unsigned
* Removed amend! conditions from sequencer.c and
* Replaced fixup_-* with fixup-* in lib-rebase.sh
* fixup a small nit in Documentation

Charvi Mendiratta (5):
  sequencer: pass todo_item to do_pick_commit()
  sequencer: use const variable for commit message comments
  rebase -i: add fixup [-C | -c] command
  t3437: test script for fixup [-C|-c] options in interactive rebase
  doc/git-rebase: add documentation for fixup [-C|-c] options

Phillip Wood (3):
  rebase -i: only write fixup-message when it's needed
  sequencer: factor out code to append squash message
  rebase -i: comment out squash!/fixup! subjects from squash message

 Documentation/git-rebase.txt      |  13 +-
 rebase-interactive.c              |   4 +-
 sequencer.c                       | 270 ++++++++++++++++++++++++++----
 t/lib-rebase.sh                   |   8 +-
 t/t3415-rebase-autosquash.sh      |  30 ++--
 t/t3437-rebase-fixup-options.sh   | 133 +++++++++++++++
 t/t3437/expected-combined-message |  19 +++
 t/t3900-i18n-commit.sh            |   4 -
 8 files changed, 425 insertions(+), 56 deletions(-)
 create mode 100755 t/t3437-rebase-fixup-options.sh
 create mode 100644 t/t3437/expected-combined-message

--
2.29.0.rc1