From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: Tao Klerks via GitGitGadget <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, Tao Klerks <tao@klerks.biz>
Subject: Re: [PATCH v2] RFC: tracking branches: add advice to ambiguous refspec error
Date: Tue, 22 Mar 2022 11:04:32 +0100 [thread overview]
Message-ID: <220322.86ils6nvog.gmgdl@evledraar.gmail.com> (raw)
In-Reply-To: <pull.1183.v2.git.1647940686394.gitgitgadget@gmail.com>
On Tue, Mar 22 2022, Tao Klerks via GitGitGadget wrote:
> From: Tao Klerks <tao@klerks.biz>
> [...]
Looking much better!
> diff --git a/Documentation/config/advice.txt b/Documentation/config/advice.txt
> index 063eec2511d..abfac4f664b 100644
> --- a/Documentation/config/advice.txt
> +++ b/Documentation/config/advice.txt
> @@ -126,4 +126,8 @@ advice.*::
> Advice shown when either linkgit:git-add[1] or linkgit:git-rm[1]
> is asked to update index entries outside the current sparse
> checkout.
> + ambiguousFetchRefspec::
> + Advice shown when branch tracking relationship setup fails due
> + to multiple remotes' refspecs mapping to the same remote
> + tracking namespace in the repo.
Let's add this in alphabetical section order. It's *somewhat* true of
the order now, but for some, but in any case I've got a WIP patch to
sort these, so since it's new adding it at the top would save us the
churn :)
> +struct find_tracked_branch_cb {
> + struct tracking *tracking;
> + struct strbuf remotes_advice;
> +};
Nice, thanks!
> static int find_tracked_branch(struct remote *remote, void *priv)
> {
> - struct tracking *tracking = priv;
> + struct find_tracked_branch_cb *ftb = priv;
> + struct tracking *tracking = ftb->tracking;
>
> if (!remote_find_tracking(remote, &tracking->spec)) {
> if (++tracking->matches == 1) {
> @@ -28,6 +34,7 @@ static int find_tracked_branch(struct remote *remote, void *priv)
> free(tracking->spec.src);
> string_list_clear(tracking->srcs, 0);
> }
> + strbuf_addf(&ftb->remotes_advice, " %s\n", remote->name);
Do this as:
strbuf_addf([...], _(" %s\n"), [...]);
And add a TRANSLATORS comment similar to show_ambiguous_object() in
object-name.c. I.e. the alignment needs to be translatable for RTL
languages.
> +static const char ambiguous_refspec_advice_pre[] =
> +N_("\n"
> +"There are multiple remotes whose fetch refspecs map to the remote\n"
> +"tracking ref";)
> +static const char ambiguous_refspec_advice_post[] =
> +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.\n");
These were split up before since we incrementally built the message....
Also, is the \n at the beginning/end really needed?
> /*
> * This is called when new_ref is branched off of orig_ref, and tries
> * to infer the settings for branch.<new_ref>.{remote,merge} from the
> @@ -228,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,
> + .remotes_advice = STRBUF_INIT,
> + };
>
> 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))
> return;
>
> @@ -248,9 +271,18 @@ static void setup_tracking(const char *new_ref, const char *orig_ref,
> return;
> }
>
> - 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);
> + if (advice_enabled(ADVICE_AMBIGUOUS_FETCH_REFSPEC))
> + advise("%s %s:\n%s\n%s",
> + _(ambiguous_refspec_advice_pre),
> + orig_ref,
> + ftb_cb.remotes_advice.buf,
> + _(ambiguous_refspec_advice_post)
> + );
...but now we don't, so this should just be inlined here. I.e. made it
one big translatable _() message, the only parameters need to be the
orig_ref and the "remote_advice" buf.
We're also missing a strbuf_release() here. You can just add it to the
"cleanup" omitted from the context:
strbuf_release(&ftb_cb.remotes_advice);
next prev parent reply other threads:[~2022-03-22 10:11 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-21 10:23 [PATCH] tracking branches: add advice to ambiguous refspec error Tao Klerks via GitGitGadget
2022-03-21 14:11 ` Ævar Arnfjörð Bjarmason
2022-03-22 9:09 ` Tao Klerks
2022-03-22 9:18 ` [PATCH v2] RFC: " Tao Klerks via GitGitGadget
2022-03-22 10:04 ` Ævar Arnfjörð Bjarmason [this message]
2022-03-28 6:51 ` [PATCH v3] " Tao Klerks via GitGitGadget
2022-03-28 16:23 ` Junio C Hamano
2022-03-28 17:12 ` Glen Choo
2022-03-28 17:23 ` Junio C Hamano
2022-03-28 18:02 ` Tao Klerks
2022-03-28 18:50 ` Ævar Arnfjörð Bjarmason
2022-03-28 20:32 ` Junio C Hamano
2022-03-28 20:27 ` Junio C Hamano
2022-03-29 11:26 ` Tao Klerks
2022-03-29 11:26 ` [PATCH v4] " Tao Klerks via GitGitGadget
2022-03-29 11:31 ` Tao Klerks
2022-03-29 15:49 ` Junio C Hamano
2022-03-30 4:17 ` Tao Klerks
2022-03-30 7:20 ` [PATCH v5] " Tao Klerks via GitGitGadget
2022-03-30 13:19 ` Ævar Arnfjörð Bjarmason
2022-03-30 14:23 ` Tao Klerks
2022-03-30 15:18 ` Tao Klerks
2022-03-30 17:14 ` Ævar Arnfjörð Bjarmason
2022-03-30 20:37 ` Junio C Hamano
2022-03-30 21:09 ` Ævar Arnfjörð Bjarmason
2022-03-30 22:07 ` Junio C Hamano
2022-03-30 22:51 ` Ævar Arnfjörð Bjarmason
2022-03-31 16:01 ` [PATCH v6] " Tao Klerks via GitGitGadget
2022-03-31 19:32 ` Junio C Hamano
2022-03-31 23:57 ` Glen Choo
2022-04-01 4:30 ` Tao Klerks
2022-04-01 16:41 ` Glen Choo
2022-03-31 19:33 ` Junio C Hamano
2022-04-01 6:05 ` [PATCH v7] " Tao Klerks via GitGitGadget
2022-04-01 16:53 ` Glen Choo
2022-04-01 19:57 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=220322.86ils6nvog.gmgdl@evledraar.gmail.com \
--to=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=tao@klerks.biz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.