From: Stefan Beller <sbeller@google.com>
To: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Cc: git <git@vger.kernel.org>, "Junio C Hamano" <gitster@pobox.com>,
"Jeff King" <peff@peff.net>,
"Johannes Schindelin" <johannes.schindelin@gmx.de>,
"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>,
"Thomas Gummerer" <t.gummerer@gmail.com>,
"Eric Sunshine" <sunshine@sunshineco.com>
Subject: Re: [PATCH v4 9/9] checkout & worktree: introduce checkout.defaultRemote
Date: Thu, 31 May 2018 14:49:06 -0700 [thread overview]
Message-ID: <CAGZ79kZKaZq+bqFTwe+Y3FU-1DHPjzNrvMNU=DM10EyOXxZJVw@mail.gmail.com> (raw)
In-Reply-To: <20180531195252.29173-10-avarab@gmail.com>
Hi Ævar,
Sorry for chiming in late. I have a couple of thoughts:
> (
> cd /tmp &&
> rm -rf tbdiff &&
> git clone git@github.com:trast/tbdiff.git &&
> cd tbdiff &&
> git branch -m topic &&
> git checkout master
> )
>
> That will output:
>
> Branch 'master' set up to track remote branch 'master' from 'origin'.
> Switched to a new branch 'master'
I thought master is already there after the clone operation and
you'd merely switch back to the local branch that was created at
clone time?
$ git clone git@github.com:trast/tbdiff.git && cd tbdiff
$ git branch
* master
$ cat .git/config
...
[branch "master"]
remote = origin
merge = refs/heads/master
But the observation is right, we get that message. When do we
do the setup for the master branch specifically?
>
> But as soon as a new remote is added (e.g. just to inspect something
> from someone else) the DWIMery goes away:
>
> (
> cd /tmp &&
> rm -rf tbdiff &&
> git clone git@github.com:trast/tbdiff.git &&
> cd tbdiff &&
> git branch -m topic &&
> git remote add avar git@github.com:avar/tbdiff.git &&
> git fetch avar &&
> git checkout master
> )
>
> Will output (without the advice output added earlier in this series):
>
> error: pathspec 'master' did not match any file(s) known to git.
>
> The new checkout.defaultRemote config allows me to say that whenever
> that ambiguity comes up I'd like to prefer "origin", and it'll still
> work as though the only remote I had was "origin".
>
> Also adjust the advice.checkoutAmbiguousRemoteBranchName message to
> mention this new config setting to the user, the full output on my
> git.git is now (the last paragraph is new):
>
> $ ./git --exec-path=$PWD checkout master
> error: pathspec 'master' did not match any file(s) known to git.
> hint: The argument 'master' matched more than one remote tracking branch.
> hint: We found 26 remotes with a reference that matched. So we fell back
> hint: on trying to resolve the argument as a path, but failed there too!
> hint:
> hint: Perhaps you meant fully qualify the branch name? E.g. origin/<name>
s/meant fully/meant to fully/
s/? E.g./?\nFor example/
> hint: instead of <name>?
In builtin/submodule--helper.c there is get_default_remote() which also
hardcodes "origin". I think that is a safe thing to do.
> hint:
> hint: If you'd like to always have checkouts of 'master' prefer one remote,
> hint: e.g. the 'origin' remote, consider setting checkout.defaultRemote=origin
> hint: in your config. See the 'git-config' manual page for details.
his new setting elevates one remote over all others, which may
be enough for most setups and not confusing, too.
Consider the following:
git clone https://kernel.googlesource.com/pub/scm/git/git && cd git
git remote add gitster https://github.com/gitster/git
git remote add interesting-patches https://github.com/avar/git
git remote add my-github https://github.com/stefanbeller/git
git checkout master
This probably means I want to have origin/master (from kernel.org)
git checkout ab/checkout-implicit-remote
This probably wants to have it from gitster/ (as it is not found on kernel.org);
I am not sure if it would want to look at interesting-patches/ that mirrors
github, but probably if it were not to be found at gitster.
So maybe we rather want a setup to give a defined priority for
the search order:
git config dwim.remoteSearchOrder origin gitster avar
Stepping back a bit, there is already an order in the config file
for the remotes, and that order is used for example for 'fetch --all'.
I wonder if we want to take that order? (Or are the days of hand
editing the config over and this is too arcane? We would need a
config command to re order remotes). Then we could just have a
boolean switch to use the config order on ambiguity.
Although you might want to have a different order for fetching
and looking for the right checkout.
> I considered splitting this into checkout.defaultRemote and
> worktree.defaultRemote, but it's probably less confusing to break our
> own rules that anything shared between config should live in core.*
> than have two config settings, and I couldn't come up with a short
> name under core.* that made sense (core.defaultRemoteForCheckout?).
core.dwimRemote ? It's a bit cryptic, though.
> See also 70c9ac2f19 ("DWIM "git checkout frotz" to "git checkout -b
> frotz origin/frotz"", 2009-10-18) which introduced this DWIM feature
> to begin with, and 4e85333197 ("worktree: make add <path> <branch>
> dwim", 2017-11-26) which added it to git-worktree.
Stefan
next prev parent reply other threads:[~2018-05-31 21:49 UTC|newest]
Thread overview: 95+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-02 10:54 [PATCH] checkout & worktree: introduce a core.DWIMRemote setting Ævar Arnfjörð Bjarmason
2018-05-02 15:21 ` Duy Nguyen
2018-05-02 18:00 ` Eric Sunshine
2018-05-02 18:09 ` Duy Nguyen
2018-05-02 18:25 ` Ævar Arnfjörð Bjarmason
2018-05-03 13:18 ` [PATCH v2] checkout & worktree: introduce checkout.implicitRemote Ævar Arnfjörð Bjarmason
2018-05-03 15:14 ` Duy Nguyen
2018-05-04 7:54 ` Ævar Arnfjörð Bjarmason
2018-05-04 14:58 ` Duy Nguyen
2018-05-04 18:02 ` Ævar Arnfjörð Bjarmason
2018-05-04 9:58 ` Eric Sunshine
2018-05-24 19:47 ` [PATCH v3] " Ævar Arnfjörð Bjarmason
2018-05-25 8:12 ` Junio C Hamano
2018-05-25 14:42 ` Duy Nguyen
2018-05-25 18:38 ` Ævar Arnfjörð Bjarmason
2018-05-26 12:49 ` Duy Nguyen
2018-05-31 7:45 ` Ævar Arnfjörð Bjarmason
2018-05-31 19:52 ` [PATCH v4 0/9] ambiguous checkout UI & checkout.defaultRemote Ævar Arnfjörð Bjarmason
2018-06-01 21:10 ` [PATCH v5 0/8] " Ævar Arnfjörð Bjarmason
2018-06-02 11:50 ` [PATCH v6 " Ævar Arnfjörð Bjarmason
2018-06-05 14:40 ` [PATCH v7 " Ævar Arnfjörð Bjarmason
2018-06-05 14:40 ` [PATCH v7 1/8] checkout tests: index should be clean after dwim checkout Ævar Arnfjörð Bjarmason
2018-06-05 15:45 ` SZEDER Gábor
2018-07-27 17:48 ` [PATCH] tests: make use of the test_must_be_empty function Ævar Arnfjörð Bjarmason
2018-07-27 21:50 ` Junio C Hamano
2018-07-31 0:17 ` SZEDER Gábor
2018-08-22 17:48 ` [PATCH] t6018-rev-list-glob: fix 'empty stdin' test SZEDER Gábor
2018-08-22 17:53 ` Eric Sunshine
2018-08-22 18:59 ` SZEDER Gábor
2018-08-22 20:30 ` Eric Sunshine
2018-08-22 18:01 ` Junio C Hamano
2018-08-22 18:50 ` Junio C Hamano
2018-08-22 19:23 ` Jeff King
2018-08-22 19:50 ` [PATCH] rev-list: make empty --stdin not an error Jeff King
2018-08-22 20:42 ` Junio C Hamano
2018-08-22 21:37 ` Jeff King
2018-08-22 21:50 ` Junio C Hamano
2018-08-22 21:55 ` Jeff King
2018-08-22 21:41 ` Junio C Hamano
2018-06-05 14:40 ` [PATCH v7 2/8] checkout.h: wrap the arguments to unique_tracking_name() Ævar Arnfjörð Bjarmason
2018-06-05 14:40 ` [PATCH v7 3/8] checkout.c: introduce an *_INIT macro Ævar Arnfjörð Bjarmason
2018-06-05 14:40 ` [PATCH v7 4/8] checkout.c: change "unique" member to "num_matches" Ævar Arnfjörð Bjarmason
2018-06-05 14:40 ` [PATCH v7 5/8] checkout: pass the "num_matches" up to callers Ævar Arnfjörð Bjarmason
2018-06-05 14:40 ` [PATCH v7 6/8] builtin/checkout.c: use "ret" variable for return Ævar Arnfjörð Bjarmason
2018-06-05 14:40 ` [PATCH v7 7/8] checkout: add advice for ambiguous "checkout <branch>" Ævar Arnfjörð Bjarmason
2018-06-05 14:40 ` [PATCH v7 8/8] checkout & worktree: introduce checkout.defaultRemote Ævar Arnfjörð Bjarmason
2018-06-02 11:50 ` [PATCH v6 1/8] checkout tests: index should be clean after dwim checkout Ævar Arnfjörð Bjarmason
2018-06-02 11:50 ` [PATCH v6 2/8] checkout.h: wrap the arguments to unique_tracking_name() Ævar Arnfjörð Bjarmason
2018-06-02 11:50 ` [PATCH v6 3/8] checkout.c: introduce an *_INIT macro Ævar Arnfjörð Bjarmason
2018-06-02 11:50 ` [PATCH v6 4/8] checkout.c]: change "unique" member to "num_matches" Ævar Arnfjörð Bjarmason
2018-06-02 11:50 ` [PATCH v6 5/8] checkout: pass the "num_matches" up to callers Ævar Arnfjörð Bjarmason
2018-06-02 11:50 ` [PATCH v6 6/8] builtin/checkout.c: use "ret" variable for return Ævar Arnfjörð Bjarmason
2018-06-02 11:50 ` [PATCH v6 7/8] checkout: add advice for ambiguous "checkout <branch>" Ævar Arnfjörð Bjarmason
2018-06-02 11:50 ` [PATCH v6 8/8] checkout & worktree: introduce checkout.defaultRemote Ævar Arnfjörð Bjarmason
2018-06-03 7:58 ` Eric Sunshine
2018-06-01 21:10 ` [PATCH v5 1/8] checkout tests: index should be clean after dwim checkout Ævar Arnfjörð Bjarmason
2018-06-01 21:10 ` [PATCH v5 2/8] checkout.h: wrap the arguments to unique_tracking_name() Ævar Arnfjörð Bjarmason
2018-06-01 21:10 ` [PATCH v5 3/8] checkout.[ch]: introduce an *_INIT macro Ævar Arnfjörð Bjarmason
2018-06-01 22:40 ` Eric Sunshine
2018-06-01 21:10 ` [PATCH v5 4/8] checkout.[ch]: change "unique" member to "num_matches" Ævar Arnfjörð Bjarmason
2018-06-01 22:41 ` Eric Sunshine
2018-06-01 21:10 ` [PATCH v5 5/8] checkout: pass the "num_matches" up to callers Ævar Arnfjörð Bjarmason
2018-06-01 21:10 ` [PATCH v5 6/8] builtin/checkout.c: use "ret" variable for return Ævar Arnfjörð Bjarmason
2018-06-01 21:10 ` [PATCH v5 7/8] checkout: add advice for ambiguous "checkout <branch>" Ævar Arnfjörð Bjarmason
2018-06-01 22:52 ` Eric Sunshine
2018-06-01 21:10 ` [PATCH v5 8/8] checkout & worktree: introduce checkout.defaultRemote Ævar Arnfjörð Bjarmason
2018-05-31 19:52 ` [PATCH v4 1/9] checkout tests: index should be clean after dwim checkout Ævar Arnfjörð Bjarmason
2018-06-01 4:06 ` Junio C Hamano
2018-06-01 19:43 ` Ævar Arnfjörð Bjarmason
2018-05-31 19:52 ` [PATCH v4 2/9] checkout.h: wrap the arguments to unique_tracking_name() Ævar Arnfjörð Bjarmason
2018-05-31 19:52 ` [PATCH v4 3/9] checkout.[ch]: move struct declaration into *.h Ævar Arnfjörð Bjarmason
2018-05-31 21:45 ` Thomas Gummerer
2018-06-01 2:14 ` Junio C Hamano
2018-06-01 9:56 ` Ævar Arnfjörð Bjarmason
2018-05-31 19:52 ` [PATCH v4 4/9] checkout.[ch]: introduce an *_INIT macro Ævar Arnfjörð Bjarmason
2018-06-01 4:16 ` Junio C Hamano
2018-05-31 19:52 ` [PATCH v4 5/9] checkout.[ch]: change "unique" member to "num_matches" Ævar Arnfjörð Bjarmason
2018-05-31 19:52 ` [PATCH v4 6/9] checkout: pass the "num_matches" up to callers Ævar Arnfjörð Bjarmason
2018-05-31 19:52 ` [PATCH v4 7/9] builtin/checkout.c: use "ret" variable for return Ævar Arnfjörð Bjarmason
2018-05-31 19:52 ` [PATCH v4 8/9] checkout: add advice for ambiguous "checkout <branch>" Ævar Arnfjörð Bjarmason
2018-06-01 4:32 ` Junio C Hamano
2018-06-01 5:11 ` Junio C Hamano
2018-06-01 9:54 ` Ævar Arnfjörð Bjarmason
2018-06-04 1:58 ` Junio C Hamano
2018-06-01 9:50 ` Ævar Arnfjörð Bjarmason
2018-06-01 7:53 ` Eric Sunshine
2018-06-01 19:59 ` Ævar Arnfjörð Bjarmason
2018-05-31 19:52 ` [PATCH v4 9/9] checkout & worktree: introduce checkout.defaultRemote Ævar Arnfjörð Bjarmason
2018-05-31 21:49 ` Stefan Beller [this message]
2018-06-01 8:04 ` Eric Sunshine
2018-06-01 9:47 ` Ævar Arnfjörð Bjarmason
2018-05-31 22:22 ` Thomas Gummerer
2018-06-01 2:17 ` Junio C Hamano
2018-05-04 7:14 ` [PATCH] checkout & worktree: introduce a core.DWIMRemote setting Eric Sunshine
2018-05-04 7:23 ` Eric Sunshine
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAGZ79kZKaZq+bqFTwe+Y3FU-1DHPjzNrvMNU=DM10EyOXxZJVw@mail.gmail.com' \
--to=sbeller@google.com \
--cc=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=johannes.schindelin@gmx.de \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
--cc=sunshine@sunshineco.com \
--cc=t.gummerer@gmail.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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).