Re: Bug: branch checkout is detached if the case doesn't match

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ah of course!

> git pack-refs --all

Yeah that "fixes" things so you get `fatal: invalid reference: MASTER`.

I guess `git checkout` checks whether `MASTER` exists (yes, according
to MacOS), but git log checks whether the current branch (`MASTER`)
matches `master` (it doesn't).

Very unfortunate, but I guess it's not worth fixing.

Cheers,

Tim

On Sun, 20 Jun 2021 at 23:09, Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> wrote:
>
>
> On Sun, Jun 20 2021, Tim Hutt wrote:
>
> > If you try to switch to a branch (e.g. `master`), but get the case wrong, e.g:
> >
> >     git switch MASTER
> >     git checkout MASTER
> >     git switch Master
> >     git checkout Master
> >
> > etc. then it autocorrects the case (bad idea but ok), but it also
> > enables the `--detach` flag! In other words
> >
> >     git switch Master
> >
> > acts like
> >
> >     git switch -d master
> >
> > Very unexpected!
>
> This behavior isn't intentionaly, but ultimately isn't with Git, but
> with your running of Git on a filesystem that doesn't respect POSIX
> semantics.
>
> The default FS on OSX is case insensitive, we store the "master"
> reference (unpacked) under that name on the FS, so this is emergent
> behavior. Can you reproduce this after a:
>
>     git pack-refs --all
>
> ?
>
> Even after that we'll have a .git/HEAD, and I know on OSX e.g. "git log
> head...<branch>" unintentionally resolved to "HEAD" too at some point
> (probably still).
>
> There's various workarounds in git's code to deal with funny behavior on
> OSX, but it's hard to catch them all as it means having to second-guess
> standard library calls. I think you're best off creating a
> case-sensitive partition on your computer and using git there if you
> want to avoid these cases entirely.
>
> > [System Info]
> > git version:
> > git version 2.32.0
> > cpu: x86_64
> > no commit associated with this build
> > sizeof-long: 8
> > sizeof-size_t: 8
> > shell-path: /bin/sh
> > uname: Darwin 20.4.0 Darwin Kernel Version 20.4.0: Fri Mar  5 01:14:14
> > PST 2021; root:xnu-7195.101.1~3/RELEASE_X86_64 x86_64
> > compiler info: clang: 12.0.5 (clang-1205.0.22.9)
> > libc info: no libc information available
> > $SHELL (typically, interactive shell): /bin/zsh
> >
> > [Enabled Hooks]
>




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux