git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jeff King <peff@peff.net>
To: Chris Torek <chris.torek@gmail.com>
Cc: Craig H Maynard <chmaynard@me.com>, git@vger.kernel.org
Subject: Re: Regarding Git and Branch Naming
Date: Fri, 26 Jun 2020 16:35:39 -0400	[thread overview]
Message-ID: <20200626203539.GA1173768@coredump.intra.peff.net> (raw)
In-Reply-To: <CAPx1GvcZk2o7f8-27xokwxUayWwO+t5qdsMjLrjBymc+WHznmw@mail.gmail.com>

On Fri, Jun 26, 2020 at 11:33:53AM -0700, Chris Torek wrote:

> On Fri, Jun 26, 2020 at 10:19 AM Craig H Maynard <chmaynard@me.com> wrote:
> > Does the git init command really need to create a default branch? Perhaps that step could be left to the user.
> 
> The HEAD pseudo-ref must exist and must contain a valid OID or
> branch name.  (If it does not exist, Git says that the directory
> is not a repository.  Perhaps this test could be weakened, but
> that's definitely a fairly big change.)
> 
> In a new, empty repository there are no valid OIDs, so HEAD must
> contain a branch name.  The branch itself need not exist, but
> whatever name is in HEAD is the branch that will be created
> when the user makes the first commit.

We definitely _could_ extend HEAD to allow a "not pointing at anything"
state. Presumably for reading that would behave like the "pointing at a
branch that doesn't exist yet" case. But I think the experience it
creates for writing is not very good. I.e., I think the best we could do
is something like:

  $ git init
  $ git add some-files
  $ git commit -m whatever
  fatal: HEAD does not point to any branch
  hint: use "git checkout -b <branch>" to make commits on <branch>

Perhaps that's not _too_ bad, but it feels a bit unfriendly (and
definitely more likely to cause backwards compatibility issues than
picking _some_ default name). There would also be a lot of corner cases
to cover and debug (e.g., "git checkout foo" moving away from the "no
branch" state should make the usual complaints if we'd have to overwrite
or modify index and untracked files).

-Peff

  reply	other threads:[~2020-06-26 20:35 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-26 16:18 Regarding Git and Branch Naming Craig H Maynard
2020-06-26 18:33 ` Chris Torek
2020-06-26 20:35   ` Jeff King [this message]
2020-06-26 21:07     ` Junio C Hamano
2020-06-27  3:05       ` Jeff King
2020-06-26 21:33     ` Philip Oakley
2020-06-27  3:11       ` Jeff King
2020-06-26 21:58     ` Elijah Newren
2020-06-27  3:14       ` Jeff King

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=20200626203539.GA1173768@coredump.intra.peff.net \
    --to=peff@peff.net \
    --cc=chmaynard@me.com \
    --cc=chris.torek@gmail.com \
    --cc=git@vger.kernel.org \
    /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).