git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Glen Choo <chooglen@google.com>
To: Josh Steadmon <steadmon@google.com>, git@vger.kernel.org
Cc: gitster@pobox.com, emilyshaffer@google.com, avarab@gmail.com
Subject: Re: [PATCH v5 1/2] branch: accept multiple upstream branches for tracking
Date: Tue, 07 Dec 2021 16:17:14 -0800	[thread overview]
Message-ID: <kl6llf0war1x.fsf@chooglen-macbookpro.roam.corp.google.com> (raw)
In-Reply-To: <ba7d557725e70f2ae8f10ae5992c8168eb97f2fc.1638859949.git.steadmon@google.com>

Josh Steadmon <steadmon@google.com> writes:

> @@ -75,8 +80,17 @@ int install_branch_config(int flag, const char *local, const char *origin, const
>  
>  	strbuf_reset(&key);
>  	strbuf_addf(&key, "branch.%s.merge", local);
> -	if (git_config_set_gently(key.buf, remote) < 0)
> +	/*
> +	 * We want to overwrite any existing config with all the branches in
> +	 * "remotes". Override any existing config with the first branch, but if
> +	 * more than one is provided, use CONFIG_REGEX_NONE to preserve what
> +	 * we've written so far.
> +	 */
> +	if (git_config_set_gently(key.buf, remotes->items[0].string) < 0)
>  		goto out_err;
> +	for (i = 1; i < remotes->nr; i++)
> +		if (git_config_set_multivar_gently(key.buf, remotes->items[i].string, CONFIG_REGEX_NONE, 0) < 0)
> +			goto out_err;

I think that instead of overriding all config with the first value and
then appending every value after that, it'll be more obvious to readers
if we first unset all of the config, then write every value (then the
comment wouldn't have to justify why we make two calls and iteration
starts at 1).

I believe that unsetting all values for a key is supported by
git_config_set_multivar_gently() with value == NULL, i.e.

  /*
   * unset with value = NULL, not sure how this interacts with
   * CONFIG_REGEX_NONE
   */
  if (git_config_set_multivar_gently(key.buf, NULL,
    CONFIG_REGEX_NONE, 0))
    goto out_err;

  for_each_string_list_item(item, remotes) {
    git_config_set_multivar_gently(key.buf, item, CONFIG_REGEX_NONE, 0);
  }

> @@ -121,11 +168,18 @@ int install_branch_config(int flag, const char *local, const char *origin, const
>  	advise(_(tracking_advice),
>  	       origin ? origin : "",
>  	       origin ? "/" : "",
> -	       shortname ? shortname : remote);
> +	       remotes->items[0].string);
>  
>  	return -1;
>  }

When there is more than one item in remotes->items, this advice is
_technically_ incorrect because --set-upstream-to only takes a single
upstream branch. I think that supporting multiple upstreams in
--set-upstream-to is a fairly niche use case and is out of scope of this
series, so let's not pursue that option.

Another option would be to replace the mention of --set-upstream-to with
"git config add", but that's unfriendly to the >90% of the user
population that doesn't want multiple merge entries.

If we leave the advice as-is, even though it is misleading, a user who
is sophisticated enough to set up multiple merge entries should also
know that --set-upstream-to won't solve their problems, and would
probably be able to fix their problems by mucking around with
.git/config or git config.

So I think it is ok to not change the advice and to only mention the
first merge item. However, it might be worth marking this as NEEDSWORK
so that subsequent readers of this file understand that this advice is
overly-simplistic and might be worth fixing.

>  
> +int install_branch_config(int flag, const char *local, const char *origin, const char *remote) {
> +	struct string_list remotes = STRING_LIST_INIT_DUP;
> +	string_list_append(&remotes, remote);
> +	return install_branch_config_multiple_remotes(flag, local, origin, &remotes);
> +	string_list_clear(&remotes, 0);
> +}

string_list_clear() is being called after `return`.

Ævar and Junio have commented on i18n, but I'm unfamiliar with that, so
I won't comment on that :)

  parent reply	other threads:[~2021-12-08  0:17 UTC|newest]

