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

Re: [PATCH v5] tracking branches: add advice to ambiguous refspec error

From
Tao Klerks <tao@klerks.biz>
Date
Mar 30, 2022, 14:23 UTC
Message-ID
<CAPMMpoiNZ8pvrZmMqJsRV2x+Fvq-=hpih1GGSLMe=KX785Dk0A@mail.gmail.com>
In-Reply-To
<220330.864k3fpo32.gmgdl@evledraar.gmail.com>

On Wed, Mar 30, 2022 at 3:27 PM Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote:

Show 5 quoted lines
>
>
> On Wed, Mar 30 2022, Tao Klerks via GitGitGadget wrote:
>
> Nit: I think it's been Junio's preference not to introduce C99 comments,
Argh, my apologies, bad habits.

I wonder whether anyone has any tooling to help catch this kind of thing - I'll ask in GitGitGadget, anyway.

Show 7 quoted lines
> > @@ -219,6 +233,7 @@ static int inherit_tracking(struct tracking *tracking, const char *orig_ref)
> >       return 0;
> >  }
> >
> > +
>
> Stray whitespace?
Thx, I will check more carefully next time.
Show 37 quoted lines
>
> >  /*
> >   * Used internally to set the branch.<new_ref>.{remote,merge} config
> >   * settings so that branch 'new_ref' tracks 'orig_ref'. Unlike
> > @@ -232,12 +247,16 @@ static void setup_tracking(const char *new_ref, const char *orig_ref,
> >       struct tracking tracking;
> >       struct string_list tracking_srcs = STRING_LIST_INIT_DUP;
> >       int config_flags = quiet ? 0 : BRANCH_CONFIG_VERBOSE;
> > +     struct find_tracked_branch_cb ftb_cb = {
> > +             .tracking = &tracking,
> > +             .ambiguous_remotes = STRING_LIST_INIT_DUP,
> > +     };
> >
> >       memset(&tracking, 0, sizeof(tracking));
> >       tracking.spec.dst = (char *)orig_ref;
> >       tracking.srcs = &tracking_srcs;
> >       if (track != BRANCH_TRACK_INHERIT)
> > -             for_each_remote(find_tracked_branch, &tracking);
> > +             for_each_remote(find_tracked_branch, &ftb_cb);
> >       else if (inherit_tracking(&tracking, orig_ref))
> >               goto cleanup;
> >
> > @@ -252,9 +271,38 @@ static void setup_tracking(const char *new_ref, const char *orig_ref,
> >                       goto cleanup;
> >               }
> >
> > -     if (tracking.matches > 1)
> > -             die(_("not tracking: ambiguous information for ref %s"),
> > -                 orig_ref);
> > +     if (tracking.matches > 1) {
> > +             int status = die_message(_("not tracking: ambiguous information for ref %s"),
> > +                                         orig_ref);
>
> This isn't per-se new, but I wonder if while we're at it we shold just
> quote '%s' here, which we'd usually do. I.e. this message isn't new, but
> referring again to "ref %s" (and not "ref '%s'") below is.
>

I will fix the below, but I would default to not changing the above unless someone thinks we should (not sure what the expectations are around changing error messages unnecessarily)

Show 7 quoted lines
> > +             if (advice_enabled(ADVICE_AMBIGUOUS_FETCH_REFSPEC)) {
> > +                     struct strbuf remotes_advice = STRBUF_INIT;
> > +                     struct string_list_item *item;
> > +
> > +                     for_each_string_list_item(item, &ftb_cb.ambiguous_remotes) {
>
> Nit: drop braces, not needed.
Thx, will do.
Show 18 quoted lines
>
> > +                             /*
> > +                              * TRANSLATORS: This is a line listing a remote with duplicate
> > +                              * refspecs in the advice message below. For RTL languages you'll
> > +                              * probably want to swap the "%s" and leading "  " space around.
> > +                              */
> > +                             strbuf_addf(&remotes_advice, _("  %s\n"), item->string);
> > +                     }
> > +
>
> Per the TRANSLATORS comments in get_short_oid(), it's also good to have
> one here in front of advice(). E.g.:
>
>         /*
>          * TRANSLATORS: The second argument is a \n-delimited list of
>          * duplicate refspecs, composed above.
>         */
>
Will do, thx.
Show 18 quoted lines
> > +                     advise(_("There are multiple remotes whose fetch refspecs map to the remote\n"
> > +                              "tracking ref %s:\n"
> > +                              "%s"
> > +                              "\n"
> > +                              "This is typically a configuration error.\n"
> > +                              "\n"
> > +                              "To support setting up tracking branches, ensure that\n"
> > +                              "different remotes' fetch refspecs map into different\n"
> > +                              "tracking namespaces."),
> > +                            orig_ref,
> > +                            remotes_advice.buf
> > +                            );
>
> Nit: The usual style for multi-line arguments is to "fill" lines until
> you're at 79 characters, so these last three lines (including the ");")
> can all go on the "tracking namespaces" line (until they're at 79, then
> wrap)>
>
Yep, another oversight, thx.
Show 9 quoted lines
> > +                     strbuf_release(&remotes_advice);
> > +             }
> > +             exit(status);
> > +     }
>
> Other than the minor nits noted above this version looks good to me, and
> I think addresses both the translation concerns I brought up, and the
> "let's not do advice() work if we don't need it" concern by Junio et al.
>
Awesome, thx!
Previous: Ævar Arnfjörð BjarmasonNext: Tao Klerks
Message 21 of 36 in “tracking branches: add advice to ambiguous refspec error”
  1. tracking branches: add advice to ambiguous refspec errorTao Klerks via GitGitGadget, Mar 21, 2022
  2. Ævar Arnfjörð BjarmasonMar 21, 2022
  3. Tao KlerksMar 22, 2022
  4. RFC: tracking branches: add advice to ambiguous refspec errorTao Klerks via GitGitGadget, Mar 22, 2022
  5. Ævar Arnfjörð BjarmasonMar 22, 2022
  6. tracking branches: add advice to ambiguous refspec errorTao Klerks via GitGitGadget, Mar 28, 2022
  7. Junio C HamanoMar 28, 2022
  8. Glen ChooMar 28, 2022
  9. Junio C HamanoMar 28, 2022
  10. Tao KlerksMar 28, 2022
  11. Ævar Arnfjörð BjarmasonMar 28, 2022
  12. Junio C HamanoMar 28, 2022
  13. Junio C HamanoMar 28, 2022
  14. Tao KlerksMar 29, 2022
  15. tracking branches: add advice to ambiguous refspec errorTao Klerks via GitGitGadget, Mar 29, 2022
  16. Tao KlerksMar 29, 2022
  17. Junio C HamanoMar 29, 2022
  18. Tao KlerksMar 30, 2022
  19. tracking branches: add advice to ambiguous refspec errorTao Klerks via GitGitGadget, Mar 30, 2022
  20. Ævar Arnfjörð BjarmasonMar 30, 2022
  21. Tao KlerksMar 30, 2022
  22. Tao KlerksMar 30, 2022
  23. Ævar Arnfjörð BjarmasonMar 30, 2022
  24. Junio C HamanoMar 30, 2022
  25. Ævar Arnfjörð BjarmasonMar 30, 2022
  26. Junio C HamanoMar 30, 2022
  27. Ævar Arnfjörð BjarmasonMar 30, 2022
  28. tracking branches: add advice to ambiguous refspec errorTao Klerks via GitGitGadget, Mar 31, 2022
  29. Junio C HamanoMar 31, 2022
  30. Glen ChooMar 31, 2022
  31. Tao KlerksApr 1, 2022
  32. Glen ChooApr 1, 2022
  33. Junio C HamanoMar 31, 2022
  34. tracking branches: add advice to ambiguous refspec errorTao Klerks via GitGitGadget, Apr 1, 2022
  35. Glen ChooApr 1, 2022
  36. Junio C HamanoApr 1, 2022

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.