Johannes Schindelin <[email protected]> writes:
> The run_git_commit() function already knows how to amend commits, and
> with this new option, it can also clean up commit messages (i.e. strip
> out commented lines). This is needed to implement rebase -i's 'fixup'
> and 'squash' commands as sequencer commands.
>
> Signed-off-by: Johannes Schindelin <[email protected]>
> ---
> sequencer.c | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/sequencer.c b/sequencer.c
> index fa77c82..cbc3742 100644
> --- a/sequencer.c
> +++ b/sequencer.c
> @@ -481,7 +481,8 @@ static char **read_author_script(void)
> * author metadata.
> */
> static int run_git_commit(const char *defmsg, struct replay_opts *opts,
> - int allow_empty, int edit, int amend)
> + int allow_empty, int edit, int amend,
> + int cleanup_commit_message)
> {
> char **env = NULL;
> struct argv_array array;
Looks OK to me.
This starts to look like calling for a single flag word even more,
but it is a file-local helper so we can clean it up if it becomes
necessary without affecting too many things later.
> @@ -518,9 +519,12 @@ static int run_git_commit(const char *defmsg, struct
> replay_opts *opts,
> argv_array_push(&array, "-s");
> if (defmsg)
> argv_array_pushl(&array, "-F", defmsg, NULL);
> + if (cleanup_commit_message)
> + argv_array_push(&array, "--cleanup=strip");
> if (edit)
> argv_array_push(&array, "-e");
> - else if (!opts->signoff && !opts->record_origin &&
> + else if (!cleanup_commit_message &&
> + !opts->signoff && !opts->record_origin &&
> git_config_get_value("commit.cleanup", &value))
> argv_array_push(&array, "--cleanup=verbatim");
>
> @@ -785,7 +789,7 @@ static int do_pick_commit(enum todo_command command,
> struct commit *commit,
> }
> if (!opts->no_commit)
> res = run_git_commit(opts->edit ? NULL : git_path_merge_msg(),
> - opts, allow, opts->edit, 0);
> + opts, allow, opts->edit, 0, 0);
>
> leave:
> free_message(commit, &msg);