summaryrefslogtreecommitdiff
path: root/t/t9808-git-p4-chdir.sh
diff options
context:
space:
mode:
authorMiklós Fazekas <mfazekas@szemafor.com>2013-03-11 21:45:29 (GMT)
committerJunio C Hamano <gitster@pobox.com>2013-03-11 22:03:11 (GMT)
commitbbd848633eb0a26ccd7306cb76964ab41cff6b83 (patch)
tree8a373d91668fc1a10a8ded5f162304cad21ae341 /t/t9808-git-p4-chdir.sh
parent89773db3e8ee4fd8f37b3051b6cd202e7bacb56a (diff)
downloadgit-bbd848633eb0a26ccd7306cb76964ab41cff6b83.zip
git-bbd848633eb0a26ccd7306cb76964ab41cff6b83.tar.gz
git-bbd848633eb0a26ccd7306cb76964ab41cff6b83.tar.bz2
git p4: avoid expanding client paths in chdir
The generic chdir() helper sets the PWD environment variable, as that is what is used by p4 to know its current working directory. Normally the shell would do this, but in git-p4, we must do it by hand. However, when the path contains a symbolic link, os.getcwd() will return the physical location. If the p4 client specification includes symlinks, setting PWD to the physical location causes p4 to think it is not inside the client workspace. It complains, e.g. Path /vol/bar/projects/foo/... is not under client root /p/foo One workaround is to use AltRoots in the p4 client specification, but it is cleaner to handle it directly in git-p4. Other uses of chdir still require setting PWD to an absolute path so p4 features like P4CONFIG work. See bf1d68f (git-p4: use absolute directory for PWD env var, 2011-12-09). [ pw: tweak patch and commit message ] Thanks-to: John Keeping <john@keeping.me.uk> Signed-off-by: Pete Wyckoff <pw@padd.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t9808-git-p4-chdir.sh')
-rwxr-xr-xt/t9808-git-p4-chdir.sh2
1 files changed, 1 insertions, 1 deletions
diff --git a/t/t9808-git-p4-chdir.sh b/t/t9808-git-p4-chdir.sh
index 4773296..11d2b51 100755
--- a/t/t9808-git-p4-chdir.sh
+++ b/t/t9808-git-p4-chdir.sh
@@ -58,7 +58,7 @@ test_expect_success 'p4 client root would be relative due to clone --dest' '
# When the p4 client Root is a symlink, make sure chdir() does not use
# getcwd() to convert it to a physical path.
-test_expect_failure SYMLINKS 'p4 client root symlink should stay symbolic' '
+test_expect_success SYMLINKS 'p4 client root symlink should stay symbolic' '
physical="$TRASH_DIRECTORY/physical" &&
symbolic="$TRASH_DIRECTORY/symbolic" &&
test_when_finished "rm -rf \"$physical\"" &&