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

Re: [PATCH] pull: abort if --ff-only is given and fast-forwarding is impossible

From
Alex Henrie <alexhenrie24@gmail.com>
Date
Jul 11, 2021, 20:00 UTC
Message-ID
<CAMMLpeRwpxEe5qJumwXa5hyjeUBrTRDU3-1OSHDNc=UiNqN48w@mail.gmail.com>
In-Reply-To
<60eb259e1a75d_974bf20895@natae.notmuch>

On Sun, Jul 11, 2021 at 11:08 AM Felipe Contreras <felipe.contreras@gmail.com> wrote:

Show 34 quoted lines
>
> Alex Henrie wrote:
> > The warning about pulling without specifying how to reconcile divergent
> > branches says that after setting pull.rebase to true, --ff-only can
> > still be passed on the command line to require a fast-forward. Make that
> > actually work.
>
> I don't know where that is being said, but it's wrong: --ff-only is
> meant for merge only.
>
> > --- a/builtin/pull.c
> > +++ b/builtin/pull.c
> > @@ -1046,9 +1046,14 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
> >
> >       can_ff = get_can_ff(&orig_head, &merge_heads.oid[0]);
> >
> > -     if (rebase_unspecified && !opt_ff && !can_ff) {
> > -             if (opt_verbosity >= 0)
> > -                     show_advice_pull_non_ff();
> > +     if (!can_ff) {
> > +             if (opt_ff) {
> > +                     if (!strcmp(opt_ff, "--ff-only"))
> > +                             die_ff_impossible();
>
> As I've mentioned multiple times already, this is wrong.
>
> The advice clearly says:
>
>   You can also pass --rebase, --no-rebase, or --ff-only on the command
>   line to override the configured default per invocation.
>
> With your patch now this is even less true:
>
>   git -c pull.ff=only pull --rebase

I think it's an improvement over the current situation. --no-rebase does not override pull.ff=only, so it makes sense that --rebase does not override pull.ff=only either. Besides, it's generally better to abort instead of rewriting history if it's not perfectly clear that the user meant to rewrite the history.

-Alex
Previous: Felipe ContrerasNext: Felipe Contreras
Message 3 of 28 in “pull: abort if --ff-only is given and fast-forwarding is impossible”
  1. pull: abort if --ff-only is given and fast-forwarding is impossibleAlex Henrie, Jul 11, 2021
  2. Felipe ContrerasJul 11, 2021
  3. Alex HenrieJul 11, 2021
  4. Felipe ContrerasJul 11, 2021
  5. Phillip WoodJul 12, 2021
  6. Felipe ContrerasJul 12, 2021
  7. Alex HenrieJul 12, 2021
  8. Felipe ContrerasJul 12, 2021
  9. Junio C HamanoJul 12, 2021
  10. Felipe ContrerasJul 12, 2021
  11. Elijah NewrenJul 12, 2021
  12. Felipe ContrerasJul 12, 2021
  13. Alex HenrieJul 12, 2021
  14. Alex HenrieJul 12, 2021
  15. Junio C HamanoJul 12, 2021
  16. Felipe ContrerasJul 12, 2021
  17. Elijah NewrenJul 12, 2021
  18. Junio C HamanoJul 12, 2021
  19. Felipe ContrerasJul 12, 2021
  20. Elijah NewrenJul 12, 2021
  21. Elijah NewrenJul 12, 2021
  22. Felipe ContrerasJul 12, 2021
  23. Phillip WoodJul 12, 2021
  24. Son Luong NgocJul 14, 2021
  25. Felipe ContrerasJul 14, 2021
  26. Elijah NewrenJul 14, 2021
  27. Junio C HamanoJul 14, 2021
  28. Felipe ContrerasJul 14, 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.