# [Bug] git rev-parse --git-common-dir executed from a sub dir of the main worktree is wrong

2 messages from 2016-03-28 to 2016-03-28. Participants: Mike Rappazzo, Junio C Hamano.
Thread: https://gitlist.dev/t/41846

## Mike Rappazzo, 2016-03-28 19:43

Subject: [Bug] git rev-parse --git-common-dir executed from a sub dir of the main worktree is wrong
Message-ID: <CANoM8SU4ZWA=f1TSmNbHDBut7ox6cCVoi3K37GEmjHvygw1odg@mail.gmail.com>
URL: https://gitlist.dev/e/CANoM8SU4ZWA%3Df1TSmNbHDBut7ox6cCVoi3K37GEmjHvygw1odg%40mail.gmail.com

```
I found a case where it seems that the result of `git rev-parse
--git-common-dir` is incorrect.  If you execute the command from
within a subdirectory in the main worktree, it returns the path from
the root of the worktree to the current dir + "/.git".  (As a
refresher, running this command from the root of the worktree returns
".git").

I wrote a quick test to demonstrate the problem:


+test_expect_success 'git-common-dir inside sub-dir' '
+   (
+ mkdir -p path/to/child &&
+ cd path/to/child &&
+ echo "$(git rev-parse --show-toplevel)/.git" >expected &&
+ git rev-parse --git-common-dir >actual &&
+ test_cmp expected actual
+ )
+'
+

I suggest that we change the result of this call to _always_ return an
absolute path.  I would be willing to code this change, but I didn't
want to start anything that may be considered backwards-incompatible.

This seems related to
[1]http://thread.gmane.org/gmane.comp.version-control.git/286038

```

## Junio C Hamano, 2016-03-28 19:57

Subject: Re: [Bug] git rev-parse --git-common-dir executed from a sub dir of the main worktree is wrong
Message-ID: <xmqqk2kmxtmn.fsf@gitster.mtv.corp.google.com>
URL: https://gitlist.dev/e/xmqqk2kmxtmn.fsf%40gitster.mtv.corp.google.com
In-Reply-To: <CANoM8SU4ZWA=f1TSmNbHDBut7ox6cCVoi3K37GEmjHvygw1odg@mail.gmail.com>

```
Mike Rappazzo <rappazzo@gmail.com> writes:

> I found a case where it seems that the result of `git rev-parse
> --git-common-dir` is incorrect.  If you execute the command from
> within a subdirectory in the main worktree, it returns the path from
> the root of the worktree to the current dir + "/.git".  (As a
> refresher, running this command from the root of the worktree returns
> ".git").
>
> I wrote a quick test to demonstrate the problem:
>
>
> +test_expect_success 'git-common-dir inside sub-dir' '
> +   (
> + mkdir -p path/to/child &&
> + cd path/to/child &&
> + echo "$(git rev-parse --show-toplevel)/.git" >expected &&

... or

    "$(git rev-parse --show-cdup).git >expect

i.e. to use relative path, just like the case where you start from
the top.

> + git rev-parse --git-common-dir >actual &&
> + test_cmp expected actual
> + )
> +'
> +
>
> I suggest that we change the result of this call to _always_ return an
> absolute path.

```
