@@ -123,149 +123,113 @@ test_expect_success "fetch test remote HEAD change" '
123123'
124124
125125test_expect_success " fetch test followRemoteHEAD never" '
126- test_when_finished "git -C two config unset remote.origin.followRemoteHEAD" &&
127- (
128- cd two &&
129- git update-ref --no-deref -d refs/remotes/origin/HEAD &&
130- git config set remote.origin.followRemoteHEAD "never" &&
131- GIT_TRACE_PACKET=$PWD/trace.out git fetch &&
132- # Confirm that we do not even ask for HEAD when we are
133- # not going to act on it.
134- test_grep ! "ref-prefix HEAD" trace.out &&
135- test_must_fail git rev-parse --verify refs/remotes/origin/HEAD
136- )
126+ git -C two update-ref --no-deref -d refs/remotes/origin/HEAD &&
127+ test_config -C two remote.origin.followRemoteHEAD "never" &&
128+ GIT_TRACE_PACKET=$PWD/trace.out git -C two fetch &&
129+ # Confirm that we do not even ask for HEAD when we are
130+ # not going to act on it.
131+ test_grep ! "ref-prefix HEAD" trace.out &&
132+ test_must_fail git -C two rev-parse --verify refs/remotes/origin/HEAD
137133'
138134
139135test_expect_success " fetch test followRemoteHEAD warn no change" '
140- test_when_finished "git -C two config unset remote.origin.followRemoteHEAD" &&
141- (
142- cd two &&
143- git rev-parse --verify refs/remotes/origin/other &&
144- git remote set-head origin other &&
145- git rev-parse --verify refs/remotes/origin/HEAD &&
146- git rev-parse --verify refs/remotes/origin/main &&
147- git config set remote.origin.followRemoteHEAD "warn" &&
148- git fetch >output &&
149- echo "${SQ}HEAD${SQ} at ${SQ}origin${SQ} is ${SQ}main${SQ}," \
150- "but we have ${SQ}other${SQ} locally." >expect &&
151- test_cmp expect output &&
152- head=$(git rev-parse refs/remotes/origin/HEAD) &&
153- branch=$(git rev-parse refs/remotes/origin/other) &&
154- test "z$head" = "z$branch"
155- )
136+ git -C two rev-parse --verify refs/remotes/origin/other &&
137+ git -C two remote set-head origin other &&
138+ git -C two rev-parse --verify refs/remotes/origin/HEAD &&
139+ git -C two rev-parse --verify refs/remotes/origin/main &&
140+ test_config -C two remote.origin.followRemoteHEAD "warn" &&
141+ git -C two fetch >output &&
142+ echo "${SQ}HEAD${SQ} at ${SQ}origin${SQ} is ${SQ}main${SQ}," \
143+ "but we have ${SQ}other${SQ} locally." >expect &&
144+ test_cmp expect output &&
145+ head=$(git -C two rev-parse refs/remotes/origin/HEAD) &&
146+ branch=$(git -C two rev-parse refs/remotes/origin/other) &&
147+ test "z$head" = "z$branch"
156148'
157149
158150test_expect_success " fetch test followRemoteHEAD warn create" '
159- test_when_finished "git -C two config unset remote.origin.followRemoteHEAD" &&
160- (
161- cd two &&
162- git update-ref --no-deref -d refs/remotes/origin/HEAD &&
163- git config set remote.origin.followRemoteHEAD "warn" &&
164- git rev-parse --verify refs/remotes/origin/main &&
165- output=$(git fetch) &&
166- test "z" = "z$output" &&
167- head=$(git rev-parse refs/remotes/origin/HEAD) &&
168- branch=$(git rev-parse refs/remotes/origin/main) &&
169- test "z$head" = "z$branch"
170- )
151+ git -C two update-ref --no-deref -d refs/remotes/origin/HEAD &&
152+ test_config -C two remote.origin.followRemoteHEAD "warn" &&
153+ git -C two rev-parse --verify refs/remotes/origin/main &&
154+ output=$(git -C two fetch) &&
155+ test "z" = "z$output" &&
156+ head=$(git -C two rev-parse refs/remotes/origin/HEAD) &&
157+ branch=$(git -C two rev-parse refs/remotes/origin/main) &&
158+ test "z$head" = "z$branch"
171159'
172160
173161test_expect_success " fetch test followRemoteHEAD warn detached" '
174- test_when_finished "git -C two config unset remote.origin.followRemoteHEAD" &&
175- (
176- cd two &&
177- git update-ref --no-deref -d refs/remotes/origin/HEAD &&
178- git update-ref refs/remotes/origin/HEAD HEAD &&
179- HEAD=$(git log --pretty="%H") &&
180- git config set remote.origin.followRemoteHEAD "warn" &&
181- git fetch >output &&
182- echo "${SQ}HEAD${SQ} at ${SQ}origin${SQ} is ${SQ}main${SQ}," \
183- "but we have a detached HEAD pointing to" \
184- "${SQ}${HEAD}${SQ} locally." >expect &&
185- test_cmp expect output
186- )
162+ git -C two update-ref --no-deref -d refs/remotes/origin/HEAD &&
163+ git -C two update-ref refs/remotes/origin/HEAD HEAD &&
164+ HEAD=$(git -C two log --pretty="%H") &&
165+ test_config -C two remote.origin.followRemoteHEAD "warn" &&
166+ git -C two fetch >output &&
167+ echo "${SQ}HEAD${SQ} at ${SQ}origin${SQ} is ${SQ}main${SQ}," \
168+ "but we have a detached HEAD pointing to" \
169+ "${SQ}${HEAD}${SQ} locally." >expect &&
170+ test_cmp expect output
187171'
188172
189173test_expect_success " fetch test followRemoteHEAD warn quiet" '
190- test_when_finished "git -C two config unset remote.origin.followRemoteHEAD" &&
191- (
192- cd two &&
193- git rev-parse --verify refs/remotes/origin/other &&
194- git remote set-head origin other &&
195- git rev-parse --verify refs/remotes/origin/HEAD &&
196- git rev-parse --verify refs/remotes/origin/main &&
197- git config set remote.origin.followRemoteHEAD "warn" &&
198- output=$(git fetch --quiet) &&
199- test "z" = "z$output" &&
200- head=$(git rev-parse refs/remotes/origin/HEAD) &&
201- branch=$(git rev-parse refs/remotes/origin/other) &&
202- test "z$head" = "z$branch"
203- )
174+ git -C two rev-parse --verify refs/remotes/origin/other &&
175+ git -C two remote set-head origin other &&
176+ git -C two rev-parse --verify refs/remotes/origin/HEAD &&
177+ git -C two rev-parse --verify refs/remotes/origin/main &&
178+ test_config -C two remote.origin.followRemoteHEAD "warn" &&
179+ output=$(git -C two fetch --quiet) &&
180+ test "z" = "z$output" &&
181+ head=$(git -C two rev-parse refs/remotes/origin/HEAD) &&
182+ branch=$(git -C two rev-parse refs/remotes/origin/other) &&
183+ test "z$head" = "z$branch"
204184'
205185
206186test_expect_success " fetch test followRemoteHEAD warn-if-not-branch branch is same" '
207- test_when_finished "git -C two config unset remote.origin.followRemoteHEAD" &&
208- (
209- cd two &&
210- git rev-parse --verify refs/remotes/origin/other &&
211- git remote set-head origin other &&
212- git rev-parse --verify refs/remotes/origin/HEAD &&
213- git rev-parse --verify refs/remotes/origin/main &&
214- git config set remote.origin.followRemoteHEAD "warn-if-not-main" &&
215- actual=$(git fetch) &&
216- test "z" = "z$actual" &&
217- head=$(git rev-parse refs/remotes/origin/HEAD) &&
218- branch=$(git rev-parse refs/remotes/origin/other) &&
219- test "z$head" = "z$branch"
220- )
187+ git -C two rev-parse --verify refs/remotes/origin/other &&
188+ git -C two remote set-head origin other &&
189+ git -C two rev-parse --verify refs/remotes/origin/HEAD &&
190+ git -C two rev-parse --verify refs/remotes/origin/main &&
191+ test_config -C two remote.origin.followRemoteHEAD "warn-if-not-main" &&
192+ actual=$(git -C two fetch) &&
193+ test "z" = "z$actual" &&
194+ head=$(git -C two rev-parse refs/remotes/origin/HEAD) &&
195+ branch=$(git -C two rev-parse refs/remotes/origin/other) &&
196+ test "z$head" = "z$branch"
221197'
222198
223199test_expect_success " fetch test followRemoteHEAD warn-if-not-branch branch is different" '
224- test_when_finished "git -C two config unset remote.origin.followRemoteHEAD" &&
225- (
226- cd two &&
227- git rev-parse --verify refs/remotes/origin/other &&
228- git remote set-head origin other &&
229- git rev-parse --verify refs/remotes/origin/HEAD &&
230- git rev-parse --verify refs/remotes/origin/main &&
231- git config set remote.origin.followRemoteHEAD "warn-if-not-some/different-branch" &&
232- git fetch >actual &&
233- echo "${SQ}HEAD${SQ} at ${SQ}origin${SQ} is ${SQ}main${SQ}," \
234- "but we have ${SQ}other${SQ} locally." >expect &&
235- test_cmp expect actual &&
236- head=$(git rev-parse refs/remotes/origin/HEAD) &&
237- branch=$(git rev-parse refs/remotes/origin/other) &&
238- test "z$head" = "z$branch"
239- )
200+ git -C two rev-parse --verify refs/remotes/origin/other &&
201+ git -C two remote set-head origin other &&
202+ git -C two rev-parse --verify refs/remotes/origin/HEAD &&
203+ git -C two rev-parse --verify refs/remotes/origin/main &&
204+ test_config -C two remote.origin.followRemoteHEAD "warn-if-not-some/different-branch" &&
205+ git -C two fetch >actual &&
206+ echo "${SQ}HEAD${SQ} at ${SQ}origin${SQ} is ${SQ}main${SQ}," \
207+ "but we have ${SQ}other${SQ} locally." >expect &&
208+ test_cmp expect actual &&
209+ head=$(git -C two rev-parse refs/remotes/origin/HEAD) &&
210+ branch=$(git -C two rev-parse refs/remotes/origin/other) &&
211+ test "z$head" = "z$branch"
240212'
241213
242214test_expect_success " fetch test followRemoteHEAD always" '
243- test_when_finished "git -C two config unset remote.origin.followRemoteHEAD" &&
244- (
245- cd two &&
246- git rev-parse --verify refs/remotes/origin/other &&
247- git remote set-head origin other &&
248- git rev-parse --verify refs/remotes/origin/HEAD &&
249- git rev-parse --verify refs/remotes/origin/main &&
250- git config set remote.origin.followRemoteHEAD "always" &&
251- git fetch &&
252- head=$(git rev-parse refs/remotes/origin/HEAD) &&
253- branch=$(git rev-parse refs/remotes/origin/main) &&
254- test "z$head" = "z$branch"
255- )
215+ git -C two rev-parse --verify refs/remotes/origin/other &&
216+ git -C two remote set-head origin other &&
217+ git -C two rev-parse --verify refs/remotes/origin/HEAD &&
218+ git -C two rev-parse --verify refs/remotes/origin/main &&
219+ test_config -C two remote.origin.followRemoteHEAD "always" &&
220+ git -C two fetch &&
221+ head=$(git -C two rev-parse refs/remotes/origin/HEAD) &&
222+ branch=$(git -C two rev-parse refs/remotes/origin/main) &&
223+ test "z$head" = "z$branch"
256224'
257225
258226test_expect_success ' followRemoteHEAD does not kick in with refspecs' '
259- test_when_finished "git -C two config unset remote.origin.followRemoteHEAD" &&
260- (
261- cd two &&
262- git remote set-head origin other &&
263- git config set remote.origin.followRemoteHEAD always &&
264- git fetch origin refs/heads/main:refs/remotes/origin/main &&
265- echo refs/remotes/origin/other >expect &&
266- git symbolic-ref refs/remotes/origin/HEAD >actual &&
267- test_cmp expect actual
268- )
227+ git -C two remote set-head origin other &&
228+ test_config -C two remote.origin.followRemoteHEAD always &&
229+ git -C two fetch origin refs/heads/main:refs/remotes/origin/main &&
230+ echo refs/remotes/origin/other >expect &&
231+ git -C two symbolic-ref refs/remotes/origin/HEAD >actual &&
232+ test_cmp expect actual
269233'
270234
271235test_expect_success ' fetch --prune on its own works as expected' '
0 commit comments