# git-sh-setup.sh:cd_to_toplevel problematic with symlinks

3 messages from 2007-08-06 to 2007-08-07. Participants: Matthias Lederhofer, Uwe Kleine-König.
Thread: https://gitlist.dev/t/9411

## Matthias Lederhofer, 2007-08-06 16:10

Subject: git-sh-setup.sh:cd_to_toplevel problematic with symlinks
Message-ID: <20070806161045.GA21815@moooo.ath.cx>
URL: https://gitlist.dev/e/20070806161045.GA21815%40moooo.ath.cx

```
cd_to_toplevel takes the output of git rev-parse --show-cdup and feeds
it to cd.  The problem is that cd uses PWD to do what the user means
when saying cd .., i.e. it goes to /foo when in /foo/bar even though
/foo/bar might be a symlink.  Example:

    (in an existing git repository)
    /tmp/foo$ mkdir -p a/b
    /tmp/foo$ ln -s a/b c
    /tmp/foo$ cd c
    /tmp/foo/c$ git fetch . master:master
    git-fetch: line 108: /FETCH_HEAD: Permission denied

Is there any way to tell cd to ignore $PWD?

Another option is to have a new option to rev-parse which shows the
absolute path to tho toplevel.

```

## Matthias Lederhofer, 2007-08-07 10:11

Subject: Re: git-sh-setup.sh:cd_to_toplevel problematic with symlinks
Message-ID: <20070807101155.GA19233@moooo.ath.cx>
URL: https://gitlist.dev/e/20070807101155.GA19233%40moooo.ath.cx
In-Reply-To: <20070806211238.GA27363@informatik.uni-freiburg.de>

```
Your mail did not make it to the list, therefore I quote the full
mail.

Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de> wrote:
> Matthias Lederhofer wrote:
> > cd_to_toplevel takes the output of git rev-parse --show-cdup and feeds
> > it to cd.  The problem is that cd uses PWD to do what the user means
> > when saying cd .., i.e. it goes to /foo when in /foo/bar even though
> > /foo/bar might be a symlink.  Example:
> > 
> >     (in an existing git repository)
> >     /tmp/foo$ mkdir -p a/b
> >     /tmp/foo$ ln -s a/b c
> >     /tmp/foo$ cd c
> >     /tmp/foo/c$ git fetch . master:master
> >     git-fetch: line 108: /FETCH_HEAD: Permission denied
> > 
> > Is there any way to tell cd to ignore $PWD?
> cd -P ... does the trick.  IIRC it's in SUSv3, but once more, Solaris
> /bin/sh doesn't know about that option:
> 
> 	login@~ > uname -a
> 	SunOS login 5.10 Generic_125100-10 sun4u sparc
> 
> 	login@~ > /bin/sh
> 
> 	$ mkdir /tmp/foo; cd /tmp/foo
> 
> 	$ git init
> 	Initialized empty Git repository in .git/
> 
> 	$ mkdir -p a/b; ln -s a/b c; cd c
> 
> 	$ git rev-parse --show-cdup
> 	../../
> 
> 	$ cd -P ../../
> 	-P: does not exist

Do we care about that shell?  There was another thread about shell
script cleanup where the default sun /bin/sh doesn't support some
other features from the git shell scripts too.

```

## Uwe Kleine-König, 2007-08-07 12:45

Subject: Re: git-sh-setup.sh:cd_to_toplevel problematic with symlinks
Message-ID: <20070807124526.GA11230@informatik.uni-freiburg.de>
URL: https://gitlist.dev/e/20070807124526.GA11230%40informatik.uni-freiburg.de
In-Reply-To: <20070807101155.GA19233@moooo.ath.cx>

```
Hello Matthias,

Matthias Lederhofer wrote:
> Your mail did not make it to the list, therefore I quote the full
> mail.
Ops, thanks.

> Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de> wrote:
> > > Is there any way to tell cd to ignore $PWD?
> > cd -P ... does the trick.  IIRC it's in SUSv3, but once more, Solaris
> > /bin/sh doesn't know about that option:
> > 
[...]
> 
> Do we care about that shell?  There was another thread about shell
> script cleanup where the default sun /bin/sh doesn't support some
> other features from the git shell scripts too.
Ah, I see, Makefile defines SHELL_PATH for SunOS to /bin/bash anyhow.

OK, then maybe just use it and if it breaks for someone we will notice
it ...

Best regards
Uwe

-- 
Uwe Kleine-König

http://www.google.com/search?q=12+mol+in+dozen

```
