@@ -1957,4 +1957,272 @@ EOF
1957
1957
test_repo 14/sub/sub "$TRASH_DIRECTORY/14/.git"
1958
1958
'
1959
1959
1960
+ #
1961
+ # case #15
1962
+ #
1963
+ # ###########################################################
1964
+ #
1965
+ # Input:
1966
+ #
1967
+ # - GIT_WORK_TREE is set
1968
+ # - GIT_DIR is set
1969
+ # - core.worktree is set
1970
+ # - .git is a file
1971
+ # - core.bare is not set, cwd is outside .git
1972
+ #
1973
+ # Output:
1974
+ #
1975
+ # #7 except that git_dir is set by .git file
1976
+
1977
+ test_expect_success ' #15: setup' '
1978
+ unset GIT_DIR GIT_WORK_TREE &&
1979
+ mkdir 15 15/sub 15/sub/sub 15.wt 15.wt/sub 15/wt 15/wt/sub &&
1980
+ cd 15 &&
1981
+ git init &&
1982
+ git config core.worktree non-existent &&
1983
+ mv .git ../15.git &&
1984
+ echo gitdir: ../15.git >.git &&
1985
+ cd ..
1986
+ '
1987
+
1988
+ test_expect_failure ' #15: GIT_DIR(rel), GIT_WORK_TREE=root at root' '
1989
+ cat >15/expected <<EOF &&
1990
+ setup: git_dir: $TRASH_DIRECTORY/15.git
1991
+ setup: worktree: $TRASH_DIRECTORY/15
1992
+ setup: cwd: $TRASH_DIRECTORY/15
1993
+ setup: prefix: (null)
1994
+ EOF
1995
+ test_repo 15 .git "$TRASH_DIRECTORY/15"
1996
+ '
1997
+
1998
+ test_expect_failure ' #15: GIT_DIR(rel), GIT_WORK_TREE=root(rel) at root' '
1999
+ cat >15/expected <<EOF &&
2000
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2001
+ setup: worktree: $TRASH_DIRECTORY/15
2002
+ setup: cwd: $TRASH_DIRECTORY/15
2003
+ setup: prefix: (null)
2004
+ EOF
2005
+ test_repo 15 .git .
2006
+ '
2007
+
2008
+ test_expect_failure ' #15: GIT_DIR, GIT_WORK_TREE=root at root' '
2009
+ cat >15/expected <<EOF &&
2010
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2011
+ setup: worktree: $TRASH_DIRECTORY/15
2012
+ setup: cwd: $TRASH_DIRECTORY/15
2013
+ setup: prefix: (null)
2014
+ EOF
2015
+ test_repo 15 "$TRASH_DIRECTORY/15/.git" "$TRASH_DIRECTORY/15"
2016
+ '
2017
+
2018
+ test_expect_failure ' #15: GIT_DIR, GIT_WORK_TREE=root(rel) at root' '
2019
+ cat >15/expected <<EOF &&
2020
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2021
+ setup: worktree: $TRASH_DIRECTORY/15
2022
+ setup: cwd: $TRASH_DIRECTORY/15
2023
+ setup: prefix: (null)
2024
+ EOF
2025
+ test_repo 15 "$TRASH_DIRECTORY/15/.git" .
2026
+ '
2027
+
2028
+ test_expect_failure ' #15: GIT_DIR(rel), GIT_WORKTREE=root in subdir' '
2029
+ cat >15/sub/sub/expected <<EOF &&
2030
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2031
+ setup: worktree: $TRASH_DIRECTORY/15
2032
+ setup: cwd: $TRASH_DIRECTORY/15
2033
+ setup: prefix: sub/sub/
2034
+ EOF
2035
+ test_repo 15/sub/sub ../../.git "$TRASH_DIRECTORY/15"
2036
+ '
2037
+
2038
+ test_expect_failure ' #15: GIT_DIR(rel), GIT_WORKTREE=root(rel) in subdir' '
2039
+ cat >15/sub/sub/expected <<EOF &&
2040
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2041
+ setup: worktree: $TRASH_DIRECTORY/15
2042
+ setup: cwd: $TRASH_DIRECTORY/15
2043
+ setup: prefix: sub/sub/
2044
+ EOF
2045
+ test_repo 15/sub/sub ../../.git ../..
2046
+ '
2047
+
2048
+ test_expect_failure ' #15: GIT_DIR, GIT_WORKTREE=root in subdir' '
2049
+ cat >15/sub/expected <<EOF &&
2050
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2051
+ setup: worktree: $TRASH_DIRECTORY/15
2052
+ setup: cwd: $TRASH_DIRECTORY/15
2053
+ setup: prefix: sub/
2054
+ EOF
2055
+ test_repo 15/sub "$TRASH_DIRECTORY/15/.git" "$TRASH_DIRECTORY/15"
2056
+ '
2057
+
2058
+ test_expect_failure ' #15: GIT_DIR, GIT_WORKTREE=root(rel) in subdir' '
2059
+ cat >15/sub/sub/expected <<EOF &&
2060
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2061
+ setup: worktree: $TRASH_DIRECTORY/15
2062
+ setup: cwd: $TRASH_DIRECTORY/15
2063
+ setup: prefix: sub/sub/
2064
+ EOF
2065
+ test_repo 15/sub/sub "$TRASH_DIRECTORY/15/.git" ../..
2066
+ '
2067
+
2068
+ test_expect_failure ' #15: GIT_DIR(rel), GIT_WORK_TREE=wt at root' '
2069
+ cat >15/expected <<EOF &&
2070
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2071
+ setup: worktree: $TRASH_DIRECTORY/15/wt
2072
+ setup: cwd: $TRASH_DIRECTORY/15
2073
+ setup: prefix: (null)
2074
+ EOF
2075
+ test_repo 15 .git "$TRASH_DIRECTORY/15/wt"
2076
+ '
2077
+
2078
+ test_expect_failure ' #15: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) at root' '
2079
+ cat >15/expected <<EOF &&
2080
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2081
+ setup: worktree: $TRASH_DIRECTORY/15/wt
2082
+ setup: cwd: $TRASH_DIRECTORY/15
2083
+ setup: prefix: (null)
2084
+ EOF
2085
+ test_repo 15 .git wt
2086
+ '
2087
+
2088
+ test_expect_failure ' #15: GIT_DIR, GIT_WORK_TREE=wt(rel) at root' '
2089
+ cat >15/expected <<EOF &&
2090
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2091
+ setup: worktree: $TRASH_DIRECTORY/15/wt
2092
+ setup: cwd: $TRASH_DIRECTORY/15
2093
+ setup: prefix: (null)
2094
+ EOF
2095
+ test_repo 15 "$TRASH_DIRECTORY/15/.git" wt
2096
+ '
2097
+
2098
+ test_expect_failure ' #15: GIT_DIR, GIT_WORK_TREE=wt at root' '
2099
+ cat >15/expected <<EOF &&
2100
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2101
+ setup: worktree: $TRASH_DIRECTORY/15/wt
2102
+ setup: cwd: $TRASH_DIRECTORY/15
2103
+ setup: prefix: (null)
2104
+ EOF
2105
+ test_repo 15 "$TRASH_DIRECTORY/15/.git" "$TRASH_DIRECTORY/15/wt"
2106
+ '
2107
+
2108
+ test_expect_failure ' #15: GIT_DIR(rel), GIT_WORK_TREE=wt in subdir' '
2109
+ cat >15/sub/sub/expected <<EOF &&
2110
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2111
+ setup: worktree: $TRASH_DIRECTORY/15/wt
2112
+ setup: cwd: $TRASH_DIRECTORY/15/sub/sub
2113
+ setup: prefix: (null)
2114
+ EOF
2115
+ test_repo 15/sub/sub ../../.git "$TRASH_DIRECTORY/15/wt"
2116
+ '
2117
+
2118
+ test_expect_failure ' #15: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) in subdir' '
2119
+ cat >15/sub/sub/expected <<EOF &&
2120
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2121
+ setup: worktree: $TRASH_DIRECTORY/15/wt
2122
+ setup: cwd: $TRASH_DIRECTORY/15/sub/sub
2123
+ setup: prefix: (null)
2124
+ EOF
2125
+ test_repo 15/sub/sub ../../.git ../../wt
2126
+ '
2127
+
2128
+ test_expect_failure ' #15: GIT_DIR, GIT_WORK_TREE=wt(rel) in subdir' '
2129
+ cat >15/sub/sub/expected <<EOF &&
2130
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2131
+ setup: worktree: $TRASH_DIRECTORY/15/wt
2132
+ setup: cwd: $TRASH_DIRECTORY/15/sub/sub
2133
+ setup: prefix: (null)
2134
+ EOF
2135
+ test_repo 15/sub/sub "$TRASH_DIRECTORY/15/.git" ../../wt
2136
+ '
2137
+
2138
+ test_expect_failure ' #15: GIT_DIR, GIT_WORK_TREE=wt in subdir' '
2139
+ cat >15/sub/sub/expected <<EOF &&
2140
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2141
+ setup: worktree: $TRASH_DIRECTORY/15/wt
2142
+ setup: cwd: $TRASH_DIRECTORY/15/sub/sub
2143
+ setup: prefix: (null)
2144
+ EOF
2145
+ test_repo 15/sub/sub "$TRASH_DIRECTORY/15/.git" "$TRASH_DIRECTORY/15/wt"
2146
+ '
2147
+
2148
+ test_expect_failure ' #15: GIT_DIR(rel), GIT_WORK_TREE=.. at root' '
2149
+ cat >15/expected <<EOF &&
2150
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2151
+ setup: worktree: $TRASH_DIRECTORY
2152
+ setup: cwd: $TRASH_DIRECTORY
2153
+ setup: prefix: 15/
2154
+ EOF
2155
+ test_repo 15 .git "$TRASH_DIRECTORY"
2156
+ '
2157
+
2158
+ test_expect_failure ' #15: GIT_DIR(rel), GIT_WORK_TREE=..(rel) at root' '
2159
+ cat >15/expected <<EOF &&
2160
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2161
+ setup: worktree: $TRASH_DIRECTORY
2162
+ setup: cwd: $TRASH_DIRECTORY
2163
+ setup: prefix: 15/
2164
+ EOF
2165
+ test_repo 15 .git ..
2166
+ '
2167
+
2168
+ test_expect_failure ' #15: GIT_DIR, GIT_WORK_TREE=..(rel) at root' '
2169
+ cat >15/expected <<EOF &&
2170
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2171
+ setup: worktree: $TRASH_DIRECTORY
2172
+ setup: cwd: $TRASH_DIRECTORY
2173
+ setup: prefix: 15/
2174
+ EOF
2175
+ test_repo 15 "$TRASH_DIRECTORY/15/.git" ..
2176
+ '
2177
+
2178
+ test_expect_failure ' #15: GIT_DIR, GIT_WORK_TREE=.. at root' '
2179
+ cat >15/expected <<EOF &&
2180
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2181
+ setup: worktree: $TRASH_DIRECTORY
2182
+ setup: cwd: $TRASH_DIRECTORY
2183
+ setup: prefix: 15/
2184
+ EOF
2185
+ test_repo 15 "$TRASH_DIRECTORY/15/.git" "$TRASH_DIRECTORY"
2186
+ '
2187
+
2188
+ test_expect_failure ' #15: GIT_DIR(rel), GIT_WORK_TREE=.. in subdir' '
2189
+ cat >15/sub/sub/expected <<EOF &&
2190
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2191
+ setup: worktree: $TRASH_DIRECTORY
2192
+ setup: cwd: $TRASH_DIRECTORY
2193
+ setup: prefix: 15/sub/sub/
2194
+ EOF
2195
+ test_repo 15/sub/sub ../../.git "$TRASH_DIRECTORY"
2196
+ '
2197
+
2198
+ test_expect_failure ' #15: GIT_DIR(rel), GIT_WORK_TREE=..(rel) in subdir' '
2199
+ cat >15/sub/sub/expected <<EOF &&
2200
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2201
+ setup: worktree: $TRASH_DIRECTORY
2202
+ setup: cwd: $TRASH_DIRECTORY
2203
+ setup: prefix: 15/sub/sub/
2204
+ EOF
2205
+ test_repo 15/sub/sub ../../.git ../../..
2206
+ '
2207
+
2208
+ test_expect_failure ' #15: GIT_DIR, GIT_WORK_TREE=..(rel) in subdir' '
2209
+ cat >15/sub/sub/expected <<EOF &&
2210
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2211
+ setup: worktree: $TRASH_DIRECTORY
2212
+ setup: cwd: $TRASH_DIRECTORY
2213
+ setup: prefix: 15/sub/sub/
2214
+ EOF
2215
+ test_repo 15/sub/sub "$TRASH_DIRECTORY/15/.git" ../../../
2216
+ '
2217
+
2218
+ test_expect_failure ' #15: GIT_DIR, GIT_WORK_TREE=.. in subdir' '
2219
+ cat >15/sub/sub/expected <<EOF &&
2220
+ setup: git_dir: $TRASH_DIRECTORY/15.git
2221
+ setup: worktree: $TRASH_DIRECTORY
2222
+ setup: cwd: $TRASH_DIRECTORY
2223
+ setup: prefix: 15/sub/sub/
2224
+ EOF
2225
+ test_repo 15/sub/sub "$TRASH_DIRECTORY/15/.git" "$TRASH_DIRECTORY"
2226
+ '
2227
+
1960
2228
test_done
0 commit comments