Thread overview: 103+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-08 20:15 [RFC PATCH] branch: add "inherit" option for branch.autoSetupMerge Josh Steadmon
2021-09-08 20:44 ` Josh Steadmon
2021-09-11  0:25 ` [PATCH v2] " Josh Steadmon
2021-09-11  0:52   ` Junio C Hamano
2021-10-17  4:35     ` Josh Steadmon
2021-10-17  5:50       ` Junio C Hamano
2021-11-15 21:57         ` Josh Steadmon
2021-10-17  4:45 ` [PATCH v3] branch: add flags and config to inherit tracking Josh Steadmon
2021-10-18 18:31   ` Ævar Arnfjörð Bjarmason
2021-10-18 21:44     ` Junio C Hamano
2021-10-18 22:11       ` Ævar Arnfjörð Bjarmason
2021-11-15 22:22     ` Josh Steadmon
2021-10-18 17:50 ` [RFC PATCH] branch: add "inherit" option for branch.autoSetupMerge Glen Choo
2021-10-18 18:08   ` Glen Choo
2021-11-15 21:44   ` Josh Steadmon
2021-11-16 18:25 ` [PATCH v4] branch: add flags and config to inherit tracking Josh Steadmon
2021-11-17  0:33   ` Glen Choo
2021-11-18 22:29   ` Junio C Hamano
2021-11-30 22:05     ` Josh Steadmon
2021-11-19  6:47   ` Ævar Arnfjörð Bjarmason
2021-11-30 21:34     ` Josh Steadmon
2021-12-01  9:11       ` Ævar Arnfjörð Bjarmason
2021-12-07  7:12 ` [PATCH v5 0/2] branch: inherit tracking configs Josh Steadmon
2021-12-07  7:12   ` [PATCH v5 1/2] branch: accept multiple upstream branches for tracking Josh Steadmon
2021-12-07  8:57     ` Ævar Arnfjörð Bjarmason
2021-12-09 23:03       ` Josh Steadmon
2021-12-10  1:00         ` Ævar Arnfjörð Bjarmason
2021-12-07 19:28     ` Junio C Hamano
2021-12-14 20:35       ` Josh Steadmon
2021-12-08  0:16     ` Glen Choo
2021-12-08  0:17     ` Glen Choo [this message]
2021-12-09 22:45       ` Josh Steadmon
2021-12-09 23:47         ` Glen Choo
2021-12-10  1:03           ` Ævar Arnfjörð Bjarmason
2021-12-10 17:32             ` Glen Choo
2021-12-11  2:18               ` Ævar Arnfjörð Bjarmason
2021-12-08 23:53     ` Glen Choo
2021-12-09  0:08       ` Glen Choo
2021-12-09 22:49         ` Josh Steadmon
2021-12-09 23:43           ` Glen Choo
2021-12-07  7:12   ` [PATCH v5 2/2] branch: add flags and config to inherit tracking Josh Steadmon
2021-12-07  9:08     ` Ævar Arnfjörð Bjarmason
2021-12-08  0:35       ` Glen Choo
2021-12-14 22:15         ` Josh Steadmon
2021-12-14 22:27       ` Josh Steadmon
2021-12-07 19:41     ` Junio C Hamano
2021-12-14 20:37       ` Josh Steadmon
2021-12-08  1:02     ` Glen Choo
2021-12-14 22:10       ` Josh Steadmon
2021-12-07 18:52   ` [PATCH v5 0/2] branch: inherit tracking configs Junio C Hamano
2021-12-08 17:06     ` Glen Choo
2021-12-10 22:48     ` Johannes Schindelin
2021-12-14 22:11       ` Josh Steadmon
2021-12-14 23:44 ` [PATCH v6 0/3] " Josh Steadmon
2021-12-14 23:44   ` [PATCH v6 1/3] branch: accept multiple upstream branches for tracking Josh Steadmon
2021-12-15 21:30     ` Junio C Hamano
2021-12-16 19:57     ` Glen Choo
2021-12-17  5:10       ` Josh Steadmon
2021-12-20 18:29         ` Glen Choo
2021-12-21  3:27           ` Josh Steadmon
2021-12-14 23:44   ` [PATCH v6 2/3] branch: add flags and config to inherit tracking Josh Steadmon
2021-12-16 21:27     ` Glen Choo
2021-12-17  5:11       ` Josh Steadmon
2021-12-14 23:44   ` [PATCH v6 3/3] config: require lowercase for branch.autosetupmerge Josh Steadmon
2021-12-15  0:43   ` [PATCH v6 0/3] branch: inherit tracking configs Josh Steadmon
2021-12-16  0:02   ` Junio C Hamano
2021-12-16  0:37     ` Glen Choo
2021-12-16  1:20       ` Junio C Hamano
2021-12-17  5:12 ` [PATCH v7 " Josh Steadmon
2021-12-17  5:12   ` [PATCH v7 1/3] branch: accept multiple upstream branches for tracking Josh Steadmon
2021-12-17  5:12   ` [PATCH v7 2/3] branch: add flags and config to inherit tracking Josh Steadmon
2021-12-17  5:12   ` [PATCH v7 3/3] config: require lowercase for branch.*.autosetupmerge Josh Steadmon
2021-12-20 21:05   ` [PATCH v7 0/3] branch: inherit tracking configs Glen Choo
2021-12-21  3:30 ` [PATCH v8 " Josh Steadmon
2021-12-21  3:30   ` [PATCH v8 1/3] branch: accept multiple upstream branches for tracking Josh Steadmon
2021-12-21  6:55     ` Junio C Hamano
2021-12-21 18:25       ` Glen Choo
2021-12-21  3:30   ` [PATCH v8 2/3] branch: add flags and config to inherit tracking Josh Steadmon
2021-12-21 18:17     ` Glen Choo
2022-01-11  1:57     ` incorrect 'git (checkout|branch) -h' output with new --track modes (was: [PATCH v8 2/3] branch: add flags and config to inherit tracking) Ævar Arnfjörð Bjarmason
2022-01-18 20:49       ` [PATCH] branch,checkout: fix --track usage strings Josh Steadmon
2022-01-18 22:26         ` Junio C Hamano
2022-01-19 10:56           ` [PATCH] parse-options: document automatic PARSE_OPT_LITERAL_ARGHELP René Scharfe
2022-01-19 14:41             ` Ævar Arnfjörð Bjarmason
     [not found]             ` <CA++g3E-azP3wFTtNkbFdmT7VW3hvULL0WkkAdwfrMb6HDtcXdg@mail.gmail.com>
2022-01-19 15:30               ` René Scharfe
2022-01-19 18:16             ` Junio C Hamano
2022-01-20 10:30               ` René Scharfe
2022-01-20 18:25                 ` Junio C Hamano
2022-01-21  9:42                   ` René Scharfe
2022-01-21 20:59                     ` Junio C Hamano
2022-01-20 12:05         ` [PATCH] branch,checkout: fix --track usage strings Ævar Arnfjörð Bjarmason
2022-01-20 12:18           ` Andreas Schwab
2022-01-20 14:00             ` Ævar Arnfjörð Bjarmason
2022-01-20 18:38           ` Junio C Hamano
2022-01-21 11:27             ` Ævar Arnfjörð Bjarmason
2022-01-21 21:12               ` Junio C Hamano
2022-01-19 10:20       ` incorrect 'git (checkout|branch) -h' output with new --track modes (was: [PATCH v8 2/3] branch: add flags and config to inherit tracking) René Scharfe
2022-01-20 12:00         ` Ævar Arnfjörð Bjarmason
2022-01-20 12:35           ` [PATCH] branch,checkout: fix --track documentation René Scharfe
2022-01-20 13:57             ` Ævar Arnfjörð Bjarmason
2022-01-20 19:08             ` Junio C Hamano
2021-12-21  3:30   ` [PATCH v8 3/3] config: require lowercase for branch.*.autosetupmerge Josh Steadmon
2021-12-21 18:13   ` [PATCH v8 0/3] branch: inherit tracking configs Glen Choo

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=kl6llf0war1x.fsf@chooglen-macbookpro.roam.corp.google.com \
    --to=chooglen@google.com \
    --cc=avarab@gmail.com \
    --cc=emilyshaffer@google.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=steadmon@google.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).