Re: git-sh-setup.sh:cd_to_toplevel problematic with symlinks
From: Matthias Lederhofer <hidden>
Date: 2016-06-15 22:43:28
Your mail did not make it to the list, therefore I quote the full mail. Uwe Kleine-König [off-list ref] wrote:
Matthias Lederhofer wrote:quoted
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.