git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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
Previous: Junio C HamanoNext: Junio C Hamano
Message 3 of 9 in “rebase: add a config option for --no-fork-point”
  1. rebase: add a config option for --no-fork-pointAlex Henrie, Jan 20, 2021
  2. Junio C HamanoJan 20, 2021
  3. Alex HenrieJan 20, 2021
  4. Junio C HamanoJan 21, 2021
  5. Alex HenrieJan 21, 2021
  6. Denton LiuJan 21, 2021
  7. Alex HenrieJan 21, 2021
  8. Junio C HamanoFeb 18, 2021
  9. Alex HenrieFeb 20, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.