On Wed, Apr 17, 2019 at 11:23:29AM +0100, Phillip Wood wrote: > From: Denton Liu <liu.denton@xxxxxxxxx> We should drop this line before applying the patch since Phillip did all of the hard work for this patch and he's the primary author. > > If the user specifies an explicit cleanup mode then save and restore it > so that it is preserved by 'git cherry-pick --continue'. > > Signed-off-by: Phillip Wood <phillip.wood@xxxxxxxxxxxxx> > --- > sequencer.c | 28 +++++++++++++++++++++++++++- > 1 file changed, 27 insertions(+), 1 deletion(-) > > diff --git a/sequencer.c b/sequencer.c > index b049951c34..3f4b0896e3 100644 > --- a/sequencer.c > +++ b/sequencer.c > @@ -535,6 +535,24 @@ enum commit_msg_cleanup_mode get_cleanup_mode(const char *cleanup_arg, > die(_("Invalid cleanup mode %s"), cleanup_arg); > } > > +/* > + * NB using int rather than enum cleanup_mode to stop clang's > + * -Wtautological-constant-out-of-range-compare complaining that the comparison > + * is always true. > + */ > +static const char *describe_cleanup_mode(int cleanup_mode) > +{ > + static const char *modes[] = { "whitespace", > + "verbatim", > + "scissors", > + "strip" }; > + > + if (cleanup_mode < ARRAY_SIZE(modes)) > + return modes[cleanup_mode]; > + > + BUG("invalid cleanup_mode provided (%d)", cleanup_mode); > +} > + > void append_conflicts_hint(struct index_state *istate, > struct strbuf *msgbuf) > { > @@ -2366,7 +2384,10 @@ static int populate_opts_cb(const char *key, const char *value, void *data) > opts->allow_rerere_auto = > git_config_bool_or_int(key, value, &error_flag) ? > RERERE_AUTOUPDATE : RERERE_NOAUTOUPDATE; > - else > + else if (!strcmp(key, "options.default-msg-cleanup")) { > + opts->explicit_cleanup = 1; > + opts->default_msg_cleanup = get_cleanup_mode(value, 1); > + } else > return error(_("invalid key: %s"), key); > > if (!error_flag) > @@ -2770,6 +2791,11 @@ static int save_opts(struct replay_opts *opts) > res |= git_config_set_in_file_gently(opts_file, "options.allow-rerere-auto", > opts->allow_rerere_auto == RERERE_AUTOUPDATE ? > "true" : "false"); > + > + if (opts->explicit_cleanup) > + res |= git_config_set_in_file_gently(opts_file, > + "options.default-msg-cleanup", > + describe_cleanup_mode(opts->default_msg_cleanup)); > return res; > } > > -- > 2.21.0 >