# "warning: Updating the currently checked out branch may cause confusion" on bare repositories

5 messages from 2010-01-18 to 2010-01-19. Participants: Adam Megacz, Shawn O. Pearce, Jeff King.
Thread: https://gitlist.dev/t/22276

## Adam Megacz, 2010-01-18 22:41

Subject: "warning: Updating the currently checked out branch may cause confusion" on bare repositories
Message-ID: <xuu2ska3doix.fsf@nowhere.com>
URL: https://gitlist.dev/e/xuu2ska3doix.fsf%40nowhere.com

```

It seems that the message "warning: Updating the currently checked out
branch may cause confusion" is unnecessary when pushing to a bare
"myproject.git" repository (instead of a "myproject/.git" repository).

Is this the case?

If so, perhaps the warning should be omitted when the target is a bare
repository.

  - a

```

## Shawn O. Pearce, 2010-01-19 06:29

Subject: Re: "warning: Updating the currently checked out branch may cause confusion" on bare repositories
Message-ID: <20100119062904.GB23212@spearce.org>
URL: https://gitlist.dev/e/20100119062904.GB23212%40spearce.org
In-Reply-To: <xuu2ska3doix.fsf@nowhere.com>

```
Adam Megacz <adam@megacz.com> wrote:
> 
> It seems that the message "warning: Updating the currently checked out
> branch may cause confusion" is unnecessary when pushing to a bare
> "myproject.git" repository (instead of a "myproject/.git" repository).
> 
> Is this the case?
> 
> If so, perhaps the warning should be omitted when the target is a bare
> repository.

That should already be the case.  Did you create the bare repository
by taking a copy of a non-bare's .git directory?  Check your bare
repository's config file and see if core.bare = false, if so set
it to true to signal it really is bare.

-- 
Shawn.

```

## Adam Megacz, 2010-01-19 18:55

Subject: Re: "warning: Updating the currently checked out branch may cause confusion" on bare repositories
Message-ID: <xuu2my093owy.fsf@nowhere.com>
URL: https://gitlist.dev/e/xuu2my093owy.fsf%40nowhere.com
In-Reply-To: <20100119062904.GB23212@spearce.org>

```

"Shawn O. Pearce" <spearce@spearce.org> writes:
> That should already be the case.  Did you create the bare repository
> by taking a copy of a non-bare's .git directory?  Check your bare
> repository's config file and see if core.bare = false, if so set
> it to true to signal it really is bare.

Hrm, is there a reason why this is explicitly configured rather than
detected?

I was under the impression that you could create a bare repository by
simply throwing away the working tree and renaming ".git" to any other
name, but I guess I was wrong.

  - a

```

## Shawn O. Pearce, 2010-01-19 18:59

Subject: Re: "warning: Updating the currently checked out branch may cause confusion" on bare repositories
Message-ID: <20100119185906.GF23466@spearce.org>
URL: https://gitlist.dev/e/20100119185906.GF23466%40spearce.org
In-Reply-To: <xuu2my093owy.fsf@nowhere.com>

```
Adam Megacz <adam@megacz.com> wrote:
> "Shawn O. Pearce" <spearce@spearce.org> writes:
> > That should already be the case.  Did you create the bare repository
> > by taking a copy of a non-bare's .git directory?  Check your bare
> > repository's config file and see if core.bare = false, if so set
> > it to true to signal it really is bare.
> 
> Hrm, is there a reason why this is explicitly configured rather than
> detected?

I don't know why we do this.  I think its because the guessing
logic can guess wrong sometimes.
 
> I was under the impression that you could create a bare repository by
> simply throwing away the working tree and renaming ".git" to any other
> name, but I guess I was wrong.

If you delete the setting from the configuration file, Git usually
almost always guesses correctly.  :-)

Its rare to see it fail.  But I think it can fail if you create
a file called HEAD in the top level of your source code tree.
(For example.)

-- 
Shawn.

```

## Jeff King, 2010-01-19 22:43

Subject: Re: "warning: Updating the currently checked out branch may cause confusion" on bare repositories
Message-ID: <20100119224343.GA11758@coredump.intra.peff.net>
URL: https://gitlist.dev/e/20100119224343.GA11758%40coredump.intra.peff.net
In-Reply-To: <20100119185906.GF23466@spearce.org>

```
On Tue, Jan 19, 2010 at 10:59:06AM -0800, Shawn O. Pearce wrote:

> Adam Megacz <adam@megacz.com> wrote:
> > "Shawn O. Pearce" <spearce@spearce.org> writes:
> > > That should already be the case.  Did you create the bare repository
> > > by taking a copy of a non-bare's .git directory?  Check your bare
> > > repository's config file and see if core.bare = false, if so set
> > > it to true to signal it really is bare.
> > 
> > Hrm, is there a reason why this is explicitly configured rather than
> > detected?
> 
> I don't know why we do this.  I think its because the guessing
> logic can guess wrong sometimes.

Yup, although I am having trouble finding any actual discussion of when
it can go wrong. There is some mention here:

  http://article.gmane.org/gmane.comp.version-control.git/35993

and a little bit here in the 1.5.0 release notes:

  http://article.gmane.org/gmane.comp.version-control.git/39612

But the latter talks about the heuristic being "does it end with .git",
which I don't think we actually use anymore. So who knows if the
heuristic failures are even trigger-able anymore. I tried looking at the
setup code for an answer, but my eyes started bleeding from the horrible
spaghetti code and I couldn't make out any of the text.

> Its rare to see it fail.  But I think it can fail if you create
> a file called HEAD in the top level of your source code tree.
> (For example.)

I don't think that would do it. When looking for a git dir we check for
a well-formed HEAD, as well as objects and refs directories. The is_bare
check seems to be more about "did we actually find a workdir" these
days.

-Peff

```
