git@vger.kernel.org list mirror (unofficial, one of many)
 help / color / mirror / code / Atom feed
From: Jonathan Nieder <jrnieder@gmail.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com>,
	git@vger.kernel.org,
	Johannes Schindelin <johannes.schindelin@gmx.de>,
	Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCH 00/28] Use main as default branch name
Date: Tue, 17 Nov 2020 18:56:11 -0800	[thread overview]
Message-ID: <20201118025611.GF360414@google.com> (raw)
In-Reply-To: <87r1oraewl.fsf@x220.int.ebiederm.org>

Eric W. Biederman wrote:

> Instead of having a fixed name across all repos for the initially
> created branch can we instead use the directory name of the repo for the
> branch name?
>
> Advantages:
>
> - The branch name that is somewhat meaningful to the creator of the git
>   repo.
>
>   I have at least two repos where I wound up doing this by hand.  So at
>   least for me it is something I am doing anyway.

Example: this would make the main branch in a new git.git repository
default to "git".  However, we would be free to switch to some other
workflow-specific name like "stable".

> - Tools can not hard code the name of an initially created branch and
>   expect it to work.
>
>   This moves us farther from the realm of people assuming incorrectly
>   that there is something special about the branch created by default.

What's especially nice about this is that a repository's local
basename and the URL at which it gets published do not always
coincide.  So scripts designed to be robust would be more likely to
use commands like "git branch --show-current" instead of trying to
guess using the new rule.

That said, if I put myself in the shoes of such a script author for a
moment, I'm likely to be irritated.  What started as a static string
now becomes something dynamic.  If I put myself in the shoes of
someone who has *inherited* a script (a testsuite, maybe), I'm likely
to be even more irritated.

For testsuites, one can buy time by setting init.defaultBranch, but
not for other scripts.

Are there things we can do to make a script author's life easier?

Today if I want to look up a remote repository's default branch,
the best I can do is

	git ls-remote --symref origin HEAD

The output is not as easy to parse as I'd like: it's split between two
lines and has multiple fields on each line.  Worse, it is slow, since
it scans all refs instead of just the ref I wanted.  Even worse, if
another ref in the remote repository ends with /HEAD (e.g.,
refs/remotes/someremote/HEAD), it prints that, too.

If I could do something like

	git ls-remote --format='%(symref)' --exact-match origin HEAD

(using for-each-ref style formats, and allowing exact matching) then
that would be helpful.

In general, this aspect of a less deterministic first branchname is
appealing; it would result in improving the quality of the ecosystem
of tools built around Git.  This is what I like most about this
proposal.

[...]
> At least for my usage main is a pretty huge misnomer as I barely use the
> branch with the master.  Renaming my unused branch main implies that I
> am using the tool wrong.

Is that because "master" is inherited from your upstream?  Which
branch would you want people to check out by default when they clone
from your repo?

For what it's worth:

- I find this proposal really tempting, and have liked it since the
  moment gitster brought it up on #git-devel.  The main reason I
  haven't brought it up since then is that I didn't have a patch
  implementing it. :)

- That said, a fixed string as default would be fine with me, too.

Thanks,
Jonathan

  parent reply	other threads:[~2020-11-18  2:58 UTC|newest]

