git add "$D/a/b/c/d" &&
git ls-files >current &&
echo a/b/c/d >expect &&
- diff -u expect current
+ test_cmp expect current
'
) &&
git ls-files >current &&
echo a/e/f >expect &&
- diff -u expect current
+ test_cmp expect current
'
git rm -f --cached "$D/a/b/c/d" &&
git ls-files >current &&
echo a/e/f >expect &&
- diff -u expect current
+ test_cmp expect current
'
) &&
git ls-files >current &&
echo a/b/c/d >expect &&
- diff -u expect current
+ test_cmp expect current
'
git add a &&
git ls-files "$D/a/e/../b" >current &&
echo a/b/c/d >expect &&
- diff -u expect current
+ test_cmp expect current
'
git ls-files "../b/c"
) >current &&
echo c/d >expect &&
- diff -u expect current
+ test_cmp expect current
'
git ls-files --full-name "../e/f"
) >current &&
echo a/e/f >expect &&
- diff -u expect current
+ test_cmp expect current
'
test_expect_success 'log using absolute path names' '
echo bb >>a/b/c/d &&
- git commit -m "bb" $(pwd)/a/b/c/d &&
+ git commit -m "bb" "$(pwd)/a/b/c/d" &&
git log a/b/c/d >f1.txt &&
git log "$(pwd)/a/b/c/d" >f2.txt &&
- diff -u f1.txt f2.txt
+ test_cmp f1.txt f2.txt
'
test_expect_success 'blame using absolute path names' '
git blame a/b/c/d >f1.txt &&
git blame "$(pwd)/a/b/c/d" >f2.txt &&
- diff -u f1.txt f2.txt
+ test_cmp f1.txt f2.txt
'
test_expect_success 'setup deeper work tree' '
test_expect_success 'add a directory outside the work tree' '(
cd tester &&
d1="$(cd .. ; pwd)" &&
- git add "$d1"
+ test_must_fail git add "$d1"
)'
+
test_expect_success 'add a file outside the work tree, nasty case 1' '(
cd tester &&
f="$(pwd)x" &&
echo "$f" &&
touch "$f" &&
- git add "$f"
+ test_must_fail git add "$f"
)'
test_expect_success 'add a file outside the work tree, nasty case 2' '(
f="$(pwd | sed "s/.$//")x" &&
echo "$f" &&
touch "$f" &&
- git add "$f"
+ test_must_fail git add "$f"
)'
test_done