From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Denton Liu <liu.denton@gmail.com>
Cc: Pratyush Yadav <me@yadavpratyush.com>,
Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com>,
git@vger.kernel.org, don@goodman-wilson.com, stolee@gmail.com,
peff@peff.net, sandals@crustytoothpaste.net
Subject: Re: [PATCH 0/9] Allow overriding the default name of the default branch
Date: Tue, 23 Jun 2020 22:10:13 +0200 (CEST) [thread overview]
Message-ID: <nycvar.QRO.7.76.6.2006232122360.54@tvgsbejvaqbjf.bet> (raw)
In-Reply-To: <20200616001955.GA686455@generichostname>
Hi Denton,
On Mon, 15 Jun 2020, Denton Liu wrote:
> On Mon, Jun 15, 2020 at 12:26:03AM +0200, Johannes Schindelin wrote:
> > > For example, my vim plugins are submodules in the '~/.vim/bundle'
> > > directory. When I want to update them, I run:
> > >
> > > git submodule foreach 'git remote update && git reset --hard origin/master'
> > >
> > > With this change hitting a Git release, more and more people would call
> > > their main branch different names they like. So what is the recommended
> > > way to do something like this now? How do I checkout the tip of the main
> > > branch? How do I push to the main branch? How do I pull from the main
> > > branch? And so on...
> >
> > ... has less to do with a new Git release, but more with the decision of
> > an existing project to change their main branch name.
> >
> > That's something users already had to deal with, of course. For example,
> > projects switching to the Git Flow model will start to use the main branch
> > name `development`.
>
> I brought this concern up in a parallel thread but I'll bring it up here
> too since it's relevant. Currently, in the .gitmodules file, if the
> branch is not specified, it defaults to 'master'.
>
> When I want to update my vim plugins, I run
> `git submodule update --remote` which pulls in all of my submodules'
> 'master' branches. By convention, a lack of `branch` key in .gitmodules
> conventionally means 'master'.
>
> With your change, it becomes the value of git_main_branch_name(), which
> is fine for now. However, if this value changes to something else, then
> when I update my Git, suddenly `git submodule update --remote` will be
> broken for me as all of the new repositories that I pull will be for an
> incorrect (and possibly missing) branch.
>
> This leaves us in a scenario where one developer running an older
> version of Git would have submodule updates work perfectly fine while a
> developer with a newer version would have it suddenly broken. This might
> be hard to debug, especially for someone who doesn't follow the release
> notes around Git and doesn't realise why the default has suddenly
> changed.
>
> This problem gets much worse if we allow the main branch name to be
> configurable as then the *private* configurations that a developer has
> may have an effect on the *publicly visible* behaviour of a repository.
>
> I think I see three possible solutions to this:
>
> 1. Special case 'master' in submodules to retain backwards
> compatibility.
>
> I don't think this is very appealing as if the change is made to
> use another default branch name, then the "default" branch for
> submodules would be "master" even though the new default
> everywhere else would be different. And in the future, someone
> who doesn't know the context behind all of this would be very
> confused where there are two different default branch names.
>
> 2. Disable 'update --remote' support for submodules that don't
> specify a branch.
>
> If Git detects that a branch key is missing when trying to do an
> 'update --remote', it should just quit out and refuse to do
> anything. Of course, this a very backwards incompatible change
> and it would require several release cycles to implement where
> we warn users about this impending change before we actually
> make it happen.
>
> 3. Make 'update --remote' get HEAD.
>
> I argue that this is how it always should've been implemented
> but, alas, I can't go back in time and fix it. Regardless, it
> might be good to flip this to be the default if we're going to
> be making the change anyway.
>
> Unfortunately, this suffers from both the problems of 1 and 2.
> As with 1, we'll end up in a situation where users with
> different versions of Git may experience different behaviours
> given the same public repository and I think this is definitely
> undesirable. With 2, this change will also require a long
> deprecation period which I don't think it compatible with how
> people seem to want the default branch switch to happen this
> release.
>
> So I dunno. I think my opinion leans on not changing the default branch
> at all. Since it seems like the consensus is generally that it _will_
> change, I think I would prefer options 3, 2 and 1 in that order.
>
> Thoughts?
My intuition matches your preference, and I have a strong preference for
3.
It took some banging my head (not my HEAD...) against the code to convince
myself that the patch I prepared for v3 is good: I managed to confuse
myself what with all those submodules and clones in t7406.
Ciao,
Dscho
next prev parent reply other threads:[~2020-06-23 20:10 UTC|newest]
Thread overview: 180+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-10 21:19 [PATCH 0/9] Allow overriding the default name of the default branch Johannes Schindelin via GitGitGadget
2020-06-10 21:19 ` [PATCH 1/9] init: allow overriding the default branch name for new repositories Don Goodman-Wilson via GitGitGadget
2020-06-10 23:22 ` brian m. carlson
2020-06-11 0:16 ` Eric Sunshine
2020-06-11 14:09 ` Johannes Schindelin
2020-06-11 15:28 ` Junio C Hamano
2020-06-16 12:45 ` Jeff King
2020-06-16 12:47 ` Jeff King
2020-06-18 13:08 ` Johannes Schindelin
2020-06-23 20:32 ` Johannes Schindelin
2020-06-11 9:35 ` Phillip Wood
2020-06-12 11:55 ` Johannes Schindelin
2020-06-12 16:51 ` Junio C Hamano
2020-06-14 22:00 ` Johannes Schindelin
2020-06-15 10:00 ` Phillip Wood
2020-06-11 10:23 ` Alban Gruin
2020-06-11 23:14 ` Junio C Hamano
2020-06-11 23:46 ` brian m. carlson
2020-06-12 12:45 ` Johannes Schindelin
2020-06-13 18:01 ` Alban Gruin
2020-06-14 8:57 ` Johannes Schindelin
2020-06-16 12:25 ` Jeff King
2020-06-18 10:17 ` Johannes Schindelin
2020-06-10 21:19 ` [PATCH 2/9] remote: respect `core.defaultBranchName` Johannes Schindelin via GitGitGadget
2020-06-16 12:35 ` Jeff King
2020-06-18 10:21 ` Johannes Schindelin
2020-06-18 11:50 ` Jeff King
2020-06-23 21:15 ` Johannes Schindelin
2020-06-10 21:19 ` [PATCH 3/9] send-pack/transport-helper: " Johannes Schindelin via GitGitGadget
2020-06-10 21:19 ` [PATCH 4/9] testsvn: " Johannes Schindelin via GitGitGadget
2020-06-10 21:19 ` [PATCH 5/9] submodule: use the (possibly overridden) default branch name Johannes Schindelin via GitGitGadget
2020-06-15 10:46 ` Denton Liu
2020-06-10 21:19 ` [PATCH 6/9] clone: learn about the possibly-configured " Johannes Schindelin via GitGitGadget
2020-06-10 22:58 ` Junio C Hamano
2020-06-10 21:19 ` [PATCH 7/9] fmt-merge-msg: " Johannes Schindelin via GitGitGadget
2020-06-10 22:59 ` Junio C Hamano
2020-06-10 21:19 ` [PATCH 8/9] fast-export: respect the possibly-overridden " Johannes Schindelin via GitGitGadget
2020-06-10 21:54 ` Matt Rogers
2020-06-10 23:25 ` Junio C Hamano
2020-06-10 23:39 ` brian m. carlson
2020-06-11 0:20 ` Matt Rogers
2020-06-11 5:26 ` Junio C Hamano
2020-06-11 14:05 ` Johannes Schindelin
2020-06-11 15:05 ` Re* " Junio C Hamano
2020-06-11 16:44 ` Junio C Hamano
2020-06-11 18:18 ` Junio C Hamano
2020-06-12 12:07 ` Johannes Schindelin
2020-06-12 12:32 ` Junio C Hamano
2020-06-12 12:03 ` Johannes Schindelin
2020-06-12 12:50 ` Junio C Hamano
2020-06-12 12:53 ` Johannes Schindelin
2020-06-12 13:18 ` Johannes Schindelin
2020-06-12 15:19 ` Junio C Hamano
2020-06-12 15:22 ` Junio C Hamano
2020-06-13 5:00 ` Johannes Schindelin
2020-06-12 15:14 ` Junio C Hamano
2020-06-13 11:49 ` Johannes Sixt
2020-06-13 16:25 ` Junio C Hamano
2020-06-13 14:47 ` Johannes Schindelin
2020-06-13 18:49 ` Junio C Hamano
2020-06-14 8:55 ` Johannes Schindelin
2020-06-17 20:06 ` Junio C Hamano
2020-06-23 21:11 ` Johannes Schindelin
2020-06-23 21:32 ` Junio C Hamano
2020-06-13 14:44 ` Johannes Schindelin
2020-06-11 13:57 ` Johannes Schindelin
2020-06-11 18:19 ` Junio C Hamano
2020-06-12 12:07 ` Johannes Schindelin
2020-06-10 21:19 ` [PATCH 9/9] Document how the default branch name can be overridden Johannes Schindelin via GitGitGadget
2020-06-11 0:18 ` Junio C Hamano
2020-06-10 23:11 ` [PATCH 0/9] Allow overriding the default name of the default branch Junio C Hamano
2020-06-11 5:42 ` Junio C Hamano
2020-06-11 13:44 ` Johannes Schindelin
2020-06-11 14:44 ` Junio C Hamano
2020-06-10 23:41 ` brian m. carlson
2020-06-11 1:07 ` Taylor Blau
2020-06-11 14:33 ` Johannes Schindelin
2020-06-15 10:03 ` Pratyush Yadav
2020-06-14 22:26 ` Johannes Schindelin
2020-06-16 0:19 ` Denton Liu
2020-06-23 20:10 ` Johannes Schindelin [this message]
2020-06-15 23:10 ` brian m. carlson
2020-06-15 12:50 ` [PATCH v2 00/12] " Johannes Schindelin via GitGitGadget
2020-06-15 12:50 ` [PATCH v2 01/12] fast-export: do anonymize the primary branch name Junio C Hamano via GitGitGadget
2020-06-16 12:58 ` Jeff King
2020-06-17 18:16 ` Junio C Hamano
2020-06-17 21:23 ` Jeff King
2020-06-18 2:06 ` Elijah Newren
2020-06-18 6:30 ` Junio C Hamano
2020-06-18 7:13 ` Elijah Newren
2020-06-18 11:45 ` Jeff King
2020-06-15 12:50 ` [PATCH v2 02/12] fmt-merge-msg: introduce a way to override the main " Johannes Schindelin via GitGitGadget
2020-06-15 15:00 ` Phillip Wood
2020-06-23 12:31 ` Johannes Schindelin
2020-06-15 17:05 ` Junio C Hamano
2020-06-23 19:19 ` Johannes Schindelin
2020-06-16 8:46 ` Ævar Arnfjörð Bjarmason
2020-06-17 18:21 ` Junio C Hamano
2020-06-16 13:04 ` Jeff King
2020-06-17 18:23 ` Junio C Hamano
2020-06-18 13:15 ` Johannes Schindelin
2020-06-17 20:56 ` Johannes Sixt
2020-06-17 21:16 ` Junio C Hamano
2020-06-23 21:12 ` Johannes Schindelin
2020-06-15 12:50 ` [PATCH v2 03/12] send-pack/transport-helper: respect `core.mainBranch` Johannes Schindelin via GitGitGadget
2020-06-15 12:50 ` [PATCH v2 04/12] git_main_branch_name(): optionally report the full ref name Johannes Schindelin via GitGitGadget
2020-06-15 15:04 ` Phillip Wood
2020-06-23 19:17 ` Johannes Schindelin
2020-06-15 12:50 ` [PATCH v2 05/12] fast-export: handle overridden main branch names correctly Johannes Schindelin via GitGitGadget
2020-06-15 15:05 ` Phillip Wood
2020-06-16 13:10 ` Jeff King
2020-06-16 15:49 ` Phillip Wood
2020-06-18 10:08 ` Johannes Schindelin
2020-06-15 17:09 ` Junio C Hamano
2020-06-23 19:22 ` Johannes Schindelin
2020-06-15 12:50 ` [PATCH v2 06/12] branch -m: adjust `core.mainBranch` if necessary Johannes Schindelin via GitGitGadget
2020-06-15 12:50 ` [PATCH v2 07/12] init: allow specifying the main branch name for the new repository Johannes Schindelin via GitGitGadget
2020-06-15 12:50 ` [PATCH v2 08/12] init: allow overriding the default main branch name via the config Don Goodman-Wilson via GitGitGadget
2020-06-15 12:50 ` [PATCH v2 09/12] clone: handle overridden main branch names Johannes Schindelin via GitGitGadget
2020-06-16 13:22 ` Jeff King
2020-06-23 20:58 ` Johannes Schindelin
2020-06-15 12:50 ` [PATCH v2 10/12] remote: learn about the possibly-overridden default main branch name Johannes Schindelin via GitGitGadget
2020-06-15 12:50 ` [PATCH v2 11/12] submodule: use the correct default for the " Johannes Schindelin via GitGitGadget
2020-06-16 13:46 ` Jeff King
2020-06-23 21:03 ` Johannes Schindelin
2020-06-23 21:14 ` Jeff King
2020-06-15 12:50 ` [PATCH v2 12/12] testsvn: respect `init.defaultBranch` Johannes Schindelin via GitGitGadget
2020-06-16 13:51 ` Jeff King
2020-06-23 21:07 ` Johannes Schindelin
2020-06-23 22:33 ` [PATCH v3 0/8] Allow overriding the default name of the default branch Johannes Schindelin via GitGitGadget
2020-06-23 22:33 ` [PATCH v3 1/8] fmt-merge-msg: stop treating `master` specially Johannes Schindelin via GitGitGadget
2020-06-24 16:16 ` Junio C Hamano
2020-06-25 13:07 ` Johannes Schindelin
2020-06-23 22:33 ` [PATCH v3 2/8] send-pack/transport-helper: avoid mentioning a particular branch Johannes Schindelin via GitGitGadget
2020-06-24 0:36 ` Junio C Hamano
2020-06-24 12:44 ` Johannes Schindelin
2020-06-24 15:44 ` Junio C Hamano
2020-06-25 13:05 ` Johannes Schindelin
2020-06-23 22:33 ` [PATCH v3 3/8] submodule: use a better fall-back for missing remote.<name>.branch Johannes Schindelin via GitGitGadget
2020-06-24 2:18 ` Philippe Blain
2020-06-24 12:51 ` Johannes Schindelin
2020-06-23 22:33 ` [PATCH v3 4/8] init: allow specifying the initial branch name for the new repository Johannes Schindelin via GitGitGadget
2020-06-24 0:58 ` Junio C Hamano
2020-06-24 12:55 ` Johannes Schindelin
2020-06-23 22:33 ` [PATCH v3 5/8] init: allow setting the default for the initial branch name via the config Don Goodman-Wilson via GitGitGadget
2020-06-24 1:05 ` Junio C Hamano
2020-06-24 12:56 ` Johannes Schindelin
2020-06-24 16:25 ` Junio C Hamano
2020-06-23 22:33 ` [PATCH v3 6/8] clone: use configured default branch name when appropriate Johannes Schindelin via GitGitGadget
2020-06-23 22:33 ` [PATCH v3 7/8] remote: use the " Johannes Schindelin via GitGitGadget
2020-06-24 1:10 ` Junio C Hamano
2020-06-24 13:00 ` Johannes Schindelin
2020-06-23 22:33 ` [PATCH v3 8/8] testsvn: respect `init.defaultBranch` Johannes Schindelin via GitGitGadget
2020-06-24 14:46 ` [PATCH v4 0/9] Allow overriding the default name of the default branch Johannes Schindelin via GitGitGadget
2020-06-24 14:46 ` [PATCH v4 1/9] fmt-merge-msg: stop treating `master` specially Johannes Schindelin via GitGitGadget
2020-06-29 16:20 ` Đoàn Trần Công Danh
2020-06-29 13:27 ` Johannes Schindelin
2020-06-30 15:05 ` Đoàn Trần Công Danh
2020-07-01 10:39 ` Johannes Schindelin
2020-07-01 19:54 ` Junio C Hamano
2020-06-24 14:46 ` [PATCH v4 2/9] send-pack/transport-helper: avoid mentioning a particular branch Johannes Schindelin via GitGitGadget
2020-06-24 14:46 ` [PATCH v4 3/9] submodule: fall back to remote's HEAD for missing remote.<name>.branch Johannes Schindelin via GitGitGadget
2020-06-24 16:17 ` Junio C Hamano
2020-06-24 14:46 ` [PATCH v4 4/9] docs: add missing diamond brackets Johannes Schindelin via GitGitGadget
2020-06-24 14:46 ` [PATCH v4 5/9] init: allow specifying the initial branch name for the new repository Johannes Schindelin via GitGitGadget
2020-06-24 14:46 ` [PATCH v4 6/9] init: allow setting the default for the initial branch name via the config Don Goodman-Wilson via GitGitGadget
2020-06-24 14:46 ` [PATCH v4 7/9] clone: use configured default branch name when appropriate Johannes Schindelin via GitGitGadget
2020-06-24 14:46 ` [PATCH v4 8/9] remote: use the " Johannes Schindelin via GitGitGadget
2020-06-24 14:46 ` [PATCH v4 9/9] testsvn: respect `init.defaultBranch` Johannes Schindelin via GitGitGadget
2020-06-24 16:26 ` [PATCH v4 0/9] Allow overriding the default name of the default branch Junio C Hamano
2020-06-25 13:03 ` Johannes Schindelin
2020-06-29 22:41 ` brian m. carlson
2020-07-12 13:03 ` Edward Thomson
2020-07-12 8:19 ` Johannes Schindelin
[not found] ` <CA+WKDT1GMNTY5N862-7ui70D6-b1u6fuUkvctEYo+57aJGbjmw@mail.gmail.com>
2020-07-14 14:55 ` Johannes Schindelin
2020-06-16 9:47 ` [PATCH " Ævar Arnfjörð Bjarmason
2020-06-16 14:09 ` Jeff King
2020-06-16 14:24 ` Jeff King
2020-06-23 20:28 ` Johannes Schindelin
2020-06-17 20:28 ` 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
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=nycvar.QRO.7.76.6.2006232122360.54@tvgsbejvaqbjf.bet \
--to=johannes.schindelin@gmx.de \
--cc=don@goodman-wilson.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=liu.denton@gmail.com \
--cc=me@yadavpratyush.com \
--cc=peff@peff.net \
--cc=sandals@crustytoothpaste.net \
--cc=stolee@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).