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:
parent
8104ebfe82
commit
dd6c1360b2
@ -96,7 +96,7 @@ cd_to_toplevel () {
|
||||
..|../*|*/..|*/../*)
|
||||
# Interpret $cdup relative to the physical, not logical, cwd.
|
||||
# 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.
|
||||
|
@ -10,12 +10,12 @@ test_cd_to_toplevel () {
|
||||
cd '"'$1'"' &&
|
||||
. git-sh-setup &&
|
||||
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
|
||||
mv .git repo/
|
||||
SUBDIRECTORY_OK=1
|
||||
|
Loading…
Reference in New Issue
Block a user