git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  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 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

* 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 \
    --subject='Re: [PATCH 0/9] Allow overriding the default name of the default branch' \
    /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

This is a public inbox, see mirroring instructions
on how to clone and mirror all data and code used for this inbox