threads / discuss / 9411

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

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

## tl;dr

3 messages between Aug 6, 2007 and Aug 7, 2007.

replies: 2people: 2as markdown or json

Matthias Lederhofer· Aug 6, 2007, 16:10 UTC · lore

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· Aug 7, 2007, 10:11 UTC · lore

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

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:
Show 34 quoted lines
> 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· Aug 7, 2007, 12:45 UTC · re: Matthias Lederhofer · lore

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

Hello Matthias,
Matthias Lederhofer wrote:
> Your mail did not make it to the list, therefore I quote the full
> mail.
Ops, thanks.
Show 5 quoted lines
> 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

← back to recent threads