This patch series teaches `git commit --fixup` to create "amend!" commit
as an alternative that works with `git rebase --autosquash`. It allows to
fixup both the content and the commit message of the specified commit.
Here we add two suboptions to the `--fixup`, first `amend` suboption that
creates an "amend!" commit. It takes the staged changes and also allows to
edit the commit message of the commit we are fixing.
Example usuage:
git commit --fixup=amend:<commit>
Secondly, `reword` suboption that creates an empty "amend!" commit i.e it
ignores the staged changes and only allows to reword/edit the commit message
of the commit we are fixing.
Example usuage:
git commit --fixup=reword:<commit>
** This work is rebased on the top of cm/rebase-i-updates.
Changes from v1:
(Thanks Junio C Hamano for the reviews and pointing out the changes required in v1)
* (As `reword` and `amend` suboptions of `--fixup` uses apha
characters only) add helper function that does strspn(alpha) to
detect that suboptions are passed to `--fixup` instead of checking
if ':' occurs before '^' or '@'.
* update the `check_fixup_reword_options()` function and disallow
`reword` option with path(argc), interactive and patch_interactive.
Also update the test script (t7500).
* make '-m' commit message option incompatible with `amend` and
`reword` suboption, as it is more expected to edit the original
commit message while preparing "amend!" commit and using `-m` for
directly appending the commit message results in the confusion at
the user end. So, error out when combined with `m` and update
the respective tests.
* slight improvements in commit messages and update the documention
(git-commit.txt) to include the above changes.
Charvi Mendiratta (6):
sequencer: export subject_length()
commit: add amend suboption to --fixup to create amend! commit
commit: add a reword suboption to --fixup
t7500: add tests for --fixup=[amend|reword] options
t3437: use --fixup with options to create amend! commit
doc/git-commit: add documentation for fixup=[amend|reword] options
Documentation/git-commit.txt | 39 ++++++-
Documentation/git-rebase.txt | 21 ++--
builtin/commit.c | 117 +++++++++++++++++--
commit.c | 14 +++
commit.h | 3 +
sequencer.c | 14 ---
t/t3437-rebase-fixup-options.sh | 30 +----
t/t7500-commit-template-squash-signoff.sh | 134 ++++++++++++++++++++++
8 files changed, 306 insertions(+), 66 deletions(-)
--
2.29.0.rc1