Thread overview: 163+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-12 22:43 Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 01/28] t0060: preemptively adjust alignment Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 02/28] t[01]*: adjust the references to the default branch name "main" Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 03/28] t2*: " Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 04/28] t3[0-3]*: " Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 05/28] t3416: preemptively adjust alignment in a comment Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 06/28] t34*: adjust the references to the default branch name "main" Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 07/28] t3[5-9]*: " Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 08/28] t4*: " Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 09/28] t5323: prepare centered comment for `master` -> `main` Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 10/28] t5[0-4]*: adjust the references to the default branch name "main" Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 11/28] t5503: prepare aligned comment for replacing `master` with `main` Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 12/28] t550*: adjust the references to the default branch name "main" Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 13/28] t551*: " Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 14/28] t55[23]*: " Johannes Schindelin via GitGitGadget
2020-11-13 10:02   ` Ævar Arnfjörð Bjarmason
2020-11-13 14:18     ` Johannes Schindelin
2020-11-16 20:07     ` Junio C Hamano
2020-11-12 22:43 ` [PATCH 15/28] t55[4-9]*: " Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 16/28] t5[6-9]*: " Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 17/28] t6[0-3]*: " Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 18/28] t64*: preemptively adjust alignment to prepare for `master` -> `main` Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 19/28] t6[4-9]*: adjust the references to the default branch name "main" Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 20/28] t7[0-4]*: " Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 21/28] t7[5-9]*: " Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 22/28] t8*: " Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 23/28] t9[0-4]*: " Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 24/28] t9[5-7]*: " Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 25/28] tests(git-p4): transition to the default branch name `main` Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 26/28] t99*: adjust the references to the default branch name "main" Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 27/28] tests: drop prereq `PREPARE_FOR_MAIN_BRANCH` where no longer needed Johannes Schindelin via GitGitGadget
2020-11-12 22:43 ` [PATCH 28/28] Change the default branch name to `main` Don Goodman-Wilson via GitGitGadget
2020-11-13  9:57   ` Ævar Arnfjörð Bjarmason
2020-11-13 14:09     ` Johannes Schindelin
2020-11-16 20:04       ` Junio C Hamano
2020-11-13  0:11 ` [PATCH 00/28] Use main as default branch name Felipe Contreras
2020-11-13 12:55 ` Ævar Arnfjörð Bjarmason
2020-11-13 14:22   ` Johannes Schindelin
2020-11-13 16:13     ` [RFC/PATCH] tests: support testing with an arbitrary default branch (sort of) Ævar Arnfjörð Bjarmason
2020-11-13 19:14       ` Jeff King
2020-11-13 22:00         ` Johannes Schindelin
2020-11-13 22:39           ` Johannes Schindelin
2020-11-13 23:49           ` Ævar Arnfjörð Bjarmason
     [not found]             ` <nycvar.QRO.7.76.6.2011162118060.18437@tvgsbejvaqbjf.bet>
2020-11-18 13:32               ` Ævar Arnfjörð Bjarmason
2020-11-18 14:16                 ` Felipe Contreras
2020-11-20 11:36                   ` Ævar Arnfjörð Bjarmason
2020-11-20 16:00                     ` Felipe Contreras
2020-11-18 15:56                 ` Junio C Hamano
2020-11-19  9:32                   ` Johannes Schindelin
2020-11-19 19:35                     ` Junio C Hamano
2020-11-22 19:07                       ` Johannes Schindelin
2020-11-19 10:46                 ` Johannes Schindelin
2020-11-14  0:25           ` Felipe Contreras
2020-11-13 17:42   ` [PATCH 00/28] Use main as default branch name Felipe Contreras
2020-11-14  6:13 ` Junio C Hamano
2020-11-16 19:52   ` Junio C Hamano
2020-11-17 16:10     ` Johannes Schindelin
2020-11-17 19:09       ` Junio C Hamano
2020-11-18 20:58         ` Johannes Schindelin
2020-11-17 16:12 ` [PATCH v2 00/27] tests: use " Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 01/27] t0060: preemptively adjust alignment Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 02/27] t[01]*: adjust the references to the default branch name "main" Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 03/27] t2*: " Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 04/27] t3[0-3]*: " Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 05/27] t3416: preemptively adjust alignment in a comment Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 06/27] t34*: adjust the references to the default branch name "main" Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 07/27] t3[5-9]*: " Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 08/27] t4*: " Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 09/27] t5323: prepare centered comment for `master` -> `main` Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 10/27] t5[0-4]*: adjust the references to the default branch name "main" Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 11/27] t5503: prepare aligned comment for replacing `master` with `main` Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 12/27] t550*: adjust the references to the default branch name "main" Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 13/27] t551*: " Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 14/27] t55[23]*: " Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 15/27] t55[4-9]*: " Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 16/27] t5[6-9]*: " Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 17/27] t6[0-3]*: " Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 18/27] t64*: preemptively adjust alignment to prepare for `master` -> `main` Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 19/27] t6[4-9]*: adjust the references to the default branch name "main" Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 20/27] t7[0-4]*: " Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 21/27] t7[5-9]*: " Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 22/27] t8*: " Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 23/27] t9[0-4]*: " Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 24/27] t9[5-7]*: " Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 25/27] tests(git-p4): transition to the default branch name `main` Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 26/27] t99*: adjust the references to the default branch name "main" Johannes Schindelin via GitGitGadget
2020-11-17 16:12   ` [PATCH v2 27/27] tests: drop prereq `PREPARE_FOR_MAIN_BRANCH` where no longer needed Johannes Schindelin via GitGitGadget
2020-11-18 11:48   ` [PATCH v2 28/27] tests: run tests omitted by PREPARE_FOR_MAIN_BRANCH Ævar Arnfjörð Bjarmason
2020-11-18 23:56     ` Johannes Schindelin
2020-11-19 19:30       ` Junio C Hamano
2020-11-20 13:09         ` Johannes Schindelin
2020-11-20 18:08           ` Junio C Hamano
2020-11-18 23:44   ` [PATCH v3 00/28] tests: use main as default branch name Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 01/28] tests: mark tests relying on the current default for `init.defaultBranch` Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 02/28] t0060: preemptively adjust alignment Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 03/28] t[01]*: adjust the references to the default branch name "main" Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 04/28] t2*: " Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 05/28] t3[0-3]*: " Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 06/28] t3416: preemptively adjust alignment in a comment Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 07/28] t34*: adjust the references to the default branch name "main" Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 08/28] t3[5-9]*: " Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 09/28] t4*: " Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 10/28] t5323: prepare centered comment for `master` -> `main` Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 11/28] t5[0-4]*: adjust the references to the default branch name "main" Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 12/28] t5503: prepare aligned comment for replacing `master` with `main` Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 13/28] t550*: adjust the references to the default branch name "main" Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 14/28] t551*: " Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 15/28] t55[23]*: " Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 16/28] t55[4-9]*: " Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 17/28] t5[6-9]*: " Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 18/28] t6[0-3]*: " Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 19/28] t64*: preemptively adjust alignment to prepare for `master` -> `main` Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 20/28] t6[4-9]*: adjust the references to the default branch name "main" Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 21/28] t7[0-4]*: " Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 22/28] t7[5-9]*: " Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 23/28] t8*: " Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 24/28] t9[0-4]*: " Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 25/28] t9[5-7]*: " Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 26/28] tests(git-p4): transition to the default branch name `main` Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 27/28] t99*: adjust the references to the default branch name "main" Johannes Schindelin via GitGitGadget
2020-11-18 23:44     ` [PATCH v3 28/28] tests: drop prereq `PREPARE_FOR_MAIN_BRANCH` where no longer needed Johannes Schindelin via GitGitGadget
2020-11-19 23:35     ` [PATCH v3 00/28] tests: use main as default branch name Junio C Hamano
2020-11-17 20:48 ` [PATCH 00/28] Use " Eric W. Biederman
2020-11-17 22:47   ` Felipe Contreras
2020-11-17 23:33     ` Jeff King
2020-11-18  0:07       ` Junio C Hamano
2020-11-18  1:25         ` Jeff King
2020-11-18  2:40           ` Jonathan Nieder
2020-11-18  5:43             ` Junio C Hamano
2020-11-18 11:32               ` Johannes Schindelin
2020-11-18 15:43                 ` Junio C Hamano
2020-11-19  9:22                   ` Johannes Schindelin
2020-11-18  0:18       ` Felipe Contreras
2020-11-18  1:22         ` Jeff King
2020-11-18  1:45           ` Felipe Contreras
2020-11-18  2:06             ` Jeff King
2020-11-18  2:39               ` Jonathan Nieder
2020-11-18 10:12                 ` Felipe Contreras
2020-11-18  9:04               ` Felipe Contreras
2020-11-17 22:55   ` Junio C Hamano
2020-11-17 23:16     ` Felipe Contreras
2020-11-18  0:10       ` Junio C Hamano
2020-11-18  0:51         ` Felipe Contreras
2020-11-18 23:45     ` Philip Oakley
2020-11-19  0:00       ` Johannes Schindelin
2020-11-19  0:30         ` Philip Oakley
2020-11-19  0:30         ` Peter Hadlaw
2020-11-19  0:44           ` Philip Oakley
2020-11-19  0:55             ` Peter Hadlaw
2020-11-19  1:51       ` Junio C Hamano
2020-11-19 10:35         ` Philip Oakley
2020-11-19 11:10           ` Sergey Organov
2020-11-19 11:50             ` Philip Oakley
2020-11-19 12:33               ` Sergey Organov
2020-11-21 23:01             ` Junio C Hamano
2020-11-22 10:21               ` Sergey Organov
2020-11-22 11:20                 ` Philip Oakley
2020-11-22 13:23                   ` Sergey Organov
2020-11-22 20:18                     ` Philip Oakley
2020-11-22 21:56                 ` Felipe Contreras
2020-11-22 23:54                   ` Junio C Hamano
2020-11-18  2:56   ` Jonathan Nieder [this message]
2020-11-18  5: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

  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=20201118025611.GF360414@google.com \
    --to=jrnieder@gmail.com \
    --cc=ebiederm@xmission.com \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=gitster@pobox.com \
    --cc=johannes.schindelin@gmx.de \
    --subject='Re: [PATCH 00/28] Use main as default branch name' \
    /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

git@vger.kernel.org list mirror (unofficial, one of many)

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://public-inbox.org/git
	git clone --mirror http://ou63pmih66umazou.onion/git
	git clone --mirror http://czquwvybam4bgbro.onion/git
	git clone --mirror http://hjrcffqmbrq6wope.onion/git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V1 git git/ https://public-inbox.org/git \
		git@vger.kernel.org
	public-inbox-index git

Example config snippet for mirrors.
Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.version-control.git
	nntp://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/inbox.comp.version-control.git
	nntp://ie5yzdi7fg72h7s4sdcztq5evakq23rdt33mfyfcddc5u3ndnw24ogqd.onion/inbox.comp.version-control.git
	nntp://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/inbox.comp.version-control.git
	nntp://news.gmane.io/gmane.comp.version-control.git
 note: .onion URLs require Tor: https://www.torproject.org/

code repositories for project(s) associated with this inbox:

	https://80x24.org/mirrors/git.git

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git