git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[WIP PATCH 02/18] Add t1510 for setup tests

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
Oct 24, 2010, 12:11 UTC
Message-ID
<1287922310-14678-3-git-send-email-pclouds@gmail.com>
In-Reply-To
<1287922310-14678-1-git-send-email-pclouds@gmail.com>
---
 t/t1510-repo-setup.sh |   56 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 56 insertions(+), 0 deletions(-)
 create mode 100755 t/t1510-repo-setup.sh
diff --git a/t/t1510-repo-setup.sh b/t/t1510-repo-setup.sh
new file mode 100755
index 0000000..d618787
--- /dev/null
+++ b/t/t1510-repo-setup.sh
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+test_description='Tests of cwd/prefix/worktree/gitdir setup in all cases'
+
+. ./test-lib.sh
+
+# A few principles for repo setup:
+#
+# 1. GIT_DIR is relative to user's cwd. This directory is refered as
+#    "git_dir" below. Auto discovered repo is also "git_dir".
+#    --git-dir is equivalent to GIT_DIR.
+#
+# 2. core.worktree is relative to git_dir
+#
+# 3. GIT_WORK_TREE is relative to user's cwd. --work-tree is
+#    equivalent to GIT_WORK_TREE.
+#
+# 4. .git file is relative to git_dir. Note that the repo where .git
+#    file points to is not considered "git_dir" in the above.
+#
+# 5. GIT_WORK_TREE is only effective if GIT_DIR is
+#    set (hence "Effective GIT_WORK_TREE"
+#    below). Uneffective GIT_WORK_TREE should be warned.
+#
+# 6. Effective GIT_WORK_TREE will override core.worktree
+#
+# 7. During repo discovery, if "." is found a repo, it is considered a
+#    bare repo unless core.worktree is set
+#
+# 8. core.bare conflicts with core.worktree
+#
+# 9. Effective GIT_WORK_TREE will override core.bare
+#
+# 10. When user's cwd is outside worktree, cwd will remain unchanged,
+#     prefix be NULL.
+
+test_repo() {
+	(
+	if [ -n "$1" ]; then cd "$1"; fi &&
+	git symbolic-ref HEAD >/dev/null && # git_dir reachability test first
+	git rev-parse --internal-git-dir >result &&
+	git rev-parse --show-toplevel >>result &&
+	git rev-parse --internal-cwd >>result &&
+	git rev-parse --show-prefix >>result &&
+	test_cmp expected result
+	)
+}
+
+# Bit 0 = GIT_WORK_TREE
+# Bit 1 = GIT_DIR
+# Bit 2 = core.worktree
+# Bit 3 = .git is a file
+# Bit 4 = bare repo
+# Case# = encoding of the above 5 bits
+
+test_done
-- 
1.7.0.2.445.gcbdb3
Previous: Nguyen Thai Ngoc DuyNext: Nguyễn Thái Ngọc Duy
Message 7 of 23 in “setup tests”
  1. 00/18 setup testsNguyễn Thái Ngọc Duy, Oct 24, 2010
  2. 01/18 rev-parse: add --internal-cwd and --internal-git-dir for testsNguyễn Thái Ngọc Duy, Oct 24, 2010
  3. Jonathan NiederOct 24, 2010
  4. Nguyen Thai Ngoc DuyOct 25, 2010
  5. Jakub NarebskiOct 25, 2010
  6. Nguyen Thai Ngoc DuyOct 25, 2010
  7. 02/18 Add t1510 for setup testsNguyễn Thái Ngọc Duy, Oct 24, 2010
  8. 03/18 t1510: setup case #0Nguyễn Thái Ngọc Duy, Oct 24, 2010
  9. 04/18 t1510: setup case #1Nguyễn Thái Ngọc Duy, Oct 24, 2010
  10. 05/18 t1510: setup case #2Nguyễn Thái Ngọc Duy, Oct 24, 2010
  11. 06/18 t1510: setup case #3Nguyễn Thái Ngọc Duy, Oct 24, 2010
  12. 07/18 t1510: setup case #4Nguyễn Thái Ngọc Duy, Oct 24, 2010
  13. 08/18 t1510: setup case #5Nguyễn Thái Ngọc Duy, Oct 24, 2010
  14. 09/18 t1510: setup case #6Nguyễn Thái Ngọc Duy, Oct 24, 2010
  15. 10/18 t1510: setup case #7Nguyễn Thái Ngọc Duy, Oct 24, 2010
  16. 11/18 t1510: setup case #8Nguyễn Thái Ngọc Duy, Oct 24, 2010
  17. 12/18 t1510: setup case #9Nguyễn Thái Ngọc Duy, Oct 24, 2010
  18. 13/18 t1510: setup case #10Nguyễn Thái Ngọc Duy, Oct 24, 2010
  19. 14/18 t1510: setup case #11Nguyễn Thái Ngọc Duy, Oct 24, 2010
  20. 15/18 t1510: setup case #12Nguyễn Thái Ngọc Duy, Oct 24, 2010
  21. 16/18 t1510: setup case #13Nguyễn Thái Ngọc Duy, Oct 24, 2010
  22. 17/18 t1510: setup case #14Nguyễn Thái Ngọc Duy, Oct 24, 2010
  23. 18/18 t1510: setup case #15Nguyễn Thái Ngọc Duy, Oct 24, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.