Re: [PATCH] rebase: add a config option for --no-fork-point
- From
Alex Henrie <alexhenrie24@gmail.com>
- Date
- Jan 20, 2021, 23:13 UTC
- Message-ID
- <CAMMLpeQM7JCP0=TMqf0DxDCVJvkCGDEPSKN6vYTU_xc7+QaA1Q@mail.gmail.com>
- In-Reply-To
- <xmqqturbdxi2.fsf@gitster.c.googlers.com>
On Wed, Jan 20, 2021 at 4:00 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 54 quoted lines
>
> Alex Henrie <alexhenrie24@gmail.com> writes:
>
> > @@ -1095,6 +1097,12 @@ static int rebase_config(const char *var, const char *value, void *data)
> > return 0;
> > }
> >
> > + if (!strcmp(var, "rebase.forkpoint")) {
> > + if (!git_config_bool(var, value))
> > + opts->fork_point = 0;
> > + return 0;
> > + }
>
> It is curious that this code seems to deliberatly ignore
>
> [rebase] forkpoint = true
>
> but honors
>
> [rebase] forkpoint = false
>
> Intended? IOW, why isn't this just like this?
>
> if (!strcmp(var, "rebase.forkpoint")) {
> opts->fork_point = git_config_bool(var, value);
> return 0;
> }
>
> > @@ -1306,7 +1314,6 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
> > const char *gpg_sign = NULL;
> > struct string_list exec = STRING_LIST_INIT_NODUP;
> > const char *rebase_merges = NULL;
> > - int fork_point = -1;
> > struct string_list strategy_options = STRING_LIST_INIT_NODUP;
> > struct object_id squash_onto;
> > char *squash_onto_name = NULL;
> > @@ -1406,7 +1413,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
> > N_("mode"),
> > N_("try to rebase merges instead of skipping them"),
> > PARSE_OPT_OPTARG, NULL, (intptr_t)""},
> > - OPT_BOOL(0, "fork-point", &fork_point,
> > + OPT_BOOL(0, "fork-point", &options.fork_point,
> > N_("use 'merge-base --fork-point' to refine upstream")),
> > OPT_STRING('s', "strategy", &options.strategy,
> > N_("strategy"), N_("use the given merge strategy")),
> > @@ -1494,7 +1501,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
> > die(_("cannot combine '--keep-base' with '--root'"));
> > }
> >
> > - if (options.root && fork_point > 0)
> > + if (options.root && options.fork_point > 0)
> > die(_("cannot combine '--root' with '--fork-point'"));
>
> Is that because of this code?Yes. I was trying to avoid annoying the user with errors when rebase.forkPoint is set to "true" and --root is given on the command line.
Show 5 quoted lines
> If so, perhaps the configuration parser should set the .fork_point > to (-1), so that "[rebase] forkpoint = false" that appears in your > ~/.gitconfig file can be countermanded with "[rebase] forkpoint" > that is placed in .git/config for one particular project that you do > not mind using the feature?
That's a great point. I will make that change and resubmit. Thanks!
-Alex