{"thread":{"id":"25559","subject":"[PATCH 01/34] builtins: print setup info if repo is found","startedAt":"2010-10-27T14:49:03Z","lastAt":"2010-10-28T00:16:06Z","messageCount":45,"participants":["Nguyễn Thái Ngọc Duy","Nguyen Thai Ngoc Duy","Jonathan Nieder"],"isPatch":true,"patchVersion":1,"patchTotal":34},"messages":[{"id":"154495","messageId":"1288190977-30875-1-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":null,"subject":"[PATCH 00/34] repo setup test cases","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:03Z","receivedAt":"2010-10-27T14:49:03Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"A complete series after the WIP [1]. The rules are bent a bit, see 2/34.\n\n178/376 test cases fail, but mostly because GIT_DIR=.git-file is\nnot supported. I'll send a bandage series shortly that will bring the\nnumber of failed test cases to 20.\n\n[1] 1287922310-14678-1-git-send-email-pclouds@gmail.com\n\nNguyễn Thái Ngọc Duy (34):\n  builtins: print setup info if repo is found\n  Add t1510 and basic rules that run repo setup\n  t1510: setup case #0\n  t1510: setup case #1\n  t1510: setup case #2\n  t1510: setup case #3\n  t1510: setup case #4\n  t1510: setup case #5\n  t1510: setup case #6\n  t1510: setup case #7\n  t1510: setup case #8\n  t1510: setup case #9\n  t1510: setup case #10\n  t1510: setup case #11\n  t1510: setup case #12\n  t1510: setup case #13\n  t1510: setup case #14\n  t1510: setup case #15\n  t1510: setup case #16\n  t1510: setup case #17\n  t1510: setup case #18\n  t1510: setup case #19\n  t1510: setup case #20\n  t1510: setup case #21\n  t1510: setup case #22\n  t1510: setup case #23\n  t1510: setup case #24\n  t1510: setup case #25\n  t1510: setup case #26\n  t1510: setup case #27\n  t1510: setup case #28\n  t1510: setup case #29\n  t1510: setup case #30\n  t1510: setup case #31\n\n cache.h               |    1 +\n git.c                 |   36 +\n t/t1510-repo-setup.sh | 4515 +++++++++++++++++++++++++++++++++++++++++++++++++\n trace.c               |   11 +\n 4 files changed, 4563 insertions(+), 0 deletions(-)\n create mode 100755 t/t1510-repo-setup.sh\n"},{"id":"154494","messageId":"1288190977-30875-2-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 01/34] builtins: print setup info if repo is found","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:04Z","receivedAt":"2010-10-27T14:49:04Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n It's not perfect. \"setup: \" lines won't always appear. That can be\n done once setup code is cleaned up a bit.\n\n cache.h |    1 +\n git.c   |   36 ++++++++++++++++++++++++++++++++++++\n trace.c |   11 +++++++++++\n 3 files changed, 48 insertions(+), 0 deletions(-)\n\ndiff --git a/cache.h b/cache.h\nindex 33decd9..d5ccf40 100644\n--- a/cache.h\n+++ b/cache.h\n@@ -1058,6 +1058,7 @@ extern void *alloc_object_node(void);\n extern void alloc_report(void);\n \n /* trace.c */\n+int has_trace_fd();\n __attribute__((format (printf, 1, 2)))\n extern void trace_printf(const char *format, ...);\n __attribute__((format (printf, 2, 3)))\ndiff --git a/git.c b/git.c\nindex 50a1401..22ade18 100644\n--- a/git.c\n+++ b/git.c\n@@ -244,6 +244,29 @@ struct cmd_struct {\n \tint option;\n };\n \n+static const char *quote_crnl(const char *path)\n+{\n+\tstatic char new_path[PATH_MAX];\n+\tconst char *p2 = path;\n+\tchar *p1 = new_path;\n+\n+\tif (!path)\n+\t\treturn NULL;\n+\n+\twhile (*p2) {\n+\t\tswitch (*p2) {\n+\t\tcase '\\\\': *p1++ = '\\\\'; *p1++ = '\\\\'; break;\n+\t\tcase '\\n': *p1++ = '\\\\'; *p1++ = 'n'; break;\n+\t\tcase '\\r': *p1++ = '\\\\'; *p1++ = 'r'; break;\n+\t\tdefault:\n+\t\t\t*p1++ = *p2;\n+\t\t}\n+\t\tp2++;\n+\t}\n+\t*p1 = '\\0';\n+\treturn new_path;\n+}\n+\n static int run_builtin(struct cmd_struct *p, int argc, const char **argv)\n {\n \tint status, help;\n@@ -264,6 +287,19 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv)\n \t\t\tuse_pager = check_pager_config(p->cmd);\n \t\tif (use_pager == -1 && p->option & USE_PAGER)\n \t\t\tuse_pager = 1;\n+\n+\t\tif ((p->option & (RUN_SETUP | RUN_SETUP_GENTLY)) &&\n+\t\t    startup_info->have_repository && /* get_git_dir() may set up repo, avoid that */\n+\t\t    has_trace_fd()) {\n+\t\t\tchar cwd[PATH_MAX];\n+\t\t\tif (!getcwd(cwd, PATH_MAX))\n+\t\t\t\tdie(\"Unable to get current working directory\");\n+\n+\t\t\ttrace_printf(\"setup: git_dir: %s\\n\", quote_crnl(get_git_dir()));\n+\t\t\ttrace_printf(\"setup: worktree: %s\\n\", quote_crnl(get_git_work_tree()));\n+\t\t\ttrace_printf(\"setup: cwd: %s\\n\", quote_crnl(cwd));\n+\t\t\ttrace_printf(\"setup: prefix: %s\\n\", quote_crnl(prefix));\n+\t\t}\n \t}\n \tcommit_pager_choice();\n \ndiff --git a/trace.c b/trace.c\nindex 1e560cb..fbf7de0 100644\n--- a/trace.c\n+++ b/trace.c\n@@ -29,6 +29,17 @@ void do_nothing(size_t unused)\n {\n }\n \n+int has_trace_fd()\n+{\n+\tchar *trace = getenv(\"GIT_TRACE\");\n+\n+\tif (!trace || !strcmp(trace, \"\") ||\n+\t    !strcmp(trace, \"0\") || !strcasecmp(trace, \"false\"))\n+\t\treturn 0;\n+\n+\treturn 1;\n+}\n+\n /* Get a trace file descriptor from GIT_TRACE env variable. */\n static int get_trace_fd(int *need_close)\n {\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154497","messageId":"1288190977-30875-3-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 02/34] Add t1510 and basic rules that run repo setup","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:05Z","receivedAt":"2010-10-27T14:49:05Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |   59 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 59 insertions(+), 0 deletions(-)\n create mode 100755 t/t1510-repo-setup.sh\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nnew file mode 100755\nindex 0000000..218eb35\n--- /dev/null\n+++ b/t/t1510-repo-setup.sh\n@@ -0,0 +1,59 @@\n+#!/bin/sh\n+\n+test_description='Tests of cwd/prefix/worktree/gitdir setup in all cases'\n+\n+. ./test-lib.sh\n+\n+#\n+# A few rules for repo setup:\n+#\n+# 1. GIT_DIR is relative to user's cwd. --git-dir is equivalent to\n+#    GIT_DIR.\n+#\n+# 2. .git file is relative to git_dir. .git file is basically symlink\n+#    in disguise. The directory where .git file points to will become\n+#    new git_dir.\n+#\n+# 3. core.worktree is relative to git_dir.\n+#\n+# 4. GIT_WORK_TREE is relative to user's cwd. --work-tree is\n+#    equivalent to GIT_WORK_TREE.\n+#\n+# 5. GIT_WORK_TREE/core.worktree is only effective if GIT_DIR is set\n+#    Uneffective worktree settings should be warned.\n+#\n+# 6. Effective GIT_WORK_TREE overrides core.worktree and core.bare\n+#\n+# 7. Effective core.worktree conflicts with core.bare\n+#\n+# 8. If GIT_DIR is set but neither worktree nor bare setting is given,\n+#    original cwd becomes worktree.\n+#\n+# 9. If .git discovery is done inside a repo, the repo becomes a bare\n+#    repo. .git discovery is performed if GIT_DIR is not set.\n+#\n+# 10. If no worktree is available, cwd remains unchanged, prefix is\n+#     NULL.\n+#\n+# 11. When user's cwd is outside worktree, cwd remains unchanged,\n+#     prefix is NULL.\n+#\n+\n+test_repo() {\n+\t(\n+\tif [ -n \"$1\" ]; then cd \"$1\"; fi &&\n+\tif [ -f trace ]; then rm trace; fi &&\n+\tGIT_TRACE=\"`pwd`/trace\" git symbolic-ref HEAD >/dev/null &&\n+\tgrep '^setup: ' trace >result &&\n+\ttest_cmp expected result\n+\t)\n+}\n+\n+# Bit 0 = GIT_WORK_TREE\n+# Bit 1 = GIT_DIR\n+# Bit 2 = core.worktree\n+# Bit 3 = .git is a file\n+# Bit 4 = bare repo\n+# Case# = encoding of the above 5 bits\n+\n+test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154498","messageId":"1288190977-30875-4-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 03/34] t1510: setup case #0","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:06Z","receivedAt":"2010-10-27T14:49:06Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |   47 +++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 47 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 218eb35..d94a2d6 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -56,4 +56,51 @@ test_repo() {\n # Bit 4 = bare repo\n # Case# = encoding of the above 5 bits\n \n+#\n+# Case #0\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is not set\n+#  - GIT_DIR is not set\n+#  - core.worktree is not set\n+#  - .git is a directory\n+#  - core.bare is not set, cwd is outside .git\n+#\n+# Output:\n+#\n+#  - worktree is .git's parent directory\n+#  - cwd is at worktree root dir\n+#  - prefix is calculated\n+#  - git_dir is set to \".git\"\n+#  - cwd can't be outside worktree\n+\n+test_expect_success '#0: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 0 0/sub &&\n+\tcd 0 && git init && cd ..\n+'\n+\n+test_expect_success '#0: at root' '\n+\tcat >0/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/0\n+setup: cwd: $TRASH_DIRECTORY/0\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 0\n+'\n+\n+test_expect_success '#0: in subdir' '\n+\tcat >0/sub/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/0\n+setup: cwd: $TRASH_DIRECTORY/0\n+setup: prefix: sub/\n+EOF\n+\ttest_repo 0/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154496","messageId":"1288190977-30875-5-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 04/34] t1510: setup case #1","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:07Z","receivedAt":"2010-10-27T14:49:07Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |   46 ++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 46 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex d94a2d6..0ff659a 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -103,4 +103,50 @@ EOF\n \ttest_repo 0/sub\n '\n \n+#\n+# case #1\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is set\n+#  - GIT_DIR is not set\n+#  - core.worktree is not set\n+#  - .git is a directory\n+#  - core.bare is not set, cwd is outside .git\n+#\n+# Output:\n+#\n+# GIT_WORK_TREE is ignored -> #0\n+\n+test_expect_success '#1: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 1 1/sub 1.wt 1.wt/sub 1/wt 1/wt/sub &&\n+\tcd 1 &&\n+\tgit init &&\n+\texport GIT_WORK_TREE=non-existent &&\n+\tcd ..\n+'\n+\n+test_expect_failure '#1: at root' '\n+\tcat >1/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/1\n+setup: cwd: $TRASH_DIRECTORY/1\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 1\n+'\n+\n+test_expect_failure '#1: in subdir' '\n+\tcat >1/sub/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/1\n+setup: cwd: $TRASH_DIRECTORY/1\n+setup: prefix: sub/\n+EOF\n+\ttest_repo 1/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154499","messageId":"1288190977-30875-6-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 05/34] t1510: setup case #2","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:08Z","receivedAt":"2010-10-27T14:49:08Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |   67 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 67 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 0ff659a..bf008c6 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -149,4 +149,71 @@ EOF\n \ttest_repo 1/sub\n '\n \n+#\n+# case #2\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is not set\n+#  - GIT_DIR is set\n+#  - core.worktree is not set\n+#  - .git is a directory\n+#  - core.bare is not set, cwd is outside .git\n+#\n+# Output:\n+#\n+#  - worktree is at original cwd\n+#  - cwd is unchanged\n+#  - prefix is NULL\n+#  - git_dir is set to $GIT_DIR\n+#  - cwd can't be outside worktree\n+\n+test_expect_success '#2: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 2 2/sub &&\n+\tcd 2 && git init && cd ..\n+'\n+\n+test_expect_success '#2: at root' '\n+\tcat >2/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/2/.git\n+setup: worktree: $TRASH_DIRECTORY/2\n+setup: cwd: $TRASH_DIRECTORY/2\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/2/.git\" test_repo 2\n+'\n+\n+test_expect_success '#2: in subdir' '\n+\tcat >2/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/2/.git\n+setup: worktree: $TRASH_DIRECTORY/2/sub\n+setup: cwd: $TRASH_DIRECTORY/2/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/2/.git\" test_repo 2/sub\n+'\n+\n+test_expect_success '#2: relative GIT_DIR at root' '\n+\tcat >2/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/2\n+setup: cwd: $TRASH_DIRECTORY/2\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git test_repo 2\n+'\n+\n+test_expect_success '#2: relative GIT_DIR in subdir' '\n+\tcat >2/sub/expected <<EOF &&\n+setup: git_dir: ../.git\n+setup: worktree: $TRASH_DIRECTORY/2/sub\n+setup: cwd: $TRASH_DIRECTORY/2/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../.git test_repo 2/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154500","messageId":"1288190977-30875-7-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 06/34] t1510: setup case #3","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:09Z","receivedAt":"2010-10-27T14:49:09Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |  267 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 267 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex bf008c6..e1b8958 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -216,4 +216,271 @@ EOF\n \tGIT_DIR=../.git test_repo 2/sub\n '\n \n+#\n+# case #3\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is set\n+#  - GIT_DIR is set\n+#  - core.worktree is not set\n+#  - .git is a directory\n+#  - core.bare is not set, cwd is outside .git\n+#\n+# Output:\n+#\n+#  - worktree is set to $GIT_WORK_TREE\n+#  - cwd is at worktree root\n+#  - prefix is calculated\n+#  - git_dir is set to $GIT_DIR\n+#  - cwd can be outside worktree\n+\n+test_expect_success '#3: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 3 3/sub 3/sub/sub 3.wt 3.wt/sub 3/wt 3/wt/sub &&\n+\tcd 3 && git init && cd ..\n+'\n+\n+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=root at root' '\n+\tcat >3/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/3\n+setup: cwd: $TRASH_DIRECTORY/3\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/3\" test_repo 3\n+'\n+\n+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=root(rel) at root' '\n+\tcat >3/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/3\n+setup: cwd: $TRASH_DIRECTORY/3\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=. test_repo 3\n+'\n+\n+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=root at root' '\n+\tcat >3/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/3/.git\n+setup: worktree: $TRASH_DIRECTORY/3\n+setup: cwd: $TRASH_DIRECTORY/3\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/3/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/3\" test_repo 3\n+'\n+\n+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=root(rel) at root' '\n+\tcat >3/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/3/.git\n+setup: worktree: $TRASH_DIRECTORY/3\n+setup: cwd: $TRASH_DIRECTORY/3\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/3/.git\" GIT_WORK_TREE=. test_repo 3\n+'\n+\n+test_expect_success '#3: GIT_DIR(rel), GIT_WORKTREE=root in subdir' '\n+\tcat >3/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/3/.git\n+setup: worktree: $TRASH_DIRECTORY/3\n+setup: cwd: $TRASH_DIRECTORY/3\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/3\" test_repo 3/sub/sub\n+'\n+\n+test_expect_success '#3: GIT_DIR(rel), GIT_WORKTREE=root(rel) in subdir' '\n+\tcat >3/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/3/.git\n+setup: worktree: $TRASH_DIRECTORY/3\n+setup: cwd: $TRASH_DIRECTORY/3\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../.. test_repo 3/sub/sub\n+'\n+\n+test_expect_success '#3: GIT_DIR, GIT_WORKTREE=root in subdir' '\n+\tcat >3/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/3/.git\n+setup: worktree: $TRASH_DIRECTORY/3\n+setup: cwd: $TRASH_DIRECTORY/3\n+setup: prefix: sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/3/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/3\" test_repo 3/sub\n+'\n+\n+test_expect_success '#3: GIT_DIR, GIT_WORKTREE=root(rel) in subdir' '\n+\tcat >3/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/3/.git\n+setup: worktree: $TRASH_DIRECTORY/3\n+setup: cwd: $TRASH_DIRECTORY/3\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/3/.git\" GIT_WORK_TREE=../.. test_repo 3/sub/sub\n+'\n+\n+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=wt at root' '\n+\tcat >3/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/3/wt\n+setup: cwd: $TRASH_DIRECTORY/3\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/3/wt\" test_repo 3\n+'\n+\n+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) at root' '\n+\tcat >3/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/3/wt\n+setup: cwd: $TRASH_DIRECTORY/3\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=wt test_repo 3\n+'\n+\n+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=wt(rel) at root' '\n+\tcat >3/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/3/.git\n+setup: worktree: $TRASH_DIRECTORY/3/wt\n+setup: cwd: $TRASH_DIRECTORY/3\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/3/.git\" GIT_WORK_TREE=wt test_repo 3\n+'\n+\n+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=wt at root' '\n+\tcat >3/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/3/.git\n+setup: worktree: $TRASH_DIRECTORY/3/wt\n+setup: cwd: $TRASH_DIRECTORY/3\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/3/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/3/wt\" test_repo 3\n+'\n+\n+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=wt in subdir' '\n+\tcat >3/sub/sub/expected <<EOF &&\n+setup: git_dir: ../../.git\n+setup: worktree: $TRASH_DIRECTORY/3/wt\n+setup: cwd: $TRASH_DIRECTORY/3/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/3/wt\" test_repo 3/sub/sub\n+'\n+\n+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) in subdir' '\n+\tcat >3/sub/sub/expected <<EOF &&\n+setup: git_dir: ../../.git\n+setup: worktree: $TRASH_DIRECTORY/3/wt\n+setup: cwd: $TRASH_DIRECTORY/3/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../../wt test_repo 3/sub/sub\n+'\n+\n+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=wt(rel) in subdir' '\n+\tcat >3/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/3/.git\n+setup: worktree: $TRASH_DIRECTORY/3/wt\n+setup: cwd: $TRASH_DIRECTORY/3/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/3/.git\" GIT_WORK_TREE=../../wt test_repo 3/sub/sub\n+'\n+\n+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=wt in subdir' '\n+\tcat >3/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/3/.git\n+setup: worktree: $TRASH_DIRECTORY/3/wt\n+setup: cwd: $TRASH_DIRECTORY/3/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/3/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/3/wt\" test_repo 3/sub/sub\n+'\n+\n+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=.. at root' '\n+\tcat >3/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/3/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 3/\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 3\n+'\n+\n+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=..(rel) at root' '\n+\tcat >3/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/3/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 3/\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=.. test_repo 3\n+'\n+\n+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=..(rel) at root' '\n+\tcat >3/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/3/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 3/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/3/.git\" GIT_WORK_TREE=.. test_repo 3\n+'\n+\n+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=.. at root' '\n+\tcat >3/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/3/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 3/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/3/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 3\n+'\n+\n+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=.. in subdir' '\n+\tcat >3/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/3/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 3/sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 3/sub/sub\n+'\n+\n+test_expect_success '#3: GIT_DIR(rel), GIT_WORK_TREE=..(rel) in subdir' '\n+\tcat >3/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/3/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 3/sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../../.. test_repo 3/sub/sub\n+'\n+\n+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=..(rel) in subdir' '\n+\tcat >3/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/3/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 3/sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/3/.git\" GIT_WORK_TREE=../../../ test_repo 3/sub/sub\n+'\n+\n+test_expect_success '#3: GIT_DIR, GIT_WORK_TREE=.. in subdir' '\n+\tcat >3/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/3/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 3/sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/3/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 3/sub/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154502","messageId":"1288190977-30875-8-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 07/34] t1510: setup case #4","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:10Z","receivedAt":"2010-10-27T14:49:10Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |   46 ++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 46 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex e1b8958..6617792 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -483,4 +483,50 @@ EOF\n \tGIT_DIR=\"$TRASH_DIRECTORY/3/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 3/sub/sub\n '\n \n+#\n+# case #4\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is not set\n+#  - GIT_DIR is not set\n+#  - core.worktree is set\n+#  - .git is a directory\n+#  - core.bare is not set, cwd is outside .git\n+#\n+# Output:\n+#\n+# core.worktree is ignored -> #0\n+\n+test_expect_success '#4: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 4 4/sub &&\n+\tcd 4 &&\n+\tgit init &&\n+\tgit config core.worktree non-existent &&\n+\tcd ..\n+'\n+\n+test_expect_failure '#4: at root' '\n+\tcat >4/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/4\n+setup: cwd: $TRASH_DIRECTORY/4\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 4\n+'\n+\n+test_expect_failure '#4: in subdir' '\n+\tcat >4/sub/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/4\n+setup: cwd: $TRASH_DIRECTORY/4\n+setup: prefix: sub/\n+EOF\n+\ttest_repo 4/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154501","messageId":"1288190977-30875-9-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 08/34] t1510: setup case #5","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:11Z","receivedAt":"2010-10-27T14:49:11Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |   47 +++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 47 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 6617792..3d0498a 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -529,4 +529,51 @@ EOF\n \ttest_repo 4/sub\n '\n \n+#\n+# case #5\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is set\n+#  - GIT_DIR is not set\n+#  - core.worktree is set\n+#  - .git is a directory\n+#  - core.bare is not set, cwd is outside .git\n+#\n+# Output:\n+#\n+# GIT_WORK_TREE/core.worktree are ignored -> #0\n+\n+test_expect_success '#5: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 5 5/sub &&\n+\tcd 5 &&\n+\tgit init &&\n+\tgit config core.worktree non-existent &&\n+\texport GIT_WORK_TREE=non-existent-too &&\n+\tcd ..\n+'\n+\n+test_expect_failure '#5: at root' '\n+\tcat >5/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/5\n+setup: cwd: $TRASH_DIRECTORY/5\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 5\n+'\n+\n+test_expect_failure '#5: in subdir' '\n+\tcat >5/sub/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/5\n+setup: cwd: $TRASH_DIRECTORY/5\n+setup: prefix: sub/\n+EOF\n+\ttest_repo 5/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154503","messageId":"1288190977-30875-10-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 09/34] t1510: setup case #6","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:12Z","receivedAt":"2010-10-27T14:49:12Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |  291 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 291 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 3d0498a..6e69ad7 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -576,4 +576,295 @@ EOF\n \ttest_repo 5/sub\n '\n \n+#\n+# case #6\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is not set\n+#  - GIT_DIR is set\n+#  - core.worktree is set\n+#  - .git is a directory\n+#  - core.bare is not set, cwd is outside .git\n+#\n+# Output:\n+#\n+#  - worktree is at core.worktree\n+#  - cwd is at worktree root\n+#  - prefix is calculated\n+#  - git_dir is at $GIT_DIR\n+#  - cwd can be outside worktree\n+\n+test_expect_success '#6: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 6 6/sub 6/sub/sub 6.wt 6.wt/sub 6/wt 6/wt/sub &&\n+\tcd 6 && git init && cd ..\n+'\n+\n+test_expect_success '#6: GIT_DIR(rel), core.worktree=.. at root' '\n+\tcat >6/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/6\n+setup: cwd: $TRASH_DIRECTORY/6\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree \"$TRASH_DIRECTORY/6\" &&\n+\tGIT_DIR=.git test_repo 6\n+'\n+\n+test_expect_success '#6: GIT_DIR(rel), core.worktree=..(rel) at root' '\n+\tcat >6/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/6\n+setup: cwd: $TRASH_DIRECTORY/6\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree .. &&\n+\tGIT_DIR=.git test_repo 6\n+'\n+\n+test_expect_success '#6: GIT_DIR, core.worktree=.. at root' '\n+\tcat >6/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/6/.git\n+setup: worktree: $TRASH_DIRECTORY/6\n+setup: cwd: $TRASH_DIRECTORY/6\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree \"$TRASH_DIRECTORY/6\" &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/6/.git\" test_repo 6\n+'\n+\n+test_expect_success '#6: GIT_DIR, core.worktree=..(rel) at root' '\n+\tcat >6/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/6/.git\n+setup: worktree: $TRASH_DIRECTORY/6\n+setup: cwd: $TRASH_DIRECTORY/6\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree .. &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/6/.git\" test_repo 6\n+'\n+\n+test_expect_failure '#6: GIT_DIR(rel), core.worktree=.. in subdir' '\n+\tcat >6/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/6/.git\n+setup: worktree: $TRASH_DIRECTORY/6\n+setup: cwd: $TRASH_DIRECTORY/6\n+setup: prefix: sub/sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree \"$TRASH_DIRECTORY/6\" &&\n+\tGIT_DIR=../../.git test_repo 6/sub/sub\n+'\n+\n+test_expect_failure '#6: GIT_DIR(rel), core.worktree=..(rel) in subdir' '\n+\tcat >6/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/6/.git\n+setup: worktree: $TRASH_DIRECTORY/6\n+setup: cwd: $TRASH_DIRECTORY/6\n+setup: prefix: sub/sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree .. &&\n+\tGIT_DIR=../../.git test_repo 6/sub/sub\n+'\n+\n+test_expect_success '#6: GIT_DIR, core.worktree=.. in subdir' '\n+\tcat >6/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/6/.git\n+setup: worktree: $TRASH_DIRECTORY/6\n+setup: cwd: $TRASH_DIRECTORY/6\n+setup: prefix: sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree \"$TRASH_DIRECTORY/6\" &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/6/.git\" test_repo 6/sub\n+'\n+\n+test_expect_success '#6: GIT_DIR, core.worktree=..(rel) in subdir' '\n+\tcat >6/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/6/.git\n+setup: worktree: $TRASH_DIRECTORY/6\n+setup: cwd: $TRASH_DIRECTORY/6\n+setup: prefix: sub/sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree .. &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/6/.git\" test_repo 6/sub/sub\n+'\n+\n+test_expect_success '#6: GIT_DIR(rel), core.worktree=../wt at root' '\n+\tcat >6/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/6/wt\n+setup: cwd: $TRASH_DIRECTORY/6\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree \"$TRASH_DIRECTORY/6/wt\" &&\n+\tGIT_DIR=.git test_repo 6\n+'\n+\n+test_expect_success '#6: GIT_DIR(rel), core.worktree=../wt(rel) at root' '\n+\tcat >6/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/6/wt\n+setup: cwd: $TRASH_DIRECTORY/6\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree ../wt &&\n+\tGIT_DIR=.git test_repo 6\n+'\n+\n+test_expect_success '#6: GIT_DIR, core.worktree=../wt(rel) at root' '\n+\tcat >6/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/6/.git\n+setup: worktree: $TRASH_DIRECTORY/6/wt\n+setup: cwd: $TRASH_DIRECTORY/6\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree ../wt &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/6/.git\" test_repo 6\n+'\n+\n+test_expect_success '#6: GIT_DIR, core.worktree=../wt at root' '\n+\tcat >6/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/6/.git\n+setup: worktree: $TRASH_DIRECTORY/6/wt\n+setup: cwd: $TRASH_DIRECTORY/6\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree \"$TRASH_DIRECTORY/6/wt\" &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/6/.git\" test_repo 6\n+'\n+\n+test_expect_success '#6: GIT_DIR(rel), core.worktree=../wt in subdir' '\n+\tcat >6/sub/sub/expected <<EOF &&\n+setup: git_dir: ../../.git\n+setup: worktree: $TRASH_DIRECTORY/6/wt\n+setup: cwd: $TRASH_DIRECTORY/6/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree \"$TRASH_DIRECTORY/6/wt\" &&\n+\tGIT_DIR=../../.git test_repo 6/sub/sub\n+'\n+\n+test_expect_success '#6: GIT_DIR(rel), core.worktree=../wt(rel) in subdir' '\n+\tcat >6/sub/sub/expected <<EOF &&\n+setup: git_dir: ../../.git\n+setup: worktree: $TRASH_DIRECTORY/6/wt\n+setup: cwd: $TRASH_DIRECTORY/6/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree ../wt &&\n+\tGIT_DIR=../../.git test_repo 6/sub/sub\n+'\n+\n+test_expect_success '#6: GIT_DIR, core.worktree=../wt(rel) in subdir' '\n+\tcat >6/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/6/.git\n+setup: worktree: $TRASH_DIRECTORY/6/wt\n+setup: cwd: $TRASH_DIRECTORY/6/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree ../wt &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/6/.git\" test_repo 6/sub/sub\n+'\n+\n+test_expect_success '#6: GIT_DIR, core.worktree=../wt in subdir' '\n+\tcat >6/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/6/.git\n+setup: worktree: $TRASH_DIRECTORY/6/wt\n+setup: cwd: $TRASH_DIRECTORY/6/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree \"$TRASH_DIRECTORY/6/wt\" &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/6/.git\" test_repo 6/sub/sub\n+'\n+\n+test_expect_success '#6: GIT_DIR(rel), core.worktree=../.. at root' '\n+\tcat >6/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 6/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree \"$TRASH_DIRECTORY\" &&\n+\tGIT_DIR=.git test_repo 6\n+'\n+\n+test_expect_success '#6: GIT_DIR(rel), core.worktree=../..(rel) at root' '\n+\tcat >6/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 6/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree ../../ &&\n+\tGIT_DIR=.git test_repo 6\n+'\n+\n+test_expect_success '#6: GIT_DIR, core.worktree=../..(rel) at root' '\n+\tcat >6/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/6/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 6/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree ../../ &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/6/.git\" test_repo 6\n+'\n+\n+test_expect_success '#6: GIT_DIR, core.worktree=../.. at root' '\n+\tcat >6/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/6/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 6/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree \"$TRASH_DIRECTORY\" &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/6/.git\" test_repo 6\n+'\n+\n+test_expect_failure '#6: GIT_DIR(rel), core.worktree=../.. in subdir' '\n+\tcat >6/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/6/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 6/sub/sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree \"$TRASH_DIRECTORY\" &&\n+\tGIT_DIR=../../.git test_repo 6/sub/sub\n+'\n+\n+test_expect_failure '#6: GIT_DIR(rel), core.worktree=../..(rel) in subdir' '\n+\tcat >6/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/6/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 6/sub/sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree ../.. &&\n+\tGIT_DIR=../../.git test_repo 6/sub/sub\n+'\n+\n+test_expect_success '#6: GIT_DIR, core.worktree=../..(rel) in subdir' '\n+\tcat >6/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/6/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 6/sub/sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree ../.. &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/6/.git\" test_repo 6/sub/sub\n+'\n+\n+test_expect_success '#6: GIT_DIR, core.worktree=../.. in subdir' '\n+\tcat >6/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/6/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 6/sub/sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/6/.git/config\" core.worktree \"$TRASH_DIRECTORY\" &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/6/.git\" test_repo 6/sub/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154507","messageId":"1288190977-30875-11-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 10/34] t1510: setup case #7","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:13Z","receivedAt":"2010-10-27T14:49:13Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |  266 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 266 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 6e69ad7..968a5b2 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -867,4 +867,270 @@ EOF\n \tGIT_DIR=\"$TRASH_DIRECTORY/6/.git\" test_repo 6/sub/sub\n '\n \n+#\n+# case #7\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is set\n+#  - GIT_DIR is set\n+#  - core.worktree is set\n+#  - .git is a directory\n+#  - core.bare is not set, cwd is outside .git\n+#\n+# Output:\n+#\n+# core.worktree is overridden by GIT_WORK_TREE -> #3\n+\n+test_expect_success '#7: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 7 7/sub 7/sub/sub 7.wt 7.wt/sub 7/wt 7/wt/sub &&\n+\tcd 7 &&\n+\tgit init &&\n+\tgit config core.worktree non-existent &&\n+\tcd ..\n+'\n+\n+test_expect_success '#7: GIT_DIR(rel), GIT_WORK_TREE=root at root' '\n+\tcat >7/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/7\n+setup: cwd: $TRASH_DIRECTORY/7\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/7\" test_repo 7\n+'\n+\n+test_expect_success '#7: GIT_DIR(rel), GIT_WORK_TREE=root(rel) at root' '\n+\tcat >7/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/7\n+setup: cwd: $TRASH_DIRECTORY/7\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=. test_repo 7\n+'\n+\n+test_expect_success '#7: GIT_DIR, GIT_WORK_TREE=root at root' '\n+\tcat >7/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/7/.git\n+setup: worktree: $TRASH_DIRECTORY/7\n+setup: cwd: $TRASH_DIRECTORY/7\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/7/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/7\" test_repo 7\n+'\n+\n+test_expect_success '#7: GIT_DIR, GIT_WORK_TREE=root(rel) at root' '\n+\tcat >7/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/7/.git\n+setup: worktree: $TRASH_DIRECTORY/7\n+setup: cwd: $TRASH_DIRECTORY/7\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/7/.git\" GIT_WORK_TREE=. test_repo 7\n+'\n+\n+test_expect_success '#7: GIT_DIR(rel), GIT_WORKTREE=root in subdir' '\n+\tcat >7/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/7/.git\n+setup: worktree: $TRASH_DIRECTORY/7\n+setup: cwd: $TRASH_DIRECTORY/7\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/7\" test_repo 7/sub/sub\n+'\n+\n+test_expect_success '#7: GIT_DIR(rel), GIT_WORKTREE=root(rel) in subdir' '\n+\tcat >7/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/7/.git\n+setup: worktree: $TRASH_DIRECTORY/7\n+setup: cwd: $TRASH_DIRECTORY/7\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../.. test_repo 7/sub/sub\n+'\n+\n+test_expect_success '#7: GIT_DIR, GIT_WORKTREE=root in subdir' '\n+\tcat >7/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/7/.git\n+setup: worktree: $TRASH_DIRECTORY/7\n+setup: cwd: $TRASH_DIRECTORY/7\n+setup: prefix: sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/7/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/7\" test_repo 7/sub\n+'\n+\n+test_expect_success '#7: GIT_DIR, GIT_WORKTREE=root(rel) in subdir' '\n+\tcat >7/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/7/.git\n+setup: worktree: $TRASH_DIRECTORY/7\n+setup: cwd: $TRASH_DIRECTORY/7\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/7/.git\" GIT_WORK_TREE=../.. test_repo 7/sub/sub\n+'\n+\n+test_expect_success '#7: GIT_DIR(rel), GIT_WORK_TREE=wt at root' '\n+\tcat >7/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/7/wt\n+setup: cwd: $TRASH_DIRECTORY/7\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/7/wt\" test_repo 7\n+'\n+\n+test_expect_success '#7: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) at root' '\n+\tcat >7/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/7/wt\n+setup: cwd: $TRASH_DIRECTORY/7\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=wt test_repo 7\n+'\n+\n+test_expect_success '#7: GIT_DIR, GIT_WORK_TREE=wt(rel) at root' '\n+\tcat >7/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/7/.git\n+setup: worktree: $TRASH_DIRECTORY/7/wt\n+setup: cwd: $TRASH_DIRECTORY/7\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/7/.git\" GIT_WORK_TREE=wt test_repo 7\n+'\n+\n+test_expect_success '#7: GIT_DIR, GIT_WORK_TREE=wt at root' '\n+\tcat >7/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/7/.git\n+setup: worktree: $TRASH_DIRECTORY/7/wt\n+setup: cwd: $TRASH_DIRECTORY/7\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/7/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/7/wt\" test_repo 7\n+'\n+\n+test_expect_success '#7: GIT_DIR(rel), GIT_WORK_TREE=wt in subdir' '\n+\tcat >7/sub/sub/expected <<EOF &&\n+setup: git_dir: ../../.git\n+setup: worktree: $TRASH_DIRECTORY/7/wt\n+setup: cwd: $TRASH_DIRECTORY/7/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/7/wt\" test_repo 7/sub/sub\n+'\n+\n+test_expect_success '#7: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) in subdir' '\n+\tcat >7/sub/sub/expected <<EOF &&\n+setup: git_dir: ../../.git\n+setup: worktree: $TRASH_DIRECTORY/7/wt\n+setup: cwd: $TRASH_DIRECTORY/7/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../../wt test_repo 7/sub/sub\n+'\n+\n+test_expect_success '#7: GIT_DIR, GIT_WORK_TREE=wt(rel) in subdir' '\n+\tcat >7/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/7/.git\n+setup: worktree: $TRASH_DIRECTORY/7/wt\n+setup: cwd: $TRASH_DIRECTORY/7/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/7/.git\" GIT_WORK_TREE=../../wt test_repo 7/sub/sub\n+'\n+\n+test_expect_success '#7: GIT_DIR, GIT_WORK_TREE=wt in subdir' '\n+\tcat >7/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/7/.git\n+setup: worktree: $TRASH_DIRECTORY/7/wt\n+setup: cwd: $TRASH_DIRECTORY/7/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/7/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/7/wt\" test_repo 7/sub/sub\n+'\n+\n+test_expect_success '#7: GIT_DIR(rel), GIT_WORK_TREE=.. at root' '\n+\tcat >7/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/7/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 7/\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 7\n+'\n+\n+test_expect_success '#7: GIT_DIR(rel), GIT_WORK_TREE=..(rel) at root' '\n+\tcat >7/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/7/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 7/\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=.. test_repo 7\n+'\n+\n+test_expect_success '#7: GIT_DIR, GIT_WORK_TREE=..(rel) at root' '\n+\tcat >7/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/7/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 7/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/7/.git\" GIT_WORK_TREE=.. test_repo 7\n+'\n+\n+test_expect_success '#7: GIT_DIR, GIT_WORK_TREE=.. at root' '\n+\tcat >7/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/7/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 7/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/7/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 7\n+'\n+\n+test_expect_success '#7: GIT_DIR(rel), GIT_WORK_TREE=.. in subdir' '\n+\tcat >7/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/7/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 7/sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 7/sub/sub\n+'\n+\n+test_expect_success '#7: GIT_DIR(rel), GIT_WORK_TREE=..(rel) in subdir' '\n+\tcat >7/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/7/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 7/sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../../.. test_repo 7/sub/sub\n+'\n+\n+test_expect_success '#7: GIT_DIR, GIT_WORK_TREE=..(rel) in subdir' '\n+\tcat >7/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/7/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 7/sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/7/.git\" GIT_WORK_TREE=../../../ test_repo 7/sub/sub\n+'\n+\n+test_expect_success '#7: GIT_DIR, GIT_WORK_TREE=.. in subdir' '\n+\tcat >7/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/7/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 7/sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/7/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 7/sub/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154504","messageId":"1288190977-30875-12-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 11/34] t1510: setup case #8","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:14Z","receivedAt":"2010-10-27T14:49:14Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |   47 +++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 47 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 968a5b2..5ca9f4a 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -1133,4 +1133,51 @@ EOF\n \tGIT_DIR=\"$TRASH_DIRECTORY/7/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 7/sub/sub\n '\n \n+#\n+# case #8\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is not set\n+#  - GIT_DIR is not set\n+#  - core.worktree is not set\n+#  - .git is a file\n+#  - core.bare is not set, cwd is outside .git\n+#\n+# Output:\n+#\n+# #0 except that git_dir is set by .git file\n+\n+test_expect_success '#8: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 8 8/sub &&\n+\tcd 8 &&\n+\tgit init &&\n+\tmv .git ../8.git &&\n+\techo gitdir: ../8.git >.git &&\n+\tcd ..\n+'\n+\n+test_expect_success '#8: at root' '\n+\tcat >8/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/8.git\n+setup: worktree: $TRASH_DIRECTORY/8\n+setup: cwd: $TRASH_DIRECTORY/8\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 8\n+'\n+\n+test_expect_success '#8: in subdir' '\n+\tcat >8/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/8.git\n+setup: worktree: $TRASH_DIRECTORY/8\n+setup: cwd: $TRASH_DIRECTORY/8\n+setup: prefix: sub/\n+EOF\n+\ttest_repo 8/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154509","messageId":"1288190977-30875-13-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 12/34] t1510: setup case #9","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:15Z","receivedAt":"2010-10-27T14:49:15Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |   47 +++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 47 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 5ca9f4a..1406a8d 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -1180,4 +1180,51 @@ EOF\n \ttest_repo 8/sub\n '\n \n+#\n+# case #9\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is set\n+#  - GIT_DIR is not set\n+#  - core.worktree is not set\n+#  - .git is a file\n+#  - core.bare is not set, cwd is outside .git\n+#\n+# Output:\n+#\n+# #1 except that git_dir is set by .git file\n+\n+test_expect_success '#9: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 9 9/sub 9.wt 9.wt/sub 9/wt 9/wt/sub &&\n+\tcd 9 &&\n+\tgit init &&\n+\tmv .git ../9.git &&\n+\techo gitdir: ../9.git >.git &&\n+\tcd ..\n+'\n+\n+test_expect_failure '#9: at root' '\n+\tcat >9/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/9.git\n+setup: worktree: $TRASH_DIRECTORY/9\n+setup: cwd: $TRASH_DIRECTORY/9\n+setup: prefix: (null)\n+EOF\n+\tGIT_WORK_TREE=non-existent test_repo 9\n+'\n+\n+test_expect_failure '#9: in subdir' '\n+\tcat >9/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/9.git\n+setup: worktree: $TRASH_DIRECTORY/9\n+setup: cwd: $TRASH_DIRECTORY/9\n+setup: prefix: sub/\n+EOF\n+\tGIT_WORK_TREE=non-existent test_repo 9/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154506","messageId":"1288190977-30875-14-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 13/34] t1510: setup case #10","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:16Z","receivedAt":"2010-10-27T14:49:16Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |   67 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 67 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 1406a8d..73b18a2 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -1227,4 +1227,71 @@ EOF\n \tGIT_WORK_TREE=non-existent test_repo 9/sub\n '\n \n+#\n+# case #10\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is not set\n+#  - GIT_DIR is set\n+#  - core.worktree is not set\n+#  - .git is a file\n+#  - core.bare is not set, cwd is outside .git\n+#\n+# Output:\n+#\n+# #2 except that git_dir is set by .git file\n+\n+test_expect_success '#10: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 10 10/sub &&\n+\tcd 10 &&\n+\tgit init &&\n+\tmv .git ../10.git &&\n+\techo gitdir: ../10.git >.git &&\n+\tcd ..\n+'\n+\n+test_expect_failure '#10: at root' '\n+\tcat >10/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/10.git\n+setup: worktree: $TRASH_DIRECTORY/10\n+setup: cwd: $TRASH_DIRECTORY/10\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/10/.git\" test_repo 10\n+'\n+\n+test_expect_failure '#10: in subdir' '\n+\tcat >10/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/10.git\n+setup: worktree: $TRASH_DIRECTORY/10/sub\n+setup: cwd: $TRASH_DIRECTORY/10/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/10/.git\" test_repo 10/sub\n+'\n+\n+test_expect_failure '#10: relative GIT_DIR at root' '\n+\tcat >10/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/10.git\n+setup: worktree: $TRASH_DIRECTORY/10\n+setup: cwd: $TRASH_DIRECTORY/10\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git test_repo 10\n+'\n+\n+test_expect_failure '#10: relative GIT_DIR in subdir' '\n+\tcat >10/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/10.git\n+setup: worktree: $TRASH_DIRECTORY/10/sub\n+setup: cwd: $TRASH_DIRECTORY/10/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../.git test_repo 10/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154508","messageId":"1288190977-30875-15-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 14/34] t1510: setup case #11","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:17Z","receivedAt":"2010-10-27T14:49:17Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |  267 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 267 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 73b18a2..844d204 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -1294,4 +1294,271 @@ EOF\n \tGIT_DIR=../.git test_repo 10/sub\n '\n \n+#\n+# case #11\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is set\n+#  - GIT_DIR is set\n+#  - core.worktree is not set\n+#  - .git is a file\n+#  - core.bare is not set, cwd is outside .git\n+#\n+# Output:\n+#\n+# #3 except that git_dir is set by .git file\n+\n+test_expect_success '#11: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 11 11/sub 11/sub/sub 11.wt 11.wt/sub 11/wt 11/wt/sub &&\n+\tcd 11 &&\n+\tgit init &&\n+\tmv .git ../11.git &&\n+\techo gitdir: ../11.git >.git &&\n+\tcd ..\n+'\n+\n+test_expect_failure '#11: GIT_DIR(rel), GIT_WORK_TREE=root at root' '\n+\tcat >11/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY/11\n+setup: cwd: $TRASH_DIRECTORY/11\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/11\" test_repo 11\n+'\n+\n+test_expect_failure '#11: GIT_DIR(rel), GIT_WORK_TREE=root(rel) at root' '\n+\tcat >11/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY/11\n+setup: cwd: $TRASH_DIRECTORY/11\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=. test_repo 11\n+'\n+\n+test_expect_failure '#11: GIT_DIR, GIT_WORK_TREE=root at root' '\n+\tcat >11/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY/11\n+setup: cwd: $TRASH_DIRECTORY/11\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/11/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/11\" test_repo 11\n+'\n+\n+test_expect_failure '#11: GIT_DIR, GIT_WORK_TREE=root(rel) at root' '\n+\tcat >11/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY/11\n+setup: cwd: $TRASH_DIRECTORY/11\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/11/.git\" GIT_WORK_TREE=. test_repo 11\n+'\n+\n+test_expect_failure '#11: GIT_DIR(rel), GIT_WORKTREE=root in subdir' '\n+\tcat >11/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY/11\n+setup: cwd: $TRASH_DIRECTORY/11\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/11\" test_repo 11/sub/sub\n+'\n+\n+test_expect_failure '#11: GIT_DIR(rel), GIT_WORKTREE=root(rel) in subdir' '\n+\tcat >11/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY/11\n+setup: cwd: $TRASH_DIRECTORY/11\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../.. test_repo 11/sub/sub\n+'\n+\n+test_expect_failure '#11: GIT_DIR, GIT_WORKTREE=root in subdir' '\n+\tcat >11/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY/11\n+setup: cwd: $TRASH_DIRECTORY/11\n+setup: prefix: sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/11/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/11\" test_repo 11/sub\n+'\n+\n+test_expect_failure '#11: GIT_DIR, GIT_WORKTREE=root(rel) in subdir' '\n+\tcat >11/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY/11\n+setup: cwd: $TRASH_DIRECTORY/11\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/11/.git\" GIT_WORK_TREE=../.. test_repo 11/sub/sub\n+'\n+\n+test_expect_failure '#11: GIT_DIR(rel), GIT_WORK_TREE=wt at root' '\n+\tcat >11/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY/11/wt\n+setup: cwd: $TRASH_DIRECTORY/11\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/11/wt\" test_repo 11\n+'\n+\n+test_expect_failure '#11: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) at root' '\n+\tcat >11/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY/11/wt\n+setup: cwd: $TRASH_DIRECTORY/11\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=wt test_repo 11\n+'\n+\n+test_expect_failure '#11: GIT_DIR, GIT_WORK_TREE=wt(rel) at root' '\n+\tcat >11/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY/11/wt\n+setup: cwd: $TRASH_DIRECTORY/11\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/11/.git\" GIT_WORK_TREE=wt test_repo 11\n+'\n+\n+test_expect_failure '#11: GIT_DIR, GIT_WORK_TREE=wt at root' '\n+\tcat >11/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY/11/wt\n+setup: cwd: $TRASH_DIRECTORY/11\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/11/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/11/wt\" test_repo 11\n+'\n+\n+test_expect_failure '#11: GIT_DIR(rel), GIT_WORK_TREE=wt in subdir' '\n+\tcat >11/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY/11/wt\n+setup: cwd: $TRASH_DIRECTORY/11/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/11/wt\" test_repo 11/sub/sub\n+'\n+\n+test_expect_failure '#11: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) in subdir' '\n+\tcat >11/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY/11/wt\n+setup: cwd: $TRASH_DIRECTORY/11/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../../wt test_repo 11/sub/sub\n+'\n+\n+test_expect_failure '#11: GIT_DIR, GIT_WORK_TREE=wt(rel) in subdir' '\n+\tcat >11/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY/11/wt\n+setup: cwd: $TRASH_DIRECTORY/11/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/11/.git\" GIT_WORK_TREE=../../wt test_repo 11/sub/sub\n+'\n+\n+test_expect_failure '#11: GIT_DIR, GIT_WORK_TREE=wt in subdir' '\n+\tcat >11/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY/11/wt\n+setup: cwd: $TRASH_DIRECTORY/11/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/11/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/11/wt\" test_repo 11/sub/sub\n+'\n+\n+test_expect_failure '#11: GIT_DIR(rel), GIT_WORK_TREE=.. at root' '\n+\tcat >11/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 11/\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 11\n+'\n+\n+test_expect_failure '#11: GIT_DIR(rel), GIT_WORK_TREE=..(rel) at root' '\n+\tcat >11/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 11/\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=.. test_repo 11\n+'\n+\n+test_expect_failure '#11: GIT_DIR, GIT_WORK_TREE=..(rel) at root' '\n+\tcat >11/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 11/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/11/.git\" GIT_WORK_TREE=.. test_repo 11\n+'\n+\n+test_expect_failure '#11: GIT_DIR, GIT_WORK_TREE=.. at root' '\n+\tcat >11/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 11/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/11/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 11\n+'\n+\n+test_expect_failure '#11: GIT_DIR(rel), GIT_WORK_TREE=.. in subdir' '\n+\tcat >11/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 11/sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 11/sub/sub\n+'\n+\n+test_expect_failure '#11: GIT_DIR(rel), GIT_WORK_TREE=..(rel) in subdir' '\n+\tcat >11/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 11/sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../../.. test_repo 11/sub/sub\n+'\n+\n+test_expect_failure '#11: GIT_DIR, GIT_WORK_TREE=..(rel) in subdir' '\n+\tcat >11/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 11/sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/11/.git\" GIT_WORK_TREE=../../../ test_repo 11/sub/sub\n+'\n+\n+test_expect_failure '#11: GIT_DIR, GIT_WORK_TREE=.. in subdir' '\n+\tcat >11/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/11.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 11/sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/11/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 11/sub/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154505","messageId":"1288190977-30875-16-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 15/34] t1510: setup case #12","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:18Z","receivedAt":"2010-10-27T14:49:18Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |   49 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 49 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 844d204..22a8894 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -1561,4 +1561,53 @@ EOF\n \tGIT_DIR=\"$TRASH_DIRECTORY/11/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 11/sub/sub\n '\n \n+#\n+# case #12\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is not set\n+#  - GIT_DIR is not set\n+#  - core.worktree is set\n+#  - .git is a file\n+#  - core.bare is not set, cwd is outside .git\n+#\n+# Output:\n+#\n+# #4 except that git_dir is set by .git file\n+\n+\n+test_expect_success '#12: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 12 12/sub 12/sub/sub 12.wt 12.wt/sub 12/wt 12/wt/sub &&\n+\tcd 12 &&\n+\tgit init &&\n+\tgit config core.worktree non-existent &&\n+\tmv .git ../12.git &&\n+\techo gitdir: ../12.git >.git &&\n+\tcd ..\n+'\n+\n+test_expect_failure '#12: at root' '\n+\tcat >12/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/12.git\n+setup: worktree: $TRASH_DIRECTORY/12\n+setup: cwd: $TRASH_DIRECTORY/12\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 12\n+'\n+\n+test_expect_failure '#12: in subdir' '\n+\tcat >12/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/12.git\n+setup: worktree: $TRASH_DIRECTORY/12\n+setup: cwd: $TRASH_DIRECTORY/12\n+setup: prefix: sub/\n+EOF\n+\ttest_repo 12/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154517","messageId":"1288190977-30875-17-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 16/34] t1510: setup case #13","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:19Z","receivedAt":"2010-10-27T14:49:19Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |   49 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 49 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 22a8894..ec0a993 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -1610,4 +1610,53 @@ EOF\n \ttest_repo 12/sub\n '\n \n+#\n+# case #13\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is set\n+#  - GIT_DIR is not set\n+#  - core.worktree is set\n+#  - .git is a file\n+#  - core.bare is not set, cwd is outside .git\n+#\n+# Output:\n+#\n+# #5 except that git_dir is set by .git file\n+\n+test_expect_success '#13: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 13 13/sub 13/sub/sub 13.wt 13.wt/sub 13/wt 13/wt/sub &&\n+\tcd 13 &&\n+\tgit init &&\n+\tgit config core.worktree non-existent &&\n+\texport GIT_WORK_TREE=non-existent too &&\n+\tmv .git ../13.git &&\n+\techo gitdir: ../13.git >.git &&\n+\tcd ..\n+'\n+\n+test_expect_failure '#13: at root' '\n+\tcat >13/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/13.git\n+setup: worktree: $TRASH_DIRECTORY/13\n+setup: cwd: $TRASH_DIRECTORY/13\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 13\n+'\n+\n+test_expect_failure '#13: in subdir' '\n+\tcat >13/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/13.git\n+setup: worktree: $TRASH_DIRECTORY/13\n+setup: cwd: $TRASH_DIRECTORY/13\n+setup: prefix: sub/\n+EOF\n+\ttest_repo 13/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154515","messageId":"1288190977-30875-18-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 17/34] t1510: setup case #14","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:20Z","receivedAt":"2010-10-27T14:49:20Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |  291 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 291 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex ec0a993..0cd00ea 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -1659,4 +1659,295 @@ EOF\n \ttest_repo 13/sub\n '\n \n+#\n+# case #14\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is not set\n+#  - GIT_DIR is set\n+#  - core.worktree is set\n+#  - .git is a file\n+#  - core.bare is not set, cwd is outside .git\n+#\n+# Output:\n+#\n+# #6 except that git_dir is set by .git file\n+\n+test_expect_success '#14: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 14 14/sub 14/sub/sub 14.wt 14.wt/sub 14/wt 14/wt/sub &&\n+\tcd 14 &&\n+\tgit init &&\n+\tmv .git ../14.git &&\n+\techo gitdir: ../14.git >.git &&\n+\tcd ..\n+'\n+\n+test_expect_failure '#14: GIT_DIR(rel), core.worktree=.. at root' '\n+\tcat >14/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY/14\n+setup: cwd: $TRASH_DIRECTORY/14\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree \"$TRASH_DIRECTORY/14\" &&\n+\tGIT_DIR=.git test_repo 14\n+'\n+\n+test_expect_failure '#14: GIT_DIR(rel), core.worktree=..(rel) at root' '\n+\tcat >14/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY/14\n+setup: cwd: $TRASH_DIRECTORY/14\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree .. &&\n+\tGIT_DIR=.git test_repo 14\n+'\n+\n+test_expect_failure '#14: GIT_DIR, core.worktree=.. at root' '\n+\tcat >14/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY/14\n+setup: cwd: $TRASH_DIRECTORY/14\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree \"$TRASH_DIRECTORY/14\" &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/14/.git\" test_repo 14\n+'\n+\n+test_expect_failure '#14: GIT_DIR, core.worktree=..(rel) at root' '\n+\tcat >14/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY/14\n+setup: cwd: $TRASH_DIRECTORY/14\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree .. &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/14/.git\" test_repo 14\n+'\n+\n+test_expect_failure '#14: GIT_DIR(rel), core.worktree=.. in subdir' '\n+\tcat >14/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY/14\n+setup: cwd: $TRASH_DIRECTORY/14\n+setup: prefix: sub/sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree \"$TRASH_DIRECTORY/14\" &&\n+\tGIT_DIR=../../.git test_repo 14/sub/sub\n+'\n+\n+test_expect_failure '#14: GIT_DIR(rel), core.worktree=..(rel) in subdir' '\n+\tcat >14/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY/14\n+setup: cwd: $TRASH_DIRECTORY/14\n+setup: prefix: sub/sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree .. &&\n+\tGIT_DIR=../../.git test_repo 14/sub/sub\n+'\n+\n+test_expect_failure '#14: GIT_DIR, core.worktree=.. in subdir' '\n+\tcat >14/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY/14\n+setup: cwd: $TRASH_DIRECTORY/14\n+setup: prefix: sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree \"$TRASH_DIRECTORY/14\" &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/14/.git\" test_repo 14/sub\n+'\n+\n+test_expect_failure '#14: GIT_DIR, core.worktree=..(rel) in subdir' '\n+\tcat >14/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY/14\n+setup: cwd: $TRASH_DIRECTORY/14\n+setup: prefix: sub/sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree .. &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/14/.git\" test_repo 14/sub/sub\n+'\n+\n+test_expect_failure '#14: GIT_DIR(rel), core.worktree=../wt at root' '\n+\tcat >14/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY/14/wt\n+setup: cwd: $TRASH_DIRECTORY/14\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree \"$TRASH_DIRECTORY/14/wt\" &&\n+\tGIT_DIR=.git test_repo 14\n+'\n+\n+test_expect_failure '#14: GIT_DIR(rel), core.worktree=../wt(rel) at root' '\n+\tcat >14/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY/14/wt\n+setup: cwd: $TRASH_DIRECTORY/14\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree ../wt &&\n+\tGIT_DIR=.git test_repo 14\n+'\n+\n+test_expect_failure '#14: GIT_DIR, core.worktree=../wt(rel) at root' '\n+\tcat >14/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY/14/wt\n+setup: cwd: $TRASH_DIRECTORY/14\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree ../wt &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/14/.git\" test_repo 14\n+'\n+\n+test_expect_failure '#14: GIT_DIR, core.worktree=../wt at root' '\n+\tcat >14/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY/14/wt\n+setup: cwd: $TRASH_DIRECTORY/14\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree \"$TRASH_DIRECTORY/14/wt\" &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/14/.git\" test_repo 14\n+'\n+\n+test_expect_failure '#14: GIT_DIR(rel), core.worktree=../wt in subdir' '\n+\tcat >14/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY/14/wt\n+setup: cwd: $TRASH_DIRECTORY/14/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree \"$TRASH_DIRECTORY/14/wt\" &&\n+\tGIT_DIR=../../.git test_repo 14/sub/sub\n+'\n+\n+test_expect_failure '#14: GIT_DIR(rel), core.worktree=../wt(rel) in subdir' '\n+\tcat >14/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY/14/wt\n+setup: cwd: $TRASH_DIRECTORY/14/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree ../wt &&\n+\tGIT_DIR=../../.git test_repo 14/sub/sub\n+'\n+\n+test_expect_failure '#14: GIT_DIR, core.worktree=../wt(rel) in subdir' '\n+\tcat >14/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY/14/wt\n+setup: cwd: $TRASH_DIRECTORY/14/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree ../wt &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/14/.git\" test_repo 14/sub/sub\n+'\n+\n+test_expect_failure '#14: GIT_DIR, core.worktree=../wt in subdir' '\n+\tcat >14/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY/14/wt\n+setup: cwd: $TRASH_DIRECTORY/14/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree \"$TRASH_DIRECTORY/14/wt\" &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/14/.git\" test_repo 14/sub/sub\n+'\n+\n+test_expect_failure '#14: GIT_DIR(rel), core.worktree=../.. at root' '\n+\tcat >14/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 14/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree \"$TRASH_DIRECTORY\" &&\n+\tGIT_DIR=.git test_repo 14\n+'\n+\n+test_expect_failure '#14: GIT_DIR(rel), core.worktree=../..(rel) at root' '\n+\tcat >14/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 14/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree ../../ &&\n+\tGIT_DIR=.git test_repo 14\n+'\n+\n+test_expect_failure '#14: GIT_DIR, core.worktree=../..(rel) at root' '\n+\tcat >14/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 14/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree ../../ &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/14/.git\" test_repo 14\n+'\n+\n+test_expect_failure '#14: GIT_DIR, core.worktree=../.. at root' '\n+\tcat >14/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 14/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree \"$TRASH_DIRECTORY\" &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/14/.git\" test_repo 14\n+'\n+\n+test_expect_failure '#14: GIT_DIR(rel), core.worktree=../.. in subdir' '\n+\tcat >14/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 14/sub/sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree \"$TRASH_DIRECTORY\" &&\n+\tGIT_DIR=../../.git test_repo 14/sub/sub\n+'\n+\n+test_expect_failure '#14: GIT_DIR(rel), core.worktree=../..(rel) in subdir' '\n+\tcat >14/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 14/sub/sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree ../.. &&\n+\tGIT_DIR=../../.git test_repo 14/sub/sub\n+'\n+\n+test_expect_failure '#14: GIT_DIR, core.worktree=../..(rel) in subdir' '\n+\tcat >14/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 14/sub/sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree ../.. &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/14/.git\" test_repo 14/sub/sub\n+'\n+\n+test_expect_failure '#14: GIT_DIR, core.worktree=../.. in subdir' '\n+\tcat >14/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/14.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 14/sub/sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/14.git/config\" core.worktree \"$TRASH_DIRECTORY\" &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/14/.git\" test_repo 14/sub/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154516","messageId":"1288190977-30875-19-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 18/34] t1510: setup case #15","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:21Z","receivedAt":"2010-10-27T14:49:21Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |  268 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 268 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 0cd00ea..47c8814 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -1950,4 +1950,272 @@ EOF\n \tGIT_DIR=\"$TRASH_DIRECTORY/14/.git\" test_repo 14/sub/sub\n '\n \n+#\n+# case #15\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is set\n+#  - GIT_DIR is set\n+#  - core.worktree is set\n+#  - .git is a file\n+#  - core.bare is not set, cwd is outside .git\n+#\n+# Output:\n+#\n+# #7 except that git_dir is set by .git file\n+\n+test_expect_success '#15: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 15 15/sub 15/sub/sub 15.wt 15.wt/sub 15/wt 15/wt/sub &&\n+\tcd 15 &&\n+\tgit init &&\n+\tgit config core.worktree non-existent &&\n+\tmv .git ../15.git &&\n+\techo gitdir: ../15.git >.git &&\n+\tcd ..\n+'\n+\n+test_expect_failure '#15: GIT_DIR(rel), GIT_WORK_TREE=root at root' '\n+\tcat >15/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY/15\n+setup: cwd: $TRASH_DIRECTORY/15\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/15\" test_repo 15\n+'\n+\n+test_expect_failure '#15: GIT_DIR(rel), GIT_WORK_TREE=root(rel) at root' '\n+\tcat >15/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY/15\n+setup: cwd: $TRASH_DIRECTORY/15\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=. test_repo 15\n+'\n+\n+test_expect_failure '#15: GIT_DIR, GIT_WORK_TREE=root at root' '\n+\tcat >15/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY/15\n+setup: cwd: $TRASH_DIRECTORY/15\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/15/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/15\" test_repo 15\n+'\n+\n+test_expect_failure '#15: GIT_DIR, GIT_WORK_TREE=root(rel) at root' '\n+\tcat >15/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY/15\n+setup: cwd: $TRASH_DIRECTORY/15\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/15/.git\" GIT_WORK_TREE=. test_repo 15\n+'\n+\n+test_expect_failure '#15: GIT_DIR(rel), GIT_WORKTREE=root in subdir' '\n+\tcat >15/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY/15\n+setup: cwd: $TRASH_DIRECTORY/15\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/15\" test_repo 15/sub/sub\n+'\n+\n+test_expect_failure '#15: GIT_DIR(rel), GIT_WORKTREE=root(rel) in subdir' '\n+\tcat >15/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY/15\n+setup: cwd: $TRASH_DIRECTORY/15\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../.. test_repo 15/sub/sub\n+'\n+\n+test_expect_failure '#15: GIT_DIR, GIT_WORKTREE=root in subdir' '\n+\tcat >15/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY/15\n+setup: cwd: $TRASH_DIRECTORY/15\n+setup: prefix: sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/15/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/15\" test_repo 15/sub\n+'\n+\n+test_expect_failure '#15: GIT_DIR, GIT_WORKTREE=root(rel) in subdir' '\n+\tcat >15/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY/15\n+setup: cwd: $TRASH_DIRECTORY/15\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/15/.git\" GIT_WORK_TREE=../.. test_repo 15/sub/sub\n+'\n+\n+test_expect_failure '#15: GIT_DIR(rel), GIT_WORK_TREE=wt at root' '\n+\tcat >15/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY/15/wt\n+setup: cwd: $TRASH_DIRECTORY/15\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/15/wt\" test_repo 15\n+'\n+\n+test_expect_failure '#15: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) at root' '\n+\tcat >15/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY/15/wt\n+setup: cwd: $TRASH_DIRECTORY/15\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=wt test_repo 15\n+'\n+\n+test_expect_failure '#15: GIT_DIR, GIT_WORK_TREE=wt(rel) at root' '\n+\tcat >15/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY/15/wt\n+setup: cwd: $TRASH_DIRECTORY/15\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/15/.git\" GIT_WORK_TREE=wt test_repo 15\n+'\n+\n+test_expect_failure '#15: GIT_DIR, GIT_WORK_TREE=wt at root' '\n+\tcat >15/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY/15/wt\n+setup: cwd: $TRASH_DIRECTORY/15\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/15/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/15/wt\" test_repo 15\n+'\n+\n+test_expect_failure '#15: GIT_DIR(rel), GIT_WORK_TREE=wt in subdir' '\n+\tcat >15/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY/15/wt\n+setup: cwd: $TRASH_DIRECTORY/15/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/15/wt\" test_repo 15/sub/sub\n+'\n+\n+test_expect_failure '#15: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) in subdir' '\n+\tcat >15/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY/15/wt\n+setup: cwd: $TRASH_DIRECTORY/15/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../../wt test_repo 15/sub/sub\n+'\n+\n+test_expect_failure '#15: GIT_DIR, GIT_WORK_TREE=wt(rel) in subdir' '\n+\tcat >15/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY/15/wt\n+setup: cwd: $TRASH_DIRECTORY/15/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/15/.git\" GIT_WORK_TREE=../../wt test_repo 15/sub/sub\n+'\n+\n+test_expect_failure '#15: GIT_DIR, GIT_WORK_TREE=wt in subdir' '\n+\tcat >15/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY/15/wt\n+setup: cwd: $TRASH_DIRECTORY/15/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/15/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/15/wt\" test_repo 15/sub/sub\n+'\n+\n+test_expect_failure '#15: GIT_DIR(rel), GIT_WORK_TREE=.. at root' '\n+\tcat >15/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 15/\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 15\n+'\n+\n+test_expect_failure '#15: GIT_DIR(rel), GIT_WORK_TREE=..(rel) at root' '\n+\tcat >15/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 15/\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=.. test_repo 15\n+'\n+\n+test_expect_failure '#15: GIT_DIR, GIT_WORK_TREE=..(rel) at root' '\n+\tcat >15/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 15/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/15/.git\" GIT_WORK_TREE=.. test_repo 15\n+'\n+\n+test_expect_failure '#15: GIT_DIR, GIT_WORK_TREE=.. at root' '\n+\tcat >15/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 15/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/15/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 15\n+'\n+\n+test_expect_failure '#15: GIT_DIR(rel), GIT_WORK_TREE=.. in subdir' '\n+\tcat >15/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 15/sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 15/sub/sub\n+'\n+\n+test_expect_failure '#15: GIT_DIR(rel), GIT_WORK_TREE=..(rel) in subdir' '\n+\tcat >15/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 15/sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../../.. test_repo 15/sub/sub\n+'\n+\n+test_expect_failure '#15: GIT_DIR, GIT_WORK_TREE=..(rel) in subdir' '\n+\tcat >15/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 15/sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/15/.git\" GIT_WORK_TREE=../../../ test_repo 15/sub/sub\n+'\n+\n+test_expect_failure '#15: GIT_DIR, GIT_WORK_TREE=.. in subdir' '\n+\tcat >15/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/15.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 15/sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/15/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 15/sub/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154514","messageId":"1288190977-30875-20-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 19/34] t1510: setup case #16","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:22Z","receivedAt":"2010-10-27T14:49:22Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |  135 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 135 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 47c8814..a856d7c 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -2218,4 +2218,139 @@ EOF\n \tGIT_DIR=\"$TRASH_DIRECTORY/15/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 15/sub/sub\n '\n \n+#\n+# case #16.1\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is not set\n+#  - GIT_DIR is not set\n+#  - core.worktree is not set\n+#  - .git is a directory\n+#  - cwd is inside .git\n+#\n+# Output:\n+#\n+#  - no worktree\n+#  - cwd is unchanged\n+#  - prefix is NULL\n+#  - git_dir is set\n+#  - cwd can't be outside worktree\n+\n+test_expect_success '#16.1: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 16 16/sub &&\n+\tcd 16 &&\n+\tgit init &&\n+\tmkdir .git/wt .git/wt/sub &&\n+\tcd ..\n+'\n+\n+test_expect_success '#16.1: at .git' '\n+\tcat >16/.git/expected <<EOF &&\n+setup: git_dir: .\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/16/.git\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 16/.git\n+'\n+\n+test_expect_success '#16.1: in .git/wt' '\n+\tcat >16/.git/wt/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/16/.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/16/.git/wt\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 16/.git/wt\n+'\n+\n+test_expect_success '#16.1: in .git/wt/sub' '\n+\tcat >16/.git/wt/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/16/.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/16/.git/wt/sub\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 16/.git/wt/sub\n+'\n+\n+#\n+# case #16.2\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is not set\n+#  - GIT_DIR is not set\n+#  - core.worktree is not set\n+#  - .git is a directory\n+#  - core.bare is set\n+#\n+# Output:\n+#\n+#  - no worktree\n+#  - cwd is unchanged\n+#  - prefix is NULL\n+#  - git_dir is set\n+#  - cwd can't be outside worktree\n+\n+test_expect_success '#16.2: setup' '\n+\tgit config --file=\"$TRASH_DIRECTORY/16/.git/config\" core.bare true\n+'\n+\n+test_expect_success '#16.2: at .git' '\n+\tcat >16/.git/expected <<EOF &&\n+setup: git_dir: .\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/16/.git\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 16/.git\n+'\n+\n+test_expect_success '#16.2: in .git/wt' '\n+\tcat >16/.git/wt/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/16/.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/16/.git/wt\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 16/.git/wt\n+'\n+\n+test_expect_success '#16.2: in .git/wt/sub' '\n+\tcat >16/.git/wt/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/16/.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/16/.git/wt/sub\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 16/.git/wt/sub\n+'\n+\n+test_expect_success '#16.2: at root' '\n+\tcat >16/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/16\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 16\n+'\n+\n+test_expect_failure '#16.2: in subdir' '\n+\tcat >16/sub/expected <<EOF &&\n+setup: git_dir: ../.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/16/sub\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 16/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154513","messageId":"1288190977-30875-21-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 20/34] t1510: setup case #17","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:23Z","receivedAt":"2010-10-27T14:49:23Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |  128 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 128 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex a856d7c..b015f91 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -2353,4 +2353,132 @@ EOF\n \ttest_repo 16/sub\n '\n \n+#\n+# case #17.1\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is set\n+#  - GIT_DIR is not set\n+#  - core.worktree is not set\n+#  - .git is a directory\n+#  - cwd is inside .git\n+#\n+# Output:\n+#\n+# GIT_WORK_TREE is ignored -> #16.1 (with warnings perhaps)\n+\n+test_expect_success '#17.1: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 17 17/sub &&\n+\tcd 17 &&\n+\tgit init &&\n+\tmkdir .git/wt .git/wt/sub &&\n+\texport GIT_WORK_TREE=non-existent &&\n+\tcd ..\n+'\n+\n+test_expect_failure '#17.1: at .git' '\n+\tcat >17/.git/expected <<EOF &&\n+setup: git_dir: .\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/17/.git\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 17/.git\n+'\n+\n+test_expect_failure '#17.1: in .git/wt' '\n+\tcat >17/.git/wt/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/17/.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/17/.git/wt\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 17/.git/wt\n+'\n+\n+test_expect_failure '#17.1: in .git/wt/sub' '\n+\tcat >17/.git/wt/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/17/.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/17/.git/wt/sub\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 17/.git/wt/sub\n+'\n+\n+#\n+# case #17.2\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is set\n+#  - GIT_DIR is not set\n+#  - core.worktree is not set\n+#  - .git is a directory\n+#  - core.bare is set\n+#\n+# Output:\n+#\n+# GIT_WORK_TREE is ignored -> #16.2 (with warnings perhaps)\n+\n+test_expect_success '#17.2: setup' '\n+\tgit config --file=\"$TRASH_DIRECTORY/17/.git/config\" core.bare true\n+'\n+\n+test_expect_failure '#17.2: at .git' '\n+\tcat >17/.git/expected <<EOF &&\n+setup: git_dir: .\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/17/.git\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 17/.git\n+'\n+\n+test_expect_failure '#17.2: in .git/wt' '\n+\tcat >17/.git/wt/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/17/.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/17/.git/wt\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 17/.git/wt\n+'\n+\n+test_expect_failure '#17.2: in .git/wt/sub' '\n+\tcat >17/.git/wt/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/17/.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/17/.git/wt/sub\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 17/.git/wt/sub\n+'\n+\n+test_expect_failure '#17.2: at root' '\n+\tcat >17/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/17\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 17\n+'\n+\n+test_expect_failure '#17.2: in subdir' '\n+\tcat >17/sub/expected <<EOF &&\n+setup: git_dir: ../.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/17/sub\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 17/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154510","messageId":"1288190977-30875-22-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 21/34] t1510: setup case #18","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:24Z","receivedAt":"2010-10-27T14:49:24Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |   71 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 71 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex b015f91..0d32a6d 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -2481,4 +2481,75 @@ EOF\n \ttest_repo 17/sub\n '\n \n+#\n+# case #18\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is not set\n+#  - GIT_DIR is set\n+#  - core.worktree is not set\n+#  - .git is a directory\n+#  - core.bare is set\n+#\n+# Output:\n+#\n+#  - no worktree (rule #8)\n+#  - cwd is unchanged\n+#  - prefix is NULL\n+#  - git_dir is set to $GIT_DIR\n+#  - cwd can't be outside worktree\n+\n+test_expect_success '#18: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 18 18/sub &&\n+\tcd 18 &&\n+\tgit init &&\n+\tmkdir .git/wt .git/wt/sub &&\n+\tgit config core.bare true &&\n+\tcd ..\n+'\n+\n+test_expect_success '#18: (rel) at root' '\n+\tcat >18/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/18\n+setup: prefix: (null)\n+EOF\n+\t GIT_DIR=.git test_repo 18\n+'\n+\n+test_expect_success '#18: at root' '\n+\tcat >18/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/18/.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/18\n+setup: prefix: (null)\n+EOF\n+\t GIT_DIR=\"$TRASH_DIRECTORY/18/.git\" test_repo 18\n+'\n+\n+test_expect_success '#18: (rel) in subdir' '\n+\tcat >18/sub/expected <<EOF &&\n+setup: git_dir: ../.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/18/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../.git test_repo 18/sub\n+'\n+\n+test_expect_success '#18: in subdir' '\n+\tcat >18/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/18/.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/18/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/18/.git\" test_repo 18/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154511","messageId":"1288190977-30875-23-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 22/34] t1510: setup case #19","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:25Z","receivedAt":"2010-10-27T14:49:25Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |  266 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 266 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 0d32a6d..802bd5f 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -2552,4 +2552,270 @@ EOF\n \tGIT_DIR=\"$TRASH_DIRECTORY/18/.git\" test_repo 18/sub\n '\n \n+#\n+# case #19\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is set\n+#  - GIT_DIR is set\n+#  - .git is a directory\n+#  - core.worktree is not set\n+#  - core.bare is set\n+#\n+# Output:\n+#\n+# bare repo is overridden by GIT_WORK_TREE -> #3\n+\n+test_expect_success '#19: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 19 19/sub 19/sub/sub 19.wt 19.wt/sub 19/wt 19/wt/sub &&\n+\tcd 19 &&\n+\tgit init &&\n+\tgit config core.bare true &&\n+\tcd ..\n+'\n+\n+test_expect_success '#19: GIT_DIR(rel), GIT_WORK_TREE=root at root' '\n+\tcat >19/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/19\n+setup: cwd: $TRASH_DIRECTORY/19\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/19\" test_repo 19\n+'\n+\n+test_expect_success '#19: GIT_DIR(rel), GIT_WORK_TREE=root(rel) at root' '\n+\tcat >19/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/19\n+setup: cwd: $TRASH_DIRECTORY/19\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=. test_repo 19\n+'\n+\n+test_expect_success '#19: GIT_DIR, GIT_WORK_TREE=root at root' '\n+\tcat >19/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/19/.git\n+setup: worktree: $TRASH_DIRECTORY/19\n+setup: cwd: $TRASH_DIRECTORY/19\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/19/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/19\" test_repo 19\n+'\n+\n+test_expect_success '#19: GIT_DIR, GIT_WORK_TREE=root(rel) at root' '\n+\tcat >19/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/19/.git\n+setup: worktree: $TRASH_DIRECTORY/19\n+setup: cwd: $TRASH_DIRECTORY/19\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/19/.git\" GIT_WORK_TREE=. test_repo 19\n+'\n+\n+test_expect_success '#19: GIT_DIR(rel), GIT_WORKTREE=root in subdir' '\n+\tcat >19/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/19/.git\n+setup: worktree: $TRASH_DIRECTORY/19\n+setup: cwd: $TRASH_DIRECTORY/19\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/19\" test_repo 19/sub/sub\n+'\n+\n+test_expect_success '#19: GIT_DIR(rel), GIT_WORKTREE=root(rel) in subdir' '\n+\tcat >19/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/19/.git\n+setup: worktree: $TRASH_DIRECTORY/19\n+setup: cwd: $TRASH_DIRECTORY/19\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../.. test_repo 19/sub/sub\n+'\n+\n+test_expect_success '#19: GIT_DIR, GIT_WORKTREE=root in subdir' '\n+\tcat >19/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/19/.git\n+setup: worktree: $TRASH_DIRECTORY/19\n+setup: cwd: $TRASH_DIRECTORY/19\n+setup: prefix: sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/19/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/19\" test_repo 19/sub\n+'\n+\n+test_expect_success '#19: GIT_DIR, GIT_WORKTREE=root(rel) in subdir' '\n+\tcat >19/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/19/.git\n+setup: worktree: $TRASH_DIRECTORY/19\n+setup: cwd: $TRASH_DIRECTORY/19\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/19/.git\" GIT_WORK_TREE=../.. test_repo 19/sub/sub\n+'\n+\n+test_expect_success '#19: GIT_DIR(rel), GIT_WORK_TREE=wt at root' '\n+\tcat >19/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/19/wt\n+setup: cwd: $TRASH_DIRECTORY/19\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/19/wt\" test_repo 19\n+'\n+\n+test_expect_success '#19: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) at root' '\n+\tcat >19/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/19/wt\n+setup: cwd: $TRASH_DIRECTORY/19\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=wt test_repo 19\n+'\n+\n+test_expect_success '#19: GIT_DIR, GIT_WORK_TREE=wt(rel) at root' '\n+\tcat >19/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/19/.git\n+setup: worktree: $TRASH_DIRECTORY/19/wt\n+setup: cwd: $TRASH_DIRECTORY/19\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/19/.git\" GIT_WORK_TREE=wt test_repo 19\n+'\n+\n+test_expect_success '#19: GIT_DIR, GIT_WORK_TREE=wt at root' '\n+\tcat >19/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/19/.git\n+setup: worktree: $TRASH_DIRECTORY/19/wt\n+setup: cwd: $TRASH_DIRECTORY/19\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/19/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/19/wt\" test_repo 19\n+'\n+\n+test_expect_success '#19: GIT_DIR(rel), GIT_WORK_TREE=wt in subdir' '\n+\tcat >19/sub/sub/expected <<EOF &&\n+setup: git_dir: ../../.git\n+setup: worktree: $TRASH_DIRECTORY/19/wt\n+setup: cwd: $TRASH_DIRECTORY/19/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/19/wt\" test_repo 19/sub/sub\n+'\n+\n+test_expect_success '#19: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) in subdir' '\n+\tcat >19/sub/sub/expected <<EOF &&\n+setup: git_dir: ../../.git\n+setup: worktree: $TRASH_DIRECTORY/19/wt\n+setup: cwd: $TRASH_DIRECTORY/19/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../../wt test_repo 19/sub/sub\n+'\n+\n+test_expect_success '#19: GIT_DIR, GIT_WORK_TREE=wt(rel) in subdir' '\n+\tcat >19/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/19/.git\n+setup: worktree: $TRASH_DIRECTORY/19/wt\n+setup: cwd: $TRASH_DIRECTORY/19/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/19/.git\" GIT_WORK_TREE=../../wt test_repo 19/sub/sub\n+'\n+\n+test_expect_success '#19: GIT_DIR, GIT_WORK_TREE=wt in subdir' '\n+\tcat >19/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/19/.git\n+setup: worktree: $TRASH_DIRECTORY/19/wt\n+setup: cwd: $TRASH_DIRECTORY/19/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/19/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/19/wt\" test_repo 19/sub/sub\n+'\n+\n+test_expect_success '#19: GIT_DIR(rel), GIT_WORK_TREE=.. at root' '\n+\tcat >19/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/19/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 19/\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 19\n+'\n+\n+test_expect_success '#19: GIT_DIR(rel), GIT_WORK_TREE=..(rel) at root' '\n+\tcat >19/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/19/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 19/\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=.. test_repo 19\n+'\n+\n+test_expect_success '#19: GIT_DIR, GIT_WORK_TREE=..(rel) at root' '\n+\tcat >19/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/19/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 19/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/19/.git\" GIT_WORK_TREE=.. test_repo 19\n+'\n+\n+test_expect_success '#19: GIT_DIR, GIT_WORK_TREE=.. at root' '\n+\tcat >19/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/19/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 19/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/19/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 19\n+'\n+\n+test_expect_success '#19: GIT_DIR(rel), GIT_WORK_TREE=.. in subdir' '\n+\tcat >19/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/19/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 19/sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 19/sub/sub\n+'\n+\n+test_expect_success '#19: GIT_DIR(rel), GIT_WORK_TREE=..(rel) in subdir' '\n+\tcat >19/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/19/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 19/sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../../.. test_repo 19/sub/sub\n+'\n+\n+test_expect_success '#19: GIT_DIR, GIT_WORK_TREE=..(rel) in subdir' '\n+\tcat >19/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/19/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 19/sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/19/.git\" GIT_WORK_TREE=../../../ test_repo 19/sub/sub\n+'\n+\n+test_expect_success '#19: GIT_DIR, GIT_WORK_TREE=.. in subdir' '\n+\tcat >19/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/19/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 19/sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/19/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 19/sub/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154512","messageId":"1288190977-30875-24-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 23/34] t1510: setup case #20","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:26Z","receivedAt":"2010-10-27T14:49:26Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |  128 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 128 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 802bd5f..dc82736 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -2818,4 +2818,132 @@ EOF\n \tGIT_DIR=\"$TRASH_DIRECTORY/19/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 19/sub/sub\n '\n \n+#\n+# case #20.1\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is not set\n+#  - GIT_DIR is not set\n+#  - core.worktree is set\n+#  - .git is a directory\n+#  - cwd is inside .git\n+#\n+# Output:\n+#\n+# core.worktree is ignored -> #16.1\n+\n+test_expect_success '#20.1: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 20 20/sub &&\n+\tcd 20 &&\n+\tgit init &&\n+\tgit config core.worktree non-existent &&\n+\tmkdir .git/wt .git/wt/sub &&\n+\tcd ..\n+'\n+\n+test_expect_failure '#20.1: at .git' '\n+\tcat >20/.git/expected <<EOF &&\n+setup: git_dir: .\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/20/.git\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 20/.git\n+'\n+\n+test_expect_failure '#20.1: in .git/wt' '\n+\tcat >20/.git/wt/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/20/.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/20/.git/wt\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 20/.git/wt\n+'\n+\n+test_expect_failure '#20.1: in .git/wt/sub' '\n+\tcat >20/.git/wt/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/20/.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/20/.git/wt/sub\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 20/.git/wt/sub\n+'\n+\n+#\n+# case #20.2\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is not set\n+#  - GIT_DIR is not set\n+#  - core.worktree is set\n+#  - .git is a directory\n+#  - core.bare is set\n+#\n+# Output:\n+#\n+# core.worktree is ignored -> #16.2\n+\n+test_expect_success '#20.2: setup' '\n+\tgit config --file=\"$TRASH_DIRECTORY/20/.git/config\" core.bare true\n+'\n+\n+test_expect_success '#20.2: at .git' '\n+\tcat >20/.git/expected <<EOF &&\n+setup: git_dir: .\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/20/.git\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 20/.git\n+'\n+\n+test_expect_success '#20.2: in .git/wt' '\n+\tcat >20/.git/wt/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/20/.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/20/.git/wt\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 20/.git/wt\n+'\n+\n+test_expect_success '#20.2: in .git/wt/sub' '\n+\tcat >20/.git/wt/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/20/.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/20/.git/wt/sub\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 20/.git/wt/sub\n+'\n+\n+test_expect_success '#20.2: at root' '\n+\tcat >20/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/20\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 20\n+'\n+\n+test_expect_failure '#20.2: in subdir' '\n+\tcat >20/sub/expected <<EOF &&\n+setup: git_dir: ../.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/20/sub\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 20/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154518","messageId":"1288190977-30875-25-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 24/34] t1510: setup case #21","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:27Z","receivedAt":"2010-10-27T14:49:27Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |  129 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 129 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex dc82736..8e3fffb 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -2946,4 +2946,133 @@ EOF\n \ttest_repo 20/sub\n '\n \n+#\n+# case #21.1\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is set\n+#  - GIT_DIR is not set\n+#  - core.worktree is set\n+#  - .git is a directory\n+#  - cwd is inside .git\n+#\n+# Output:\n+#\n+# GIT_WORK_TREE/core.worktree are ignored -> #20.1\n+\n+test_expect_success '#21.1: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 21 21/sub &&\n+\tcd 21 &&\n+\tgit init &&\n+\tgit config core.worktree non-existent &&\n+\texport GIT_WORK_TREE=non-existent-too &&\n+\tmkdir .git/wt .git/wt/sub &&\n+\tcd ..\n+'\n+\n+test_expect_failure '#21.1: at .git' '\n+\tcat >21/.git/expected <<EOF &&\n+setup: git_dir: .\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/21/.git\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 21/.git\n+'\n+\n+test_expect_failure '#21.1: in .git/wt' '\n+\tcat >21/.git/wt/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/21/.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/21/.git/wt\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 21/.git/wt\n+'\n+\n+test_expect_failure '#21.1: in .git/wt/sub' '\n+\tcat >21/.git/wt/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/21/.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/21/.git/wt/sub\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 21/.git/wt/sub\n+'\n+\n+#\n+# case #21.2\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is set\n+#  - GIT_DIR is not set\n+#  - core.worktree is set\n+#  - .git is a directory\n+#  - core.bare is set\n+#\n+# Output:\n+#\n+# GIT_WORK_TREE/core.worktree are ignored -> #20.2\n+\n+test_expect_success '#21.2: setup' '\n+\tgit config --file=\"$TRASH_DIRECTORY/21/.git/config\" core.bare true\n+'\n+\n+test_expect_failure '#21.2: at .git' '\n+\tcat >21/.git/expected <<EOF &&\n+setup: git_dir: .\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/21/.git\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 21/.git\n+'\n+\n+test_expect_failure '#21.2: in .git/wt' '\n+\tcat >21/.git/wt/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/21/.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/21/.git/wt\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 21/.git/wt\n+'\n+\n+test_expect_failure '#21.2: in .git/wt/sub' '\n+\tcat >21/.git/wt/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/21/.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/21/.git/wt/sub\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 21/.git/wt/sub\n+'\n+\n+test_expect_failure '#21.2: at root' '\n+\tcat >21/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/21\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 21\n+'\n+\n+test_expect_failure '#21.2: in subdir' '\n+\tcat >21/sub/expected <<EOF &&\n+setup: git_dir: ../.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/21/sub\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 21/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154519","messageId":"1288190977-30875-26-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 25/34] t1510: setup case #22","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:28Z","receivedAt":"2010-10-27T14:49:28Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |  333 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 333 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 8e3fffb..5d66c34 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -3075,4 +3075,337 @@ EOF\n \ttest_repo 21/sub\n '\n \n+#\n+# case #22.1\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is not set\n+#  - GIT_DIR is set\n+#  - core.worktree is set\n+#  - .git is a directory\n+#  - cwd is inside .git\n+#\n+# Output:\n+#\n+# bare attribute is ignored\n+#\n+#  - worktree is at core.worktree\n+#  - cwd is at worktree root\n+#  - prefix is calculated\n+#  - git_dir is at $GIT_DIR\n+#  - cwd can be outside worktree\n+\n+test_expect_success '#22.1: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 22 &&\n+\tcd 22 &&\n+\tgit init &&\n+\tmkdir .git/sub .git/wt .git/wt/sub &&\n+\tcd ..\n+'\n+\n+test_expect_success '#22.1: GIT_DIR(rel), core.worktree=. at .git' '\n+\tcat >22/.git/expected <<EOF &&\n+setup: git_dir: .\n+setup: worktree: $TRASH_DIRECTORY/22/.git\n+setup: cwd: $TRASH_DIRECTORY/22/.git\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree \"$TRASH_DIRECTORY/22/.git\" &&\n+\tGIT_DIR=. test_repo 22/.git\n+'\n+\n+test_expect_success '#22.1: GIT_DIR(rel), core.worktree=.(rel) at .git' '\n+\tcat >22/.git/expected <<EOF &&\n+setup: git_dir: .\n+setup: worktree: $TRASH_DIRECTORY/22/.git\n+setup: cwd: $TRASH_DIRECTORY/22/.git\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree . &&\n+\tGIT_DIR=. test_repo 22/.git\n+'\n+\n+test_expect_success '#22.1: GIT_DIR, core.worktree=. at .git' '\n+\tcat >22/.git/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/22/.git\n+setup: worktree: $TRASH_DIRECTORY/22/.git\n+setup: cwd: $TRASH_DIRECTORY/22/.git\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree \"$TRASH_DIRECTORY/22/.git\" &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/22/.git\" test_repo 22/.git\n+'\n+\n+test_expect_success '#22.1: GIT_DIR, core.worktree=.(rel) at root' '\n+\tcat >22/.git/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/22/.git\n+setup: worktree: $TRASH_DIRECTORY/22/.git\n+setup: cwd: $TRASH_DIRECTORY/22/.git\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree . &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/22/.git\" test_repo 22/.git\n+'\n+\n+test_expect_failure '#22.1: GIT_DIR(rel), core.worktree=. in .git/sub' '\n+\tcat >22/.git/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/22/.git\n+setup: worktree: $TRASH_DIRECTORY/22/.git\n+setup: cwd: $TRASH_DIRECTORY/22/.git\n+setup: prefix: sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree \"$TRASH_DIRECTORY/22/.git\" &&\n+\tGIT_DIR=.. test_repo 22/.git/sub\n+'\n+\n+test_expect_failure '#22.1: GIT_DIR(rel), core.worktree=.(rel) in .git/sub' '\n+\tcat >22/.git/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/22/.git\n+setup: worktree: $TRASH_DIRECTORY/22/.git\n+setup: cwd: $TRASH_DIRECTORY/22/.git\n+setup: prefix: sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree . &&\n+\tGIT_DIR=.. test_repo 22/.git/sub/\n+'\n+\n+test_expect_success '#22.1: GIT_DIR, core.worktree=. in .git/sub' '\n+\tcat >22/.git/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/22/.git\n+setup: worktree: $TRASH_DIRECTORY/22/.git\n+setup: cwd: $TRASH_DIRECTORY/22/.git\n+setup: prefix: sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree \"$TRASH_DIRECTORY/22/.git\" &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/22/.git\" test_repo 22/.git/sub\n+'\n+\n+test_expect_success '#22.1: GIT_DIR, core.worktree=.(rel) in .git/sub' '\n+\tcat >22/.git/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/22/.git\n+setup: worktree: $TRASH_DIRECTORY/22/.git\n+setup: cwd: $TRASH_DIRECTORY/22/.git\n+setup: prefix: sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree . &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/22/.git\" test_repo 22/.git/sub\n+'\n+\n+test_expect_success '#22.1: GIT_DIR(rel), core.worktree=wt at .git' '\n+\tcat >22/.git/expected <<EOF &&\n+setup: git_dir: .\n+setup: worktree: $TRASH_DIRECTORY/22/.git/wt\n+setup: cwd: $TRASH_DIRECTORY/22/.git\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree \"$TRASH_DIRECTORY/22/.git/wt\" &&\n+\tGIT_DIR=. test_repo 22/.git\n+'\n+\n+test_expect_success '#22.1: GIT_DIR(rel), core.worktree=wt(rel) at .git' '\n+\tcat >22/.git/expected <<EOF &&\n+setup: git_dir: .\n+setup: worktree: $TRASH_DIRECTORY/22/.git/wt\n+setup: cwd: $TRASH_DIRECTORY/22/.git\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree wt &&\n+\tGIT_DIR=. test_repo 22/.git\n+'\n+\n+test_expect_success '#22.1: GIT_DIR, core.worktree=wt(rel) at .git' '\n+\tcat >22/.git/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/22/.git\n+setup: worktree: $TRASH_DIRECTORY/22/.git/wt\n+setup: cwd: $TRASH_DIRECTORY/22/.git\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree wt &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/22/.git\" test_repo 22/.git\n+'\n+\n+test_expect_success '#22.1: GIT_DIR, core.worktree=wt at .git' '\n+\tcat >22/.git/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/22/.git\n+setup: worktree: $TRASH_DIRECTORY/22/.git/wt\n+setup: cwd: $TRASH_DIRECTORY/22/.git\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree \"$TRASH_DIRECTORY/22/.git/wt\" &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/22/.git\" test_repo 22/.git\n+'\n+\n+test_expect_success '#22.1: GIT_DIR(rel), core.worktree=wt in .git/sub' '\n+\tcat >22/.git/sub/expected <<EOF &&\n+setup: git_dir: ..\n+setup: worktree: $TRASH_DIRECTORY/22/.git/wt\n+setup: cwd: $TRASH_DIRECTORY/22/.git/sub\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree \"$TRASH_DIRECTORY/22/.git/wt\" &&\n+\tGIT_DIR=.. test_repo 22/.git/sub\n+'\n+\n+test_expect_success '#22.1: GIT_DIR(rel), core.worktree=wt(rel) in .git/sub' '\n+\tcat >22/.git/sub/expected <<EOF &&\n+setup: git_dir: ..\n+setup: worktree: $TRASH_DIRECTORY/22/.git/wt\n+setup: cwd: $TRASH_DIRECTORY/22/.git/sub\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree wt &&\n+\tGIT_DIR=.. test_repo 22/.git/sub\n+'\n+\n+test_expect_success '#22.1: GIT_DIR, core.worktree=wt(rel) in .git/sub' '\n+\tcat >22/.git/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/22/.git\n+setup: worktree: $TRASH_DIRECTORY/22/.git/wt\n+setup: cwd: $TRASH_DIRECTORY/22/.git/sub\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree wt &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/22/.git\" test_repo 22/.git/sub\n+'\n+\n+test_expect_success '#22.1: GIT_DIR, core.worktree=wt in .git/sub' '\n+\tcat >22/.git/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/22/.git\n+setup: worktree: $TRASH_DIRECTORY/22/.git/wt\n+setup: cwd: $TRASH_DIRECTORY/22/.git/sub\n+setup: prefix: (null)\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree \"$TRASH_DIRECTORY/22/.git/wt\" &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/22/.git\" test_repo 22/.git/sub\n+'\n+\n+test_expect_failure '#22.1: GIT_DIR(rel), core.worktree=.. at .git' '\n+\tcat >22/.git/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/22/.git\n+setup: worktree: $TRASH_DIRECTORY/22\n+setup: cwd: $TRASH_DIRECTORY/22\n+setup: prefix: .git/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree \"$TRASH_DIRECTORY/22\" &&\n+\tGIT_DIR=. test_repo 22/.git\n+'\n+\n+test_expect_failure '#22.1: GIT_DIR(rel), core.worktree=..(rel) at .git' '\n+\tcat >22/.git/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/22/.git\n+setup: worktree: $TRASH_DIRECTORY/22\n+setup: cwd: $TRASH_DIRECTORY/22\n+setup: prefix: .git/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree .. &&\n+\tGIT_DIR=. test_repo 22/.git\n+'\n+\n+test_expect_success '#22.1: GIT_DIR, core.worktree=..(rel) at .git' '\n+\tcat >22/.git/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/22/.git\n+setup: worktree: $TRASH_DIRECTORY/22\n+setup: cwd: $TRASH_DIRECTORY/22\n+setup: prefix: .git/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree .. &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/22/.git\" test_repo 22/.git\n+'\n+\n+test_expect_success '#22.1: GIT_DIR, core.worktree=.. at .git' '\n+\tcat >22/.git/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/22/.git\n+setup: worktree: $TRASH_DIRECTORY/22\n+setup: cwd: $TRASH_DIRECTORY/22\n+setup: prefix: .git/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree \"$TRASH_DIRECTORY/22\" &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/22/.git\" test_repo 22/.git\n+'\n+\n+test_expect_failure '#22.1: GIT_DIR(rel), core.worktree=.. in .git/sub' '\n+\tcat >22/.git/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/22/.git\n+setup: worktree: $TRASH_DIRECTORY/22\n+setup: cwd: $TRASH_DIRECTORY/22\n+setup: prefix: .git/sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree \"$TRASH_DIRECTORY/22\" &&\n+\tGIT_DIR=.. test_repo 22/.git/sub\n+'\n+\n+test_expect_failure '#22.1: GIT_DIR(rel), core.worktree=..(rel) in .git/sub' '\n+\tcat >22/.git/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/22/.git\n+setup: worktree: $TRASH_DIRECTORY/22\n+setup: cwd: $TRASH_DIRECTORY/22\n+setup: prefix: .git/sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree .. &&\n+\tGIT_DIR=.. test_repo 22/.git/sub\n+'\n+\n+test_expect_success '#22.1: GIT_DIR, core.worktree=..(rel) in .git/sub' '\n+\tcat >22/.git/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/22/.git\n+setup: worktree: $TRASH_DIRECTORY/22\n+setup: cwd: $TRASH_DIRECTORY/22\n+setup: prefix: .git/sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree .. &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/22/.git\" test_repo 22/.git/sub\n+'\n+\n+test_expect_success '#22.1: GIT_DIR, core.worktree=.. in .git/sub' '\n+\tcat >22/.git/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/22/.git\n+setup: worktree: $TRASH_DIRECTORY/22\n+setup: cwd: $TRASH_DIRECTORY/22\n+setup: prefix: .git/sub/\n+EOF\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.worktree \"$TRASH_DIRECTORY/22\" &&\n+\tGIT_DIR=\"$TRASH_DIRECTORY/22/.git\" test_repo 22/.git/sub\n+'\n+\n+#\n+# case #22.2\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is not set\n+#  - GIT_DIR is set\n+#  - core.worktree is set\n+#  - .git is a directory\n+#  - core.bare is set\n+#\n+# Output:\n+#\n+# core.worktree and core.bare conflict, won't fly.\n+\n+test_expect_success '#22.2: setup' '\n+\tgit config --file=\"$TRASH_DIRECTORY/22/.git/config\" core.bare true\n+'\n+\n+test_expect_failure '#22.2: at .git' '\n+\t(\n+\tcd 22/.git &&\n+\tGIT_DIR=. test_must_fail git symbolic-ref HEAD 2>result &&\n+\tgrep \"core.bare and core.worktree do not make sense\" result\n+\t)\n+'\n+\n+test_expect_failure '#22.2: at root' '\n+\t(\n+\tcd 22 &&\n+\tGIT_DIR=.git test_must_fail git symbolic-ref HEAD 2>result &&\n+\tgrep \"core.bare and core.worktree do not make sense\" result\n+\t)\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154520","messageId":"1288190977-30875-27-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 26/34] t1510: setup case #23","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:29Z","receivedAt":"2010-10-27T14:49:29Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |  267 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 267 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 5d66c34..30743d6 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -3408,4 +3408,271 @@ test_expect_failure '#22.2: at root' '\n \t)\n '\n \n+#\n+# case #23\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is set\n+#  - GIT_DIR is set\n+#  - core.worktree is set\n+#  - .git is a directory\n+#  - core.bare is set\n+#\n+# Output:\n+#\n+# core.worktree is overridden by GIT_WORK_TREE -> #19\n+\n+test_expect_success '#23: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 23 23/sub 23/sub/sub 23.wt 23.wt/sub 23/wt 23/wt/sub &&\n+\tcd 23 &&\n+\tgit init &&\n+\tgit config core.bare true &&\n+\tgit config core.worktree non-existent &&\n+\tcd ..\n+'\n+\n+test_expect_success '#23: GIT_DIR(rel), GIT_WORK_TREE=root at root' '\n+\tcat >23/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/23\n+setup: cwd: $TRASH_DIRECTORY/23\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/23\" test_repo 23\n+'\n+\n+test_expect_success '#23: GIT_DIR(rel), GIT_WORK_TREE=root(rel) at root' '\n+\tcat >23/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/23\n+setup: cwd: $TRASH_DIRECTORY/23\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=. test_repo 23\n+'\n+\n+test_expect_success '#23: GIT_DIR, GIT_WORK_TREE=root at root' '\n+\tcat >23/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/23/.git\n+setup: worktree: $TRASH_DIRECTORY/23\n+setup: cwd: $TRASH_DIRECTORY/23\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/23/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/23\" test_repo 23\n+'\n+\n+test_expect_success '#23: GIT_DIR, GIT_WORK_TREE=root(rel) at root' '\n+\tcat >23/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/23/.git\n+setup: worktree: $TRASH_DIRECTORY/23\n+setup: cwd: $TRASH_DIRECTORY/23\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/23/.git\" GIT_WORK_TREE=. test_repo 23\n+'\n+\n+test_expect_success '#23: GIT_DIR(rel), GIT_WORKTREE=root in subdir' '\n+\tcat >23/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/23/.git\n+setup: worktree: $TRASH_DIRECTORY/23\n+setup: cwd: $TRASH_DIRECTORY/23\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/23\" test_repo 23/sub/sub\n+'\n+\n+test_expect_success '#23: GIT_DIR(rel), GIT_WORKTREE=root(rel) in subdir' '\n+\tcat >23/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/23/.git\n+setup: worktree: $TRASH_DIRECTORY/23\n+setup: cwd: $TRASH_DIRECTORY/23\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../.. test_repo 23/sub/sub\n+'\n+\n+test_expect_success '#23: GIT_DIR, GIT_WORKTREE=root in subdir' '\n+\tcat >23/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/23/.git\n+setup: worktree: $TRASH_DIRECTORY/23\n+setup: cwd: $TRASH_DIRECTORY/23\n+setup: prefix: sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/23/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/23\" test_repo 23/sub\n+'\n+\n+test_expect_success '#23: GIT_DIR, GIT_WORKTREE=root(rel) in subdir' '\n+\tcat >23/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/23/.git\n+setup: worktree: $TRASH_DIRECTORY/23\n+setup: cwd: $TRASH_DIRECTORY/23\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/23/.git\" GIT_WORK_TREE=../.. test_repo 23/sub/sub\n+'\n+\n+test_expect_success '#23: GIT_DIR(rel), GIT_WORK_TREE=wt at root' '\n+\tcat >23/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/23/wt\n+setup: cwd: $TRASH_DIRECTORY/23\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/23/wt\" test_repo 23\n+'\n+\n+test_expect_success '#23: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) at root' '\n+\tcat >23/expected <<EOF &&\n+setup: git_dir: .git\n+setup: worktree: $TRASH_DIRECTORY/23/wt\n+setup: cwd: $TRASH_DIRECTORY/23\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=wt test_repo 23\n+'\n+\n+test_expect_success '#23: GIT_DIR, GIT_WORK_TREE=wt(rel) at root' '\n+\tcat >23/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/23/.git\n+setup: worktree: $TRASH_DIRECTORY/23/wt\n+setup: cwd: $TRASH_DIRECTORY/23\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/23/.git\" GIT_WORK_TREE=wt test_repo 23\n+'\n+\n+test_expect_success '#23: GIT_DIR, GIT_WORK_TREE=wt at root' '\n+\tcat >23/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/23/.git\n+setup: worktree: $TRASH_DIRECTORY/23/wt\n+setup: cwd: $TRASH_DIRECTORY/23\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/23/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/23/wt\" test_repo 23\n+'\n+\n+test_expect_success '#23: GIT_DIR(rel), GIT_WORK_TREE=wt in subdir' '\n+\tcat >23/sub/sub/expected <<EOF &&\n+setup: git_dir: ../../.git\n+setup: worktree: $TRASH_DIRECTORY/23/wt\n+setup: cwd: $TRASH_DIRECTORY/23/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/23/wt\" test_repo 23/sub/sub\n+'\n+\n+test_expect_success '#23: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) in subdir' '\n+\tcat >23/sub/sub/expected <<EOF &&\n+setup: git_dir: ../../.git\n+setup: worktree: $TRASH_DIRECTORY/23/wt\n+setup: cwd: $TRASH_DIRECTORY/23/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../../wt test_repo 23/sub/sub\n+'\n+\n+test_expect_success '#23: GIT_DIR, GIT_WORK_TREE=wt(rel) in subdir' '\n+\tcat >23/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/23/.git\n+setup: worktree: $TRASH_DIRECTORY/23/wt\n+setup: cwd: $TRASH_DIRECTORY/23/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/23/.git\" GIT_WORK_TREE=../../wt test_repo 23/sub/sub\n+'\n+\n+test_expect_success '#23: GIT_DIR, GIT_WORK_TREE=wt in subdir' '\n+\tcat >23/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/23/.git\n+setup: worktree: $TRASH_DIRECTORY/23/wt\n+setup: cwd: $TRASH_DIRECTORY/23/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/23/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/23/wt\" test_repo 23/sub/sub\n+'\n+\n+test_expect_success '#23: GIT_DIR(rel), GIT_WORK_TREE=.. at root' '\n+\tcat >23/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/23/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 23/\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 23\n+'\n+\n+test_expect_success '#23: GIT_DIR(rel), GIT_WORK_TREE=..(rel) at root' '\n+\tcat >23/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/23/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 23/\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=.. test_repo 23\n+'\n+\n+test_expect_success '#23: GIT_DIR, GIT_WORK_TREE=..(rel) at root' '\n+\tcat >23/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/23/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 23/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/23/.git\" GIT_WORK_TREE=.. test_repo 23\n+'\n+\n+test_expect_success '#23: GIT_DIR, GIT_WORK_TREE=.. at root' '\n+\tcat >23/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/23/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 23/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/23/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 23\n+'\n+\n+test_expect_success '#23: GIT_DIR(rel), GIT_WORK_TREE=.. in subdir' '\n+\tcat >23/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/23/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 23/sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 23/sub/sub\n+'\n+\n+test_expect_success '#23: GIT_DIR(rel), GIT_WORK_TREE=..(rel) in subdir' '\n+\tcat >23/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/23/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 23/sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../../.. test_repo 23/sub/sub\n+'\n+\n+test_expect_success '#23: GIT_DIR, GIT_WORK_TREE=..(rel) in subdir' '\n+\tcat >23/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/23/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 23/sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/23/.git\" GIT_WORK_TREE=../../../ test_repo 23/sub/sub\n+'\n+\n+test_expect_success '#23: GIT_DIR, GIT_WORK_TREE=.. in subdir' '\n+\tcat >23/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/23/.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 23/sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/23/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 23/sub/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154521","messageId":"1288190977-30875-28-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 27/34] t1510: setup case #24","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:30Z","receivedAt":"2010-10-27T14:49:30Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |   48 ++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 48 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 30743d6..2660e72 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -3675,4 +3675,52 @@ EOF\n \tGIT_DIR=\"$TRASH_DIRECTORY/23/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 23/sub/sub\n '\n \n+#\n+# case #24\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is not set\n+#  - GIT_DIR is not set\n+#  - core.worktree is not set\n+#  - .git is a file\n+#  - core.bare is set\n+#\n+# Output:\n+#\n+# #16.2 except git_dir is set according to .git file\n+\n+test_expect_success '#24: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 24 24/sub &&\n+\tcd 24 &&\n+\tgit init &&\n+\tgit config core.bare true &&\n+\tmv .git ../24.git &&\n+\techo gitdir: ../24.git >.git &&\n+\tcd ..\n+'\n+\n+test_expect_success '#24: at root' '\n+\tcat >24/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/24.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/24\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 24\n+'\n+\n+test_expect_success '#24: in subdir' '\n+\tcat >24/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/24.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/24/sub\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 24/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154522","messageId":"1288190977-30875-29-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 28/34] t1510: setup case #25","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:31Z","receivedAt":"2010-10-27T14:49:31Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |   49 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 49 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 2660e72..e53ff90 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -3723,4 +3723,53 @@ EOF\n \ttest_repo 24/sub\n '\n \n+#\n+# case #25\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is set\n+#  - GIT_DIR is not set\n+#  - core.worktree is not set\n+#  - .git is a file\n+#  - core.bare is set\n+#\n+# Output:\n+#\n+# #17.2 except git_dir is set according to .git file\n+\n+test_expect_success '#25: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 25 25/sub &&\n+\tcd 25 &&\n+\tgit init &&\n+\tgit config core.bare true &&\n+\texport GIT_WORK_TREE=non-existent &&\n+\tmv .git ../25.git &&\n+\techo gitdir: ../25.git >.git &&\n+\tcd ..\n+'\n+\n+test_expect_failure '#25: at root' '\n+\tcat >25/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/25.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/25\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 25\n+'\n+\n+test_expect_failure '#25: in subdir' '\n+\tcat >25/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/25.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/25/sub\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 25/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154523","messageId":"1288190977-30875-30-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 29/34] t1510: setup case #26","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:32Z","receivedAt":"2010-10-27T14:49:32Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |   68 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 68 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex e53ff90..b1efec5 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -3772,4 +3772,72 @@ EOF\n \ttest_repo 25/sub\n '\n \n+#\n+# case #26\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is not set\n+#  - GIT_DIR is set\n+#  - core.worktree is not set\n+#  - .git is a file\n+#  - core.bare is set\n+#\n+# Output:\n+#\n+# #18 except git_dir is set according to .git file\n+\n+test_expect_success '#26: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 26 26/sub &&\n+\tcd 26 &&\n+\tgit init &&\n+\tgit config core.bare true &&\n+\tmv .git ../26.git &&\n+\techo gitdir: ../26.git >.git &&\n+\tcd ..\n+'\n+\n+test_expect_failure '#26: (rel) at root' '\n+\tcat >26/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/26.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/26\n+setup: prefix: (null)\n+EOF\n+\t GIT_DIR=.git test_repo 26\n+'\n+\n+test_expect_failure '#26: at root' '\n+\tcat >26/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/26.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/26\n+setup: prefix: (null)\n+EOF\n+\t GIT_DIR=\"$TRASH_DIRECTORY/26/.git\" test_repo 26\n+'\n+\n+test_expect_failure '#26: (rel) in subdir' '\n+\tcat >26/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/26.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/26/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../.git test_repo 26/sub\n+'\n+\n+test_expect_failure '#26: in subdir' '\n+\tcat >26/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/26.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/26/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/26/.git\" test_repo 26/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154528","messageId":"1288190977-30875-31-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 30/34] t1510: setup case #27","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:33Z","receivedAt":"2010-10-27T14:49:33Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |  268 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 268 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex b1efec5..b0ba763 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -3840,4 +3840,272 @@ EOF\n \tGIT_DIR=\"$TRASH_DIRECTORY/26/.git\" test_repo 26/sub\n '\n \n+#\n+# case #27\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is set\n+#  - GIT_DIR is set\n+#  - .git is a file\n+#  - core.worktree is not set\n+#  - core.bare is set\n+#\n+# Output:\n+#\n+# #19 except git_dir is set according to .git file\n+\n+test_expect_success '#27: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 27 27/sub 27/sub/sub 27.wt 27.wt/sub 27/wt 27/wt/sub &&\n+\tcd 27 &&\n+\tgit init &&\n+\tgit config core.bare true &&\n+\tmv .git ../27.git &&\n+\techo gitdir: ../27.git >.git &&\n+\tcd ..\n+'\n+\n+test_expect_failure '#27: GIT_DIR(rel), GIT_WORK_TREE=root at root' '\n+\tcat >27/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY/27\n+setup: cwd: $TRASH_DIRECTORY/27\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/27\" test_repo 27\n+'\n+\n+test_expect_failure '#27: GIT_DIR(rel), GIT_WORK_TREE=root(rel) at root' '\n+\tcat >27/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY/27\n+setup: cwd: $TRASH_DIRECTORY/27\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=. test_repo 27\n+'\n+\n+test_expect_failure '#27: GIT_DIR, GIT_WORK_TREE=root at root' '\n+\tcat >27/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY/27\n+setup: cwd: $TRASH_DIRECTORY/27\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/27/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/27\" test_repo 27\n+'\n+\n+test_expect_failure '#27: GIT_DIR, GIT_WORK_TREE=root(rel) at root' '\n+\tcat >27/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY/27\n+setup: cwd: $TRASH_DIRECTORY/27\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/27/.git\" GIT_WORK_TREE=. test_repo 27\n+'\n+\n+test_expect_failure '#27: GIT_DIR(rel), GIT_WORKTREE=root in subdir' '\n+\tcat >27/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY/27\n+setup: cwd: $TRASH_DIRECTORY/27\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/27\" test_repo 27/sub/sub\n+'\n+\n+test_expect_failure '#27: GIT_DIR(rel), GIT_WORKTREE=root(rel) in subdir' '\n+\tcat >27/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY/27\n+setup: cwd: $TRASH_DIRECTORY/27\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../.. test_repo 27/sub/sub\n+'\n+\n+test_expect_failure '#27: GIT_DIR, GIT_WORKTREE=root in subdir' '\n+\tcat >27/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY/27\n+setup: cwd: $TRASH_DIRECTORY/27\n+setup: prefix: sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/27/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/27\" test_repo 27/sub\n+'\n+\n+test_expect_failure '#27: GIT_DIR, GIT_WORKTREE=root(rel) in subdir' '\n+\tcat >27/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY/27\n+setup: cwd: $TRASH_DIRECTORY/27\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/27/.git\" GIT_WORK_TREE=../.. test_repo 27/sub/sub\n+'\n+\n+test_expect_failure '#27: GIT_DIR(rel), GIT_WORK_TREE=wt at root' '\n+\tcat >27/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY/27/wt\n+setup: cwd: $TRASH_DIRECTORY/27\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/27/wt\" test_repo 27\n+'\n+\n+test_expect_failure '#27: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) at root' '\n+\tcat >27/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY/27/wt\n+setup: cwd: $TRASH_DIRECTORY/27\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=wt test_repo 27\n+'\n+\n+test_expect_failure '#27: GIT_DIR, GIT_WORK_TREE=wt(rel) at root' '\n+\tcat >27/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY/27/wt\n+setup: cwd: $TRASH_DIRECTORY/27\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/27/.git\" GIT_WORK_TREE=wt test_repo 27\n+'\n+\n+test_expect_failure '#27: GIT_DIR, GIT_WORK_TREE=wt at root' '\n+\tcat >27/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY/27/wt\n+setup: cwd: $TRASH_DIRECTORY/27\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/27/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/27/wt\" test_repo 27\n+'\n+\n+test_expect_failure '#27: GIT_DIR(rel), GIT_WORK_TREE=wt in subdir' '\n+\tcat >27/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY/27/wt\n+setup: cwd: $TRASH_DIRECTORY/27/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/27/wt\" test_repo 27/sub/sub\n+'\n+\n+test_expect_failure '#27: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) in subdir' '\n+\tcat >27/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY/27/wt\n+setup: cwd: $TRASH_DIRECTORY/27/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../../wt test_repo 27/sub/sub\n+'\n+\n+test_expect_failure '#27: GIT_DIR, GIT_WORK_TREE=wt(rel) in subdir' '\n+\tcat >27/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY/27/wt\n+setup: cwd: $TRASH_DIRECTORY/27/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/27/.git\" GIT_WORK_TREE=../../wt test_repo 27/sub/sub\n+'\n+\n+test_expect_failure '#27: GIT_DIR, GIT_WORK_TREE=wt in subdir' '\n+\tcat >27/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY/27/wt\n+setup: cwd: $TRASH_DIRECTORY/27/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/27/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/27/wt\" test_repo 27/sub/sub\n+'\n+\n+test_expect_failure '#27: GIT_DIR(rel), GIT_WORK_TREE=.. at root' '\n+\tcat >27/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 27/\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 27\n+'\n+\n+test_expect_failure '#27: GIT_DIR(rel), GIT_WORK_TREE=..(rel) at root' '\n+\tcat >27/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 27/\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=.. test_repo 27\n+'\n+\n+test_expect_failure '#27: GIT_DIR, GIT_WORK_TREE=..(rel) at root' '\n+\tcat >27/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 27/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/27/.git\" GIT_WORK_TREE=.. test_repo 27\n+'\n+\n+test_expect_failure '#27: GIT_DIR, GIT_WORK_TREE=.. at root' '\n+\tcat >27/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 27/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/27/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 27\n+'\n+\n+test_expect_failure '#27: GIT_DIR(rel), GIT_WORK_TREE=.. in subdir' '\n+\tcat >27/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 27/sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 27/sub/sub\n+'\n+\n+test_expect_failure '#27: GIT_DIR(rel), GIT_WORK_TREE=..(rel) in subdir' '\n+\tcat >27/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 27/sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../../.. test_repo 27/sub/sub\n+'\n+\n+test_expect_failure '#27: GIT_DIR, GIT_WORK_TREE=..(rel) in subdir' '\n+\tcat >27/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 27/sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/27/.git\" GIT_WORK_TREE=../../../ test_repo 27/sub/sub\n+'\n+\n+test_expect_failure '#27: GIT_DIR, GIT_WORK_TREE=.. in subdir' '\n+\tcat >27/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/27.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 27/sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/27/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 27/sub/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154525","messageId":"1288190977-30875-32-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 31/34] t1510: setup case #28","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:34Z","receivedAt":"2010-10-27T14:49:34Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |   49 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 49 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex b0ba763..9221cd3 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -4108,4 +4108,53 @@ EOF\n \tGIT_DIR=\"$TRASH_DIRECTORY/27/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 27/sub/sub\n '\n \n+#\n+# case #28\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is not set\n+#  - GIT_DIR is not set\n+#  - core.worktree is set\n+#  - .git is a file\n+#  - core.bare is set\n+#\n+# Output:\n+#\n+# core.worktree is ignored -> #24\n+\n+test_expect_success '#28: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 28 28/sub &&\n+\tcd 28 &&\n+\tgit init &&\n+\tgit config core.bare true &&\n+\tgit config core.worktree non-existent &&\n+\tmv .git ../28.git &&\n+\techo gitdir: ../28.git >.git &&\n+\tcd ..\n+'\n+\n+test_expect_success '#28: at root' '\n+\tcat >28/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/28.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/28\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 28\n+'\n+\n+test_expect_success '#28: in subdir' '\n+\tcat >28/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/28.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/28/sub\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 28/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154527","messageId":"1288190977-30875-33-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 32/34] t1510: setup case #29","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:35Z","receivedAt":"2010-10-27T14:49:35Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |   49 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 49 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 9221cd3..201761f 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -4157,4 +4157,53 @@ EOF\n \ttest_repo 28/sub\n '\n \n+#\n+# case #29\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is set\n+#  - GIT_DIR is not set\n+#  - core.worktree is set\n+#  - .git is a file\n+#  - core.bare is set\n+#\n+# Output:\n+#\n+# GIT_WORK_TREE/core.worktree are ignored -> #28\n+\n+test_expect_success '#29: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 29 29/sub &&\n+\tcd 29 &&\n+\tgit init &&\n+\tgit config core.bare true &&\n+\texport GIT_WORK_TREE=non-existent &&\n+\tmv .git ../29.git &&\n+\techo gitdir: ../29.git >.git &&\n+\tcd ..\n+'\n+\n+test_expect_failure '#29: at root' '\n+\tcat >29/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/29.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/29\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 29\n+'\n+\n+test_expect_failure '#29: in subdir' '\n+\tcat >29/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/29.git\n+setup: worktree: (null)\n+setup: cwd: $TRASH_DIRECTORY/29/sub\n+setup: prefix: (null)\n+EOF\n+\ttest_repo 29/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154526","messageId":"1288190977-30875-34-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 33/34] t1510: setup case #30","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:36Z","receivedAt":"2010-10-27T14:49:36Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |   37 +++++++++++++++++++++++++++++++++++++\n 1 files changed, 37 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 201761f..b095e24 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -4206,4 +4206,41 @@ EOF\n \ttest_repo 29/sub\n '\n \n+#\n+# case #30\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is not set\n+#  - GIT_DIR is set\n+#  - core.worktree is set\n+#  - .git is a file\n+#  - core.bare is set\n+#\n+# Output:\n+#\n+# core.worktree and core.bare conflict, won't fly.\n+\n+test_expect_success '#30: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 30 &&\n+\tcd 30 &&\n+\tgit init &&\n+\tgit config core.bare true &&\n+\tgit config core.worktree non-existent &&\n+\tmv .git ../30.git &&\n+\techo gitdir: ../30.git >.git &&\n+\tcd ..\n+'\n+\n+test_expect_failure '#30: at root' '\n+\t(\n+\tcd 30 &&\n+\tGIT_DIR=.git test_must_fail git symbolic-ref HEAD 2>result &&\n+\tgrep \"core.bare and core.worktree do not make sense\" result\n+\t)\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154524","messageId":"1288190977-30875-35-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 34/34] t1510: setup case #31","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:49:37Z","receivedAt":"2010-10-27T14:49:37Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t1510-repo-setup.sh |  269 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 269 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex b095e24..9d24a0f 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -4243,4 +4243,273 @@ test_expect_failure '#30: at root' '\n \t)\n '\n \n+#\n+# case #31\n+#\n+############################################################\n+#\n+# Input:\n+#\n+#  - GIT_WORK_TREE is set\n+#  - GIT_DIR is set\n+#  - core.worktree is set\n+#  - .git is a file\n+#  - core.bare is set\n+#\n+# Output:\n+#\n+# #23 except git_dir is set according to .git file\n+\n+test_expect_success '#31: setup' '\n+\tunset GIT_DIR GIT_WORK_TREE &&\n+\tmkdir 31 31/sub 31/sub/sub 31.wt 31.wt/sub 31/wt 31/wt/sub &&\n+\tcd 31 &&\n+\tgit init &&\n+\tgit config core.bare true &&\n+\tgit config core.worktree non-existent &&\n+\tmv .git ../31.git &&\n+\techo gitdir: ../31.git >.git &&\n+\tcd ..\n+'\n+\n+test_expect_failure '#31: GIT_DIR(rel), GIT_WORK_TREE=root at root' '\n+\tcat >31/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY/31\n+setup: cwd: $TRASH_DIRECTORY/31\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/31\" test_repo 31\n+'\n+\n+test_expect_failure '#31: GIT_DIR(rel), GIT_WORK_TREE=root(rel) at root' '\n+\tcat >31/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY/31\n+setup: cwd: $TRASH_DIRECTORY/31\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=. test_repo 31\n+'\n+\n+test_expect_failure '#31: GIT_DIR, GIT_WORK_TREE=root at root' '\n+\tcat >31/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY/31\n+setup: cwd: $TRASH_DIRECTORY/31\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/31/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/31\" test_repo 31\n+'\n+\n+test_expect_failure '#31: GIT_DIR, GIT_WORK_TREE=root(rel) at root' '\n+\tcat >31/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY/31\n+setup: cwd: $TRASH_DIRECTORY/31\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/31/.git\" GIT_WORK_TREE=. test_repo 31\n+'\n+\n+test_expect_failure '#31: GIT_DIR(rel), GIT_WORKTREE=root in subdir' '\n+\tcat >31/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY/31\n+setup: cwd: $TRASH_DIRECTORY/31\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/31\" test_repo 31/sub/sub\n+'\n+\n+test_expect_failure '#31: GIT_DIR(rel), GIT_WORKTREE=root(rel) in subdir' '\n+\tcat >31/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY/31\n+setup: cwd: $TRASH_DIRECTORY/31\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../.. test_repo 31/sub/sub\n+'\n+\n+test_expect_failure '#31: GIT_DIR, GIT_WORKTREE=root in subdir' '\n+\tcat >31/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY/31\n+setup: cwd: $TRASH_DIRECTORY/31\n+setup: prefix: sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/31/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/31\" test_repo 31/sub\n+'\n+\n+test_expect_failure '#31: GIT_DIR, GIT_WORKTREE=root(rel) in subdir' '\n+\tcat >31/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY/31\n+setup: cwd: $TRASH_DIRECTORY/31\n+setup: prefix: sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/31/.git\" GIT_WORK_TREE=../.. test_repo 31/sub/sub\n+'\n+\n+test_expect_failure '#31: GIT_DIR(rel), GIT_WORK_TREE=wt at root' '\n+\tcat >31/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY/31/wt\n+setup: cwd: $TRASH_DIRECTORY/31\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/31/wt\" test_repo 31\n+'\n+\n+test_expect_failure '#31: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) at root' '\n+\tcat >31/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY/31/wt\n+setup: cwd: $TRASH_DIRECTORY/31\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=wt test_repo 31\n+'\n+\n+test_expect_failure '#31: GIT_DIR, GIT_WORK_TREE=wt(rel) at root' '\n+\tcat >31/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY/31/wt\n+setup: cwd: $TRASH_DIRECTORY/31\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/31/.git\" GIT_WORK_TREE=wt test_repo 31\n+'\n+\n+test_expect_failure '#31: GIT_DIR, GIT_WORK_TREE=wt at root' '\n+\tcat >31/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY/31/wt\n+setup: cwd: $TRASH_DIRECTORY/31\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/31/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/31/wt\" test_repo 31\n+'\n+\n+test_expect_failure '#31: GIT_DIR(rel), GIT_WORK_TREE=wt in subdir' '\n+\tcat >31/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY/31/wt\n+setup: cwd: $TRASH_DIRECTORY/31/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY/31/wt\" test_repo 31/sub/sub\n+'\n+\n+test_expect_failure '#31: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) in subdir' '\n+\tcat >31/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY/31/wt\n+setup: cwd: $TRASH_DIRECTORY/31/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../../wt test_repo 31/sub/sub\n+'\n+\n+test_expect_failure '#31: GIT_DIR, GIT_WORK_TREE=wt(rel) in subdir' '\n+\tcat >31/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY/31/wt\n+setup: cwd: $TRASH_DIRECTORY/31/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/31/.git\" GIT_WORK_TREE=../../wt test_repo 31/sub/sub\n+'\n+\n+test_expect_failure '#31: GIT_DIR, GIT_WORK_TREE=wt in subdir' '\n+\tcat >31/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY/31/wt\n+setup: cwd: $TRASH_DIRECTORY/31/sub/sub\n+setup: prefix: (null)\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/31/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY/31/wt\" test_repo 31/sub/sub\n+'\n+\n+test_expect_failure '#31: GIT_DIR(rel), GIT_WORK_TREE=.. at root' '\n+\tcat >31/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 31/\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 31\n+'\n+\n+test_expect_failure '#31: GIT_DIR(rel), GIT_WORK_TREE=..(rel) at root' '\n+\tcat >31/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 31/\n+EOF\n+\tGIT_DIR=.git GIT_WORK_TREE=.. test_repo 31\n+'\n+\n+test_expect_failure '#31: GIT_DIR, GIT_WORK_TREE=..(rel) at root' '\n+\tcat >31/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 31/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/31/.git\" GIT_WORK_TREE=.. test_repo 31\n+'\n+\n+test_expect_failure '#31: GIT_DIR, GIT_WORK_TREE=.. at root' '\n+\tcat >31/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 31/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/31/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 31\n+'\n+\n+test_expect_failure '#31: GIT_DIR(rel), GIT_WORK_TREE=.. in subdir' '\n+\tcat >31/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 31/sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 31/sub/sub\n+'\n+\n+test_expect_failure '#31: GIT_DIR(rel), GIT_WORK_TREE=..(rel) in subdir' '\n+\tcat >31/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 31/sub/sub/\n+EOF\n+\tGIT_DIR=../../.git GIT_WORK_TREE=../../.. test_repo 31/sub/sub\n+'\n+\n+test_expect_failure '#31: GIT_DIR, GIT_WORK_TREE=..(rel) in subdir' '\n+\tcat >31/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 31/sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/31/.git\" GIT_WORK_TREE=../../../ test_repo 31/sub/sub\n+'\n+\n+test_expect_failure '#31: GIT_DIR, GIT_WORK_TREE=.. in subdir' '\n+\tcat >31/sub/sub/expected <<EOF &&\n+setup: git_dir: $TRASH_DIRECTORY/31.git\n+setup: worktree: $TRASH_DIRECTORY\n+setup: cwd: $TRASH_DIRECTORY\n+setup: prefix: 31/sub/sub/\n+EOF\n+\tGIT_DIR=\"$TRASH_DIRECTORY/31/.git\" GIT_WORK_TREE=\"$TRASH_DIRECTORY\" test_repo 31/sub/sub\n+'\n+\n test_done\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154530","messageId":"1288191496-31176-1-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 1/7] setup: support setting GIT_DIR=.git file","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:58:10Z","receivedAt":"2010-10-27T14:58:10Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"---\n setup.c |   10 +++++++---\n 1 files changed, 7 insertions(+), 3 deletions(-)\n\ndiff --git a/setup.c b/setup.c\nindex a3b76de..2e7387d 100644\n--- a/setup.c\n+++ b/setup.c\n@@ -317,17 +317,20 @@ static const char *setup_explicit_git_dir(const char *gitdirenv,\n \t\t\t\tconst char *work_tree_env, int *nongit_ok)\n {\n \tstatic char buffer[1024 + 1];\n-\tconst char *retval;\n+\tconst char *retval, *gitfile;\n \n \tif (PATH_MAX - 40 < strlen(gitdirenv))\n \t\tdie(\"'$%s' too big\", GIT_DIR_ENVIRONMENT);\n-\tif (!is_git_directory(gitdirenv)) {\n+\tgitfile = read_gitfile_gently(gitdirenv);\n+\tif (!gitfile && !is_git_directory(gitdirenv)) {\n \t\tif (nongit_ok) {\n \t\t\t*nongit_ok = 1;\n \t\t\treturn NULL;\n \t\t}\n \t\tdie(\"Not a git repository: '%s'\", gitdirenv);\n \t}\n+\tif (gitfile)\n+\t\tset_git_dir(gitfile);\n \tif (!work_tree_env) {\n \t\tretval = set_work_tree(gitdirenv);\n \t\t/* config may override worktree */\n@@ -341,7 +344,8 @@ static const char *setup_explicit_git_dir(const char *gitdirenv,\n \t\t\tget_git_work_tree());\n \tif (!retval || !*retval)\n \t\treturn NULL;\n-\tset_git_dir(make_absolute_path(gitdirenv));\n+\tif (!gitfile)\n+\t\tset_git_dir(make_absolute_path(gitdirenv));\n \tif (chdir(work_tree_env) < 0)\n \t\tdie_errno (\"Could not chdir to '%s'\", work_tree_env);\n \tstrcat(buffer, \"/\");\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154531","messageId":"1288191496-31176-2-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 2/7] unset: discard GIT_WORK_TREE if GIT_DIR is not set","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:58:11Z","receivedAt":"2010-10-27T14:58:11Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"GIT_WORK_TREE can only be used together with GIT_DIR. Unfortunately\nget_git_work_tree() checks that env variable unconditionally. As a\nwork around, discard the variable.\n---\n setup.c |   23 +++++++++++------------\n 1 files changed, 11 insertions(+), 12 deletions(-)\n\ndiff --git a/setup.c b/setup.c\nindex 2e7387d..992a944 100644\n--- a/setup.c\n+++ b/setup.c\n@@ -364,14 +364,12 @@ static int cwd_contains_git_dir(const char **gitfile_dirp)\n \treturn is_git_directory(DEFAULT_GIT_DIR_ENVIRONMENT);\n }\n \n-static const char *setup_discovered_git_dir(const char *work_tree_env,\n-\t\tint offset, int len, char *cwd, int *nongit_ok)\n+static const char *setup_discovered_git_dir(int offset, int len, char *cwd, int *nongit_ok)\n {\n \tint root_len;\n \n \tinside_git_dir = 0;\n-\tif (!work_tree_env)\n-\t\tinside_work_tree = 1;\n+\tinside_work_tree = 1;\n \troot_len = offset_1st_component(cwd);\n \tgit_work_tree_cfg = xstrndup(cwd, offset > root_len ? offset : root_len);\n \tif (check_repository_format_gently(nongit_ok))\n@@ -386,14 +384,12 @@ static const char *setup_discovered_git_dir(const char *work_tree_env,\n \treturn cwd + offset;\n }\n \n-static const char *setup_bare_git_dir(const char *work_tree_env,\n-\t\tint offset, int len, char *cwd, int *nongit_ok)\n+static const char *setup_bare_git_dir(int offset, int len, char *cwd, int *nongit_ok)\n {\n \tint root_len;\n \n \tinside_git_dir = 1;\n-\tif (!work_tree_env)\n-\t\tinside_work_tree = 0;\n+\tinside_work_tree = 0;\n \tif (offset != len) {\n \t\tif (chdir(cwd))\n \t\t\tdie_errno(\"Cannot come back to cwd\");\n@@ -457,6 +453,11 @@ static const char *setup_git_directory_gently_1(int *nongit_ok)\n \tgitdirenv = getenv(GIT_DIR_ENVIRONMENT);\n \tif (gitdirenv)\n \t\treturn setup_explicit_git_dir(gitdirenv, work_tree_env, nongit_ok);\n+\telse {\n+\t\t/* prevent get_git_work_tree() from using it because GIT_DIR is not set */\n+\t\tif (work_tree_env)\n+\t\t\tunsetenv(GIT_WORK_TREE_ENVIRONMENT);\n+\t}\n \n \tif (!getcwd(cwd, sizeof(cwd)-1))\n \t\tdie_errno(\"Unable to read current working directory\");\n@@ -482,11 +483,9 @@ static const char *setup_git_directory_gently_1(int *nongit_ok)\n \t\tcurrent_device = get_device_or_die(\".\", NULL);\n \tfor (;;) {\n \t\tif (cwd_contains_git_dir(&gitfile_dir))\n-\t\t\treturn setup_discovered_git_dir(work_tree_env, offset,\n-\t\t\t\t\t\t\tlen, cwd, nongit_ok);\n+\t\t\treturn setup_discovered_git_dir(offset, len, cwd, nongit_ok);\n \t\tif (is_git_directory(\".\"))\n-\t\t\treturn setup_bare_git_dir(work_tree_env, offset,\n-\t\t\t\t\t\t\tlen, cwd, nongit_ok);\n+\t\t\treturn setup_bare_git_dir(offset, len, cwd, nongit_ok);\n \t\twhile (--offset > ceil_offset && cwd[offset] != '/');\n \t\tif (offset <= ceil_offset)\n \t\t\treturn setup_nongit(cwd, nongit_ok);\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154533","messageId":"1288191496-31176-3-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 3/7] setup: do not allow core.{bare,worktree} set at the same time","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:58:12Z","receivedAt":"2010-10-27T14:58:12Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"---\n setup.c |   17 ++++++++++++++++-\n 1 files changed, 16 insertions(+), 1 deletions(-)\n\ndiff --git a/setup.c b/setup.c\nindex 992a944..bbb430a 100644\n--- a/setup.c\n+++ b/setup.c\n@@ -4,6 +4,8 @@\n static int inside_git_dir = -1;\n static int inside_work_tree = -1;\n \n+static int has_core_worktree, has_core_bare;\n+\n const char *prefix_path(const char *prefix, int len, const char *path)\n {\n \tconst char *orig = path;\n@@ -245,6 +247,7 @@ void setup_work_tree(void)\n \n static int check_repository_format_gently(int *nongit_ok)\n {\n+\thas_core_worktree = has_core_bare = 0;\n \tgit_config(check_repository_format_version, NULL);\n \tif (GIT_REPO_VERSION < repository_format_version) {\n \t\tif (!nongit_ok)\n@@ -256,6 +259,12 @@ static int check_repository_format_gently(int *nongit_ok)\n \t\t*nongit_ok = -1;\n \t\treturn -1;\n \t}\n+\tif (has_core_worktree && has_core_bare) {\n+\t\tif (!nongit_ok)\n+\t\t\tdie(\"core.bare and core.worktree do not make sense\");\n+\t\t*nongit_ok = -1;\n+\t\treturn -1;\n+\t}\n \treturn 0;\n }\n \n@@ -579,14 +588,20 @@ int check_repository_format_version(const char *var, const char *value, void *cb\n \t\tshared_repository = git_config_perm(var, value);\n \telse if (strcmp(var, \"core.bare\") == 0) {\n \t\tis_bare_repository_cfg = git_config_bool(var, value);\n-\t\tif (is_bare_repository_cfg == 1)\n+\t\tif (is_bare_repository_cfg == 1) {\n \t\t\tinside_work_tree = -1;\n+\t\t\thas_core_bare = 1;\n+\t\t}\n \t} else if (strcmp(var, \"core.worktree\") == 0) {\n \t\tif (!value)\n \t\t\treturn config_error_nonbool(var);\n \t\tfree(git_work_tree_cfg);\n \t\tgit_work_tree_cfg = xstrdup(value);\n \t\tinside_work_tree = -1;\n+\n+\t\t/* GIT_WORK_TREE overrides core.worktree */\n+\t\tif (!getenv(GIT_WORK_TREE_ENVIRONMENT))\n+\t\t\thas_core_worktree = 1;\n \t}\n \treturn 0;\n }\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154532","messageId":"1288191496-31176-4-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 4/7] setup: skip core.worktree if GIT_DIR is not set","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:58:13Z","receivedAt":"2010-10-27T14:58:13Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"---\n setup.c |   10 +++++++---\n 1 files changed, 7 insertions(+), 3 deletions(-)\n\ndiff --git a/setup.c b/setup.c\nindex bbb430a..e8273c3 100644\n--- a/setup.c\n+++ b/setup.c\n@@ -4,7 +4,7 @@\n static int inside_git_dir = -1;\n static int inside_work_tree = -1;\n \n-static int has_core_worktree, has_core_bare;\n+static int has_core_worktree, has_core_bare, has_git_dir_env;\n \n const char *prefix_path(const char *prefix, int len, const char *path)\n {\n@@ -460,8 +460,10 @@ static const char *setup_git_directory_gently_1(int *nongit_ok)\n \t * validation.\n \t */\n \tgitdirenv = getenv(GIT_DIR_ENVIRONMENT);\n-\tif (gitdirenv)\n-\t\treturn setup_explicit_git_dir(gitdirenv, work_tree_env, nongit_ok);\n+\tif (gitdirenv) {\n+\t\thas_git_dir_env = 1;\n+\t\treturn setup_explicit_git_dir(gitdirenv, work_tree_env, nongit_o, nongit_ok);\n+\t}\n \telse {\n \t\t/* prevent get_git_work_tree() from using it because GIT_DIR is not set */\n \t\tif (work_tree_env)\n@@ -593,6 +595,8 @@ int check_repository_format_version(const char *var, const char *value, void *cb\n \t\t\thas_core_bare = 1;\n \t\t}\n \t} else if (strcmp(var, \"core.worktree\") == 0) {\n+\t\tif (!has_git_dir_env) /* only valid when GIT_DIR is set */\n+\t\t\treturn 0;\n \t\tif (!value)\n \t\t\treturn config_error_nonbool(var);\n \t\tfree(git_work_tree_cfg);\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154534","messageId":"1288191496-31176-5-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 5/7] setup: rework core.worktree","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:58:14Z","receivedAt":"2010-10-27T14:58:14Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"Now that core.worktree can only be effective inside\nsetup_explicit_git_dir, move the code up from setup_git_directory().\n---\n setup.c |   48 +++++++++++++++++-------------------------------\n 1 files changed, 17 insertions(+), 31 deletions(-)\n\ndiff --git a/setup.c b/setup.c\nindex e8273c3..1a4765d 100644\n--- a/setup.c\n+++ b/setup.c\n@@ -323,7 +323,9 @@ const char *read_gitfile_gently(const char *path)\n }\n \n static const char *setup_explicit_git_dir(const char *gitdirenv,\n-\t\t\t\tconst char *work_tree_env, int *nongit_ok)\n+\t\t\t\t\t  const char *work_tree_env,\n+\t\t\t\t\t  char *cwd, int len,\n+\t\t\t\t\t  int *nongit_ok)\n {\n \tstatic char buffer[1024 + 1];\n \tconst char *retval, *gitfile;\n@@ -340,23 +342,21 @@ static const char *setup_explicit_git_dir(const char *gitdirenv,\n \t}\n \tif (gitfile)\n \t\tset_git_dir(gitfile);\n-\tif (!work_tree_env) {\n-\t\tretval = set_work_tree(gitdirenv);\n-\t\t/* config may override worktree */\n-\t\tif (check_repository_format_gently(nongit_ok))\n-\t\t\treturn NULL;\n-\t\treturn retval;\n-\t}\n+\tif (!work_tree_env)\n+\t\tset_work_tree(gitdirenv);\n+\n+\t/* config may override worktree */\n \tif (check_repository_format_gently(nongit_ok))\n \t\treturn NULL;\n+\n \tretval = get_relative_cwd(buffer, sizeof(buffer) - 1,\n-\t\t\tget_git_work_tree());\n+\t\t\t\t  get_git_work_tree());\n \tif (!retval || !*retval)\n \t\treturn NULL;\n \tif (!gitfile)\n \t\tset_git_dir(make_absolute_path(gitdirenv));\n-\tif (chdir(work_tree_env) < 0)\n-\t\tdie_errno (\"Could not chdir to '%s'\", work_tree_env);\n+\tif (chdir(get_git_work_tree()) < 0)\n+\t\tdie_errno (\"Could not chdir to '%s'\", get_git_work_tree());\n \tstrcat(buffer, \"/\");\n \treturn retval;\n }\n@@ -454,6 +454,10 @@ static const char *setup_git_directory_gently_1(int *nongit_ok)\n \tif (nongit_ok)\n \t\t*nongit_ok = 0;\n \n+\tif (!getcwd(cwd, sizeof(cwd)-1))\n+\t\tdie_errno(\"Unable to read current working directory\");\n+\toffset = len = strlen(cwd);\n+\n \t/*\n \t * If GIT_DIR is set explicitly, we're not going\n \t * to do any discovery, but we still do repository\n@@ -462,7 +466,7 @@ static const char *setup_git_directory_gently_1(int *nongit_ok)\n \tgitdirenv = getenv(GIT_DIR_ENVIRONMENT);\n \tif (gitdirenv) {\n \t\thas_git_dir_env = 1;\n-\t\treturn setup_explicit_git_dir(gitdirenv, work_tree_env, nongit_o, nongit_ok);\n+\t\treturn setup_explicit_git_dir(gitdirenv, work_tree_env, cwd, len, nongit_ok);\n \t}\n \telse {\n \t\t/* prevent get_git_work_tree() from using it because GIT_DIR is not set */\n@@ -470,9 +474,6 @@ static const char *setup_git_directory_gently_1(int *nongit_ok)\n \t\t\tunsetenv(GIT_WORK_TREE_ENVIRONMENT);\n \t}\n \n-\tif (!getcwd(cwd, sizeof(cwd)-1))\n-\t\tdie_errno(\"Unable to read current working directory\");\n-\n \tceil_offset = longest_ancestor_length(cwd, env_ceiling_dirs);\n \tif (ceil_offset < 0 && has_dos_drive_prefix(cwd))\n \t\tceil_offset = 1;\n@@ -488,7 +489,6 @@ static const char *setup_git_directory_gently_1(int *nongit_ok)\n \t * - ../../.git/\n \t *   etc.\n \t */\n-\toffset = len = strlen(cwd);\n \tone_filesystem = !git_env_bool(\"GIT_DISCOVERY_ACROSS_FILESYSTEM\", 0);\n \tif (one_filesystem)\n \t\tcurrent_device = get_device_or_die(\".\", NULL);\n@@ -623,19 +623,5 @@ int check_repository_format(void)\n  */\n const char *setup_git_directory(void)\n {\n-\tconst char *retval = setup_git_directory_gently(NULL);\n-\n-\t/* If the work tree is not the default one, recompute prefix */\n-\tif (inside_work_tree < 0) {\n-\t\tstatic char buffer[PATH_MAX + 1];\n-\t\tchar *rel;\n-\t\tif (retval && chdir(retval))\n-\t\t\tdie_errno (\"Could not jump back into original cwd\");\n-\t\trel = get_relative_cwd(buffer, PATH_MAX, get_git_work_tree());\n-\t\tif (rel && *rel && chdir(get_git_work_tree()))\n-\t\t\tdie_errno (\"Could not jump to working directory\");\n-\t\treturn rel && *rel ? strcat(rel, \"/\") : NULL;\n-\t}\n-\n-\treturn retval;\n+\treturn setup_git_directory_gently(NULL);\n }\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154535","messageId":"1288191496-31176-6-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 6/7] get_git_work_tree: core.worktree relative to git_dir","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:58:15Z","receivedAt":"2010-10-27T14:58:15Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"---\n environment.c |   12 ++++++++++--\n 1 files changed, 10 insertions(+), 2 deletions(-)\n\ndiff --git a/environment.c b/environment.c\nindex de5581f..d41dcfb 100644\n--- a/environment.c\n+++ b/environment.c\n@@ -153,8 +153,16 @@ const char *get_git_work_tree(void)\n \t\tif (!work_tree && is_bare_repository_cfg < 1) {\n \t\t\twork_tree = git_work_tree_cfg;\n \t\t\t/* make_absolute_path also normalizes the path */\n-\t\t\tif (work_tree && !is_absolute_path(work_tree))\n-\t\t\t\twork_tree = xstrdup(make_absolute_path(git_path(\"%s\", work_tree)));\n+\t\t\tif (work_tree && !is_absolute_path(work_tree)) {\n+\t\t\t\tchar cwd[PATH_MAX];\n+\t\t\t\tif (!getcwd(cwd, PATH_MAX))\n+\t\t\t\t\tdie(\"Could not get current working directory\");\n+\t\t\t\tif (chdir(get_git_dir()))\n+\t\t\t\t\tdie(\"Could not chdir to $GIT_DIR\");\n+\t\t\t\twork_tree = xstrdup(make_absolute_path(work_tree));\n+\t\t\t\tif (chdir(cwd))\n+\t\t\t\t\tdie(\"Could not chdir to previous working directory\");\n+\t\t\t}\n \t\t} else if (work_tree)\n \t\t\twork_tree = xstrdup(make_absolute_path(work_tree));\n \t\tgit_work_tree_initialized = 1;\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154536","messageId":"1288191496-31176-7-git-send-email-pclouds@gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 7/7] new failures","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T14:58:16Z","receivedAt":"2010-10-27T14:58:16Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"\ngit_dir changes are acceptable. The other two, hm...\n---\n t/t1510-repo-setup.sh |    8 ++++----\n 1 files changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh\nindex 9d24a0f..7dbccf4 100755\n--- a/t/t1510-repo-setup.sh\n+++ b/t/t1510-repo-setup.sh\n@@ -781,7 +781,7 @@ EOF\n \n test_expect_success '#6: GIT_DIR(rel), core.worktree=../.. at root' '\n \tcat >6/expected <<EOF &&\n-setup: git_dir: .git\n+setup: git_dir: $TRASH_DIRECTORY/6/.git\n setup: worktree: $TRASH_DIRECTORY\n setup: cwd: $TRASH_DIRECTORY\n setup: prefix: 6/\n@@ -792,7 +792,7 @@ EOF\n \n test_expect_success '#6: GIT_DIR(rel), core.worktree=../..(rel) at root' '\n \tcat >6/expected <<EOF &&\n-setup: git_dir: .git\n+setup: git_dir: $TRASH_DIRECTORY/6/.git\n setup: worktree: $TRASH_DIRECTORY\n setup: cwd: $TRASH_DIRECTORY\n setup: prefix: 6/\n@@ -3713,7 +3713,7 @@ EOF\n \ttest_repo 24\n '\n \n-test_expect_success '#24: in subdir' '\n+test_expect_failure '#24: in subdir' '\n \tcat >24/sub/expected <<EOF &&\n setup: git_dir: $TRASH_DIRECTORY/24.git\n setup: worktree: (null)\n@@ -4147,7 +4147,7 @@ EOF\n \ttest_repo 28\n '\n \n-test_expect_success '#28: in subdir' '\n+test_expect_failure '#28: in subdir' '\n \tcat >28/sub/expected <<EOF &&\n setup: git_dir: $TRASH_DIRECTORY/28.git\n setup: worktree: (null)\n-- \n1.7.0.2.445.gcbdb3\n"},{"id":"154546","messageId":"AANLkTiknZEp8EoHr6auqUQQsMj+MvLwhUYxzUD9N-6L4@mail.gmail.com","threadId":"25559","inReplyTo":"1288190977-30875-3-git-send-email-pclouds@gmail.com","subject":"Re: [PATCH 02/34] Add t1510 and basic rules that run repo setup","fromName":"Nguyen Thai Ngoc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-27T15:37:51Z","receivedAt":"2010-10-27T15:37:51Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"2010/10/27 Nguyễn Thái Ngọc Duy <pclouds@gmail.com>:\n> +# 2. .git file is relative to git_dir. .git file is basically symlink\n> +#    in disguise.\n\nThis is not completely followed in my tests. If .git is a true\nsymlink, its link is relative to .git itself. When .git is a file, it\nwould be more difficult to calculate path relative to .git (you can't\nchdir to a file). In my tests, the link is relative to .git's parent\ndirectory, not .git.\n-- \nDuy\n"},{"id":"154550","messageId":"20101027163047.GA11069@burratino","threadId":"25559","inReplyTo":"AANLkTiknZEp8EoHr6auqUQQsMj+MvLwhUYxzUD9N-6L4@mail.gmail.com","subject":"Re: [PATCH 02/34] Add t1510 and basic rules that run repo setup","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-10-27T16:30:47Z","receivedAt":"2010-10-27T16:30:47Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Nguyen Thai Ngoc Duy wrote:\n> 2010/10/27 Nguyễn Thái Ngọc Duy <pclouds@gmail.com>:\n\n>> +# 2. .git file is relative to git_dir. .git file is basically symlink\n>> +#    in disguise.\n>\n> This is not completely followed in my tests. If .git is a true\n> symlink, its link is relative to .git itself. When .git is a file, it\n> would be more difficult to calculate path relative to .git (you can't\n> chdir to a file).\n\nI'm not sure I understand:\n\n git init repo\n cd repo\n mv .git .git.real\n ln -s .git.real .git\n\nThe path \".git.real\" is relative to \"repo/\", not \"repo/.git/\", no?\n \nIn other words, I don't you think you have to worry --- the test\n\n> In my tests, the link is relative to .git's parent\n> directory, not .git.\n\nseems right.\n"},{"id":"154592","messageId":"AANLkTinZnsgQnJcZjrvx8NrWEbY+a49+ndSae7VXAc2c@mail.gmail.com","threadId":"25559","inReplyTo":"20101027163047.GA11069@burratino","subject":"Re: [PATCH 02/34] Add t1510 and basic rules that run repo setup","fromName":"Nguyen Thai Ngoc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2010-10-28T00:16:06Z","receivedAt":"2010-10-28T00:16:06Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"On Wed, Oct 27, 2010 at 11:30 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:\n> Nguyen Thai Ngoc Duy wrote:\n>> 2010/10/27 Nguyễn Thái Ngọc Duy <pclouds@gmail.com>:\n>\n>>> +# 2. .git file is relative to git_dir. .git file is basically symlink\n>>> +#    in disguise.\n>>\n>> This is not completely followed in my tests. If .git is a true\n>> symlink, its link is relative to .git itself. When .git is a file, it\n>> would be more difficult to calculate path relative to .git (you can't\n>> chdir to a file).\n>\n> I'm not sure I understand:\n>\n>  git init repo\n>  cd repo\n>  mv .git .git.real\n>  ln -s .git.real .git\n>\n> The path \".git.real\" is relative to \"repo/\", not \"repo/.git/\", no?\n\nAh, ok. I was confused after writing all those tests.\n-- \nDuy\n"}]}