"Phillip Wood via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > +static int parse_opt_conflict(const struct option *o, const char *arg, int unset) > +{ > + struct checkout_opts *opts = o->value; > + > + if (unset) { > + opts->conflict_style = -1; > + return 0; > + } > + opts->conflict_style = parse_conflict_style_name(arg); > + if (opts->conflict_style < 0) > + return error(_("unknown conflict style '%s'"), arg); > + > + return 0; > +} > + > static struct option *add_common_options(struct checkout_opts *opts, > struct option *prevopts) > { > @@ -1628,8 +1649,9 @@ static struct option *add_common_options(struct checkout_opts *opts, > PARSE_OPT_OPTARG, option_parse_recurse_submodules_worktree_updater), > OPT_BOOL(0, "progress", &opts->show_progress, N_("force progress reporting")), > OPT_BOOL('m', "merge", &opts->merge, N_("perform a 3-way merge with the new branch")), > - OPT_STRING(0, "conflict", &opts->conflict_style, N_("style"), > - N_("conflict style (merge, diff3, or zdiff3)")), > + OPT_CALLBACK(0, "conflict", opts, N_("style"), > + N_("conflict style (merge, diff3, or zdiff3)"), > + parse_opt_conflict), > OPT_END() > }; > struct option *newopts = parse_options_concat(prevopts, options); Looking good.