--- t/t1510-repo-setup.sh | 56 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 56 insertions(+), 0 deletions(-) create mode 100755 t/t1510-repo-setup.sh diff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh new file mode 100755 index 0000000..d618787 --- /dev/null +++ b/t/t1510-repo-setup.sh @@ -0,0 +1,56 @@ +#!/bin/sh + +test_description='Tests of cwd/prefix/worktree/gitdir setup in all cases' + +. ./test-lib.sh + +# A few principles for repo setup: +# +# 1. GIT_DIR is relative to user's cwd. This directory is refered as +# "git_dir" below. Auto discovered repo is also "git_dir". +# --git-dir is equivalent to GIT_DIR. +# +# 2. core.worktree is relative to git_dir +# +# 3. GIT_WORK_TREE is relative to user's cwd. --work-tree is +# equivalent to GIT_WORK_TREE. +# +# 4. .git file is relative to git_dir. Note that the repo where .git +# file points to is not considered "git_dir" in the above. +# +# 5. GIT_WORK_TREE is only effective if GIT_DIR is +# set (hence "Effective GIT_WORK_TREE" +# below). Uneffective GIT_WORK_TREE should be warned. +# +# 6. Effective GIT_WORK_TREE will override core.worktree +# +# 7. During repo discovery, if "." is found a repo, it is considered a +# bare repo unless core.worktree is set +# +# 8. core.bare conflicts with core.worktree +# +# 9. Effective GIT_WORK_TREE will override core.bare +# +# 10. When user's cwd is outside worktree, cwd will remain unchanged, +# prefix be NULL. + +test_repo() { + ( + if [ -n "$1" ]; then cd "$1"; fi && + git symbolic-ref HEAD >/dev/null && # git_dir reachability test first + git rev-parse --internal-git-dir >result && + git rev-parse --show-toplevel >>result && + git rev-parse --internal-cwd >>result && + git rev-parse --show-prefix >>result && + test_cmp expected result + ) +} + +# Bit 0 = GIT_WORK_TREE +# Bit 1 = GIT_DIR +# Bit 2 = core.worktree +# Bit 3 = .git is a file +# Bit 4 = bare repo +# Case# = encoding of the above 5 bits + +test_done -- 1.7.0.2.445.gcbdb3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html