git-sh-setup: Fix scripts whose PWD is a symlink to a work-dir on OS X
On Mac OS X and possibly BSDs, /bin/pwd reads PWD from the environment if available and shows the logical path by default rather than the physical one. Unset PWD before running /bin/pwd in both cd_to_toplevel and its test. Still use the external /bin/pwd because in my Bash on Linux, the builtin pwd prints the same result whether or not PWD is set. Signed-off-by: Marcel M. Cary <marcel@oak.homeunix.org> Tested-by: Wincent Colaiuta <win@wincent.com> (on Mac OS X 10.5.5) Tested-by: Marcel Koeppen <git-dev@marzelpan.de> (on Mac OS X 10.5.6) Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
8104ebfe82
commit
dd6c1360b2
@ -96,7 +96,7 @@ cd_to_toplevel () {
|
|||||||
..|../*|*/..|*/../*)
|
..|../*|*/..|*/../*)
|
||||||
# Interpret $cdup relative to the physical, not logical, cwd.
|
# Interpret $cdup relative to the physical, not logical, cwd.
|
||||||
# Probably /bin/pwd is more portable than passing -P to cd or pwd.
|
# Probably /bin/pwd is more portable than passing -P to cd or pwd.
|
||||||
phys="$(/bin/pwd)/$cdup"
|
phys="$(unset PWD; /bin/pwd)/$cdup"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
# There's no "..", so no need to make things absolute.
|
# There's no "..", so no need to make things absolute.
|
||||||
|
|||||||
@ -10,12 +10,12 @@ test_cd_to_toplevel () {
|
|||||||
cd '"'$1'"' &&
|
cd '"'$1'"' &&
|
||||||
. git-sh-setup &&
|
. git-sh-setup &&
|
||||||
cd_to_toplevel &&
|
cd_to_toplevel &&
|
||||||
[ "$(/bin/pwd)" = "$TOPLEVEL" ]
|
[ "$(unset PWD; /bin/pwd)" = "$TOPLEVEL" ]
|
||||||
)
|
)
|
||||||
'
|
'
|
||||||
}
|
}
|
||||||
|
|
||||||
TOPLEVEL="$(/bin/pwd)/repo"
|
TOPLEVEL="$(unset PWD; /bin/pwd)/repo"
|
||||||
mkdir -p repo/sub/dir
|
mkdir -p repo/sub/dir
|
||||||
mv .git repo/
|
mv .git repo/
|
||||||
SUBDIRECTORY_OK=1
|
SUBDIRECTORY_OK=1
|
||||||
|
|||||||
Reference in New Issue
Block a user