From: Junio C Hamano Date: Thu, 10 May 2007 00:11:15 +0000 (-0700) Subject: git-clone: don't get fooled by $PWD X-Git-Tag: v1.5.2-rc3~4^2~3 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=c2f599e09fd0496413d1744b5b89b9b5c223555d;p=git.git git-clone: don't get fooled by $PWD If you have /home/me/git symlink pointing at /pub/git/mine, trying to clone from /pub/git/his/ using relative path would not work as expected: $ cd /home/me $ cd git $ ls ../ his mine $ git clone -l -s -n ../his/stuff.git This is because "cd ../his/stuff.git" done inside git-clone to check if the repository is local is confused by $PWD, which is set to /home/me, and tries to go to /home/his/stuff.git which is different from /pub/git/his/stuff.git. We could probably say "set -P" (or "cd -P") instead, if we know the shell is POSIX, but the way the patch is coded is probably more portable. [jc: this is updated with Andy Whitcroft's improvements] Signed-off-by: Junio C Hamano --- diff --git a/git-clone.sh b/git-clone.sh index cad5c0c08..70374aaaf 100755 --- a/git-clone.sh +++ b/git-clone.sh @@ -18,7 +18,14 @@ usage() { } get_repo_base() { - (cd "$1" && (cd .git ; pwd)) 2> /dev/null + ( + cd "`/bin/pwd`" && + cd "$1" && + { + cd .git 2>/dev/null + pwd + } + ) } if [ -n "$GIT_SSL_NO_VERIFY" ]; then