@ -32,24 +32,25 @@ mkdir -p work/sub/dir || exit 1
mv .git repo.git || exit 1
mv .git repo.git || exit 1
say "core.worktree = relative path"
say "core.worktree = relative path"
export GIT_DIR=repo.git
GIT_DIR=repo.git
export GIT_CONFIG="$(pwd)"/$GIT_DIR/config
GIT_CONFIG="$(pwd)"/$GIT_DIR/config
export GIT_DIR GIT_CONFIG
unset GIT_WORK_TREE
unset GIT_WORK_TREE
git config core.worktree ../work
git config core.worktree ../work
test_rev_parse 'outside' false false false
test_rev_parse 'outside' false false false
cd work || exit 1
cd work || exit 1
export GIT_DIR=../repo.git
GIT_DIR=../repo.git
export GIT_CONFIG="$(pwd)"/$GIT_DIR/config
GIT_CONFIG="$(pwd)"/$GIT_DIR/config
test_rev_parse 'inside' false false true ''
test_rev_parse 'inside' false false true ''
cd sub/dir || exit 1
cd sub/dir || exit 1
export GIT_DIR=../../../repo.git
GIT_DIR=../../../repo.git
export GIT_CONFIG="$(pwd)"/$GIT_DIR/config
GIT_CONFIG="$(pwd)"/$GIT_DIR/config
test_rev_parse 'subdirectory' false false true sub/dir/
test_rev_parse 'subdirectory' false false true sub/dir/
cd ../../.. || exit 1
cd ../../.. || exit 1
say "core.worktree = absolute path"
say "core.worktree = absolute path"
export GIT_DIR=$(pwd)/repo.git
GIT_DIR=$(pwd)/repo.git
export GIT_CONFIG=$GIT_DIR/config
GIT_CONFIG=$GIT_DIR/config
git config core.worktree "$(pwd)/work"
git config core.worktree "$(pwd)/work"
test_rev_parse 'outside' false false false
test_rev_parse 'outside' false false false
cd work || exit 1
cd work || exit 1
@ -59,25 +60,26 @@ test_rev_parse 'subdirectory' false false true sub/dir/
cd ../../.. || exit 1
cd ../../.. || exit 1
say "GIT_WORK_TREE=relative path (override core.worktree)"
say "GIT_WORK_TREE=relative path (override core.worktree)"
export GIT_DIR=$(pwd)/repo.git
GIT_DIR=$(pwd)/repo.git
export GIT_CONFIG=$GIT_DIR/config
GIT_CONFIG=$GIT_DIR/config
git config core.worktree non-existent
git config core.worktree non-existent
export GIT_WORK_TREE=work
GIT_WORK_TREE=work
export GIT_WORK_TREE
test_rev_parse 'outside' false false false
test_rev_parse 'outside' false false false
cd work || exit 1
cd work || exit 1
export GIT_WORK_TREE=.
GIT_WORK_TREE=.
test_rev_parse 'inside' false false true ''
test_rev_parse 'inside' false false true ''
cd sub/dir || exit 1
cd sub/dir || exit 1
export GIT_WORK_TREE=../..
GIT_WORK_TREE=../..
test_rev_parse 'subdirectory' false false true sub/dir/
test_rev_parse 'subdirectory' false false true sub/dir/
cd ../../.. || exit 1
cd ../../.. || exit 1
mv work repo.git/work
mv work repo.git/work
say "GIT_WORK_TREE=absolute path, work tree below git dir"
say "GIT_WORK_TREE=absolute path, work tree below git dir"
export GIT_DIR=$(pwd)/repo.git
GIT_DIR=$(pwd)/repo.git
export GIT_CONFIG=$GIT_DIR/config
GIT_CONFIG=$GIT_DIR/config
export GIT_WORK_TREE=$(pwd)/repo.git/work
GIT_WORK_TREE=$(pwd)/repo.git/work
test_rev_parse 'outside' false false false
test_rev_parse 'outside' false false false
cd repo.git || exit 1
cd repo.git || exit 1
test_rev_parse 'in repo.git' false true false
test_rev_parse 'in repo.git' false true false