# git -p does not detect a bare repository

2 messages from 2008-08-13 to 2008-08-13. Participants: Johannes Sixt, Jeff King.
Thread: https://gitlist.dev/t/14979

## Johannes Sixt, 2008-08-13 13:51

Subject: git -p does not detect a bare repository
Message-ID: <48A2E6D9.5000609@viscovery.net>
URL: https://gitlist.dev/e/48A2E6D9.5000609%40viscovery.net

```
If $PWD is a bare repository, is it expected behavior that

  $ git diff-tree master^ master

works as expected, but

  $ git -p diff-tree master^ master

errors out:

  fatal: ambiguous argument 'master^': unknown revision or path blabla...

-- Hannes

```

## Jeff King, 2008-08-13 16:51

Subject: Re: git -p does not detect a bare repository
Message-ID: <20080813165135.GA19490@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20080813165135.GA19490%40sigill.intra.peff.net
In-Reply-To: <48A2E6D9.5000609@viscovery.net>

```
On Wed, Aug 13, 2008 at 03:51:21PM +0200, Johannes Sixt wrote:

> If $PWD is a bare repository, is it expected behavior that
> 
>   $ git diff-tree master^ master
> 
> works as expected, but
> 
>   $ git -p diff-tree master^ master
> 
> errors out:
> 
>   fatal: ambiguous argument 'master^': unknown revision or path blabla...

Yep. This has been broken for some time, too. I bisected it down to
cad3a205 from last year, which is in v1.5.3.

It's yet another incarnation of the same bug we keep seeing (which I
suppose is why you cc'd me). Anytime you look at the config before
running setup_git_directory, it screws up the GIT_DIR calculation for
bare repositories. AFAIK it's a bad interaction between the lazy setup
in setup_git_env and the magic in setup_git_directory.

I'm sure there is a "right" solution but I haven't had time to figure it
out yet. In this case, we are looking at the config to get the value of
core.pager. As a workaround, you could try doing that lookup in the
forked pager child (however, I don't think that would work on platforms
where run_command doesn't use fork).

-Peff

```
