##// END OF EJS Templates
update: use long version of the flag in the test...
marmoute -
r49234:acdd4a42 default
parent child Browse files
Show More
@@ -1,706 +1,711 b''
1 $ cat >> $HGRCPATH <<EOF
1 $ cat >> $HGRCPATH <<EOF
2 > [commands]
2 > [commands]
3 > status.verbose=1
3 > status.verbose=1
4 > EOF
4 > EOF
5
5
6 # Construct the following history tree:
6 # Construct the following history tree:
7 #
7 #
8 # @ 5:e1bb631146ca b1
8 # @ 5:e1bb631146ca b1
9 # |
9 # |
10 # o 4:a4fdb3b883c4 0:b608b9236435 b1
10 # o 4:a4fdb3b883c4 0:b608b9236435 b1
11 # |
11 # |
12 # | o 3:4b57d2520816 1:44592833ba9f
12 # | o 3:4b57d2520816 1:44592833ba9f
13 # | |
13 # | |
14 # | | o 2:063f31070f65
14 # | | o 2:063f31070f65
15 # | |/
15 # | |/
16 # | o 1:44592833ba9f
16 # | o 1:44592833ba9f
17 # |/
17 # |/
18 # o 0:b608b9236435
18 # o 0:b608b9236435
19
19
20 $ mkdir b1
20 $ mkdir b1
21 $ cd b1
21 $ cd b1
22 $ hg init
22 $ hg init
23 $ echo foo > foo
23 $ echo foo > foo
24 $ echo zero > a
24 $ echo zero > a
25 $ hg init sub
25 $ hg init sub
26 $ echo suba > sub/suba
26 $ echo suba > sub/suba
27 $ hg --cwd sub ci -Am addsuba
27 $ hg --cwd sub ci -Am addsuba
28 adding suba
28 adding suba
29 $ echo 'sub = sub' > .hgsub
29 $ echo 'sub = sub' > .hgsub
30 $ hg ci -qAm0
30 $ hg ci -qAm0
31 $ echo one > a ; hg ci -m1
31 $ echo one > a ; hg ci -m1
32 $ echo two > a ; hg ci -m2
32 $ echo two > a ; hg ci -m2
33 $ hg up -q 1
33 $ hg up -q 1
34 $ echo three > a ; hg ci -qm3
34 $ echo three > a ; hg ci -qm3
35 $ hg up -q 0
35 $ hg up -q 0
36 $ hg branch -q b1
36 $ hg branch -q b1
37 $ echo four > a ; hg ci -qm4
37 $ echo four > a ; hg ci -qm4
38 $ echo five > a ; hg ci -qm5
38 $ echo five > a ; hg ci -qm5
39
39
40 Initial repo state:
40 Initial repo state:
41
41
42 $ hg log -G --template '{rev}:{node|short} {parents} {branches}\n'
42 $ hg log -G --template '{rev}:{node|short} {parents} {branches}\n'
43 @ 5:ff252e8273df b1
43 @ 5:ff252e8273df b1
44 |
44 |
45 o 4:d047485b3896 0:60829823a42a b1
45 o 4:d047485b3896 0:60829823a42a b1
46 |
46 |
47 | o 3:6efa171f091b 1:0786582aa4b1
47 | o 3:6efa171f091b 1:0786582aa4b1
48 | |
48 | |
49 | | o 2:bd10386d478c
49 | | o 2:bd10386d478c
50 | |/
50 | |/
51 | o 1:0786582aa4b1
51 | o 1:0786582aa4b1
52 |/
52 |/
53 o 0:60829823a42a
53 o 0:60829823a42a
54
54
55
55
56 Make sure update doesn't assume b1 is a repository if invoked from outside:
56 Make sure update doesn't assume b1 is a repository if invoked from outside:
57
57
58 $ cd ..
58 $ cd ..
59 $ hg update b1
59 $ hg update b1
60 abort: no repository found in '$TESTTMP' (.hg not found)
60 abort: no repository found in '$TESTTMP' (.hg not found)
61 [10]
61 [10]
62 $ cd b1
62 $ cd b1
63
63
64 Test helper functions:
64 Test helper functions:
65
65
66 $ revtest () {
66 $ revtest () {
67 > msg=$1
67 > msg=$1
68 > dirtyflag=$2 # 'clean', 'dirty' or 'dirtysub'
68 > dirtyflag=$2 # 'clean', 'dirty' or 'dirtysub'
69 > startrev=$3
69 > startrev=$3
70 > targetrev=$4
70 > targetrev=$4
71 > opt=$5
71 > opt=$5
72 > hg up -qC $startrev
72 > hg up -qC $startrev
73 > test $dirtyflag = dirty && echo dirty > foo
73 > test $dirtyflag = dirty && echo dirty > foo
74 > test $dirtyflag = dirtysub && echo dirty > sub/suba
74 > test $dirtyflag = dirtysub && echo dirty > sub/suba
75 > hg up $opt $targetrev
75 > hg up $opt $targetrev
76 > hg parent --template 'parent={rev}\n'
76 > hg parent --template 'parent={rev}\n'
77 > hg stat -S
77 > hg stat -S
78 > }
78 > }
79
79
80 $ norevtest () {
80 $ norevtest () {
81 > msg=$1
81 > msg=$1
82 > dirtyflag=$2 # 'clean', 'dirty' or 'dirtysub'
82 > dirtyflag=$2 # 'clean', 'dirty' or 'dirtysub'
83 > startrev=$3
83 > startrev=$3
84 > opt=$4
84 > opt=$4
85 > hg up -qC $startrev
85 > hg up -qC $startrev
86 > test $dirtyflag = dirty && echo dirty > foo
86 > test $dirtyflag = dirty && echo dirty > foo
87 > test $dirtyflag = dirtysub && echo dirty > sub/suba
87 > test $dirtyflag = dirtysub && echo dirty > sub/suba
88 > hg up $opt
88 > hg up $opt
89 > hg parent --template 'parent={rev}\n'
89 > hg parent --template 'parent={rev}\n'
90 > hg stat -S
90 > hg stat -S
91 > }
91 > }
92
92
93 Test cases are documented in a table in the update function of merge.py.
93 Test cases are documented in a table in the update function of merge.py.
94 Cases are run as shown in that table, row by row.
94 Cases are run as shown in that table, row by row.
95
95
96 $ norevtest 'none clean linear' clean 4
96 $ norevtest 'none clean linear' clean 4
97 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
97 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
98 parent=5
98 parent=5
99
99
100 $ norevtest 'none clean same' clean 2
100 $ norevtest 'none clean same' clean 2
101 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
101 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
102 updated to "bd10386d478c: 2"
102 updated to "bd10386d478c: 2"
103 1 other heads for branch "default"
103 1 other heads for branch "default"
104 parent=2
104 parent=2
105
105
106
106
107 $ revtest 'none clean linear' clean 1 2
107 $ revtest 'none clean linear' clean 1 2
108 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
108 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
109 parent=2
109 parent=2
110
110
111 $ revtest 'none clean same' clean 2 3
111 $ revtest 'none clean same' clean 2 3
112 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
112 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
113 parent=3
113 parent=3
114
114
115 $ revtest 'none clean cross' clean 3 4
115 $ revtest 'none clean cross' clean 3 4
116 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
116 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
117 parent=4
117 parent=4
118
118
119
119
120 $ revtest 'none dirty linear' dirty 1 2
120 $ revtest 'none dirty linear' dirty 1 2
121 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
121 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
122 parent=2
122 parent=2
123 M foo
123 M foo
124
124
125 $ revtest 'none dirtysub linear' dirtysub 1 2
125 $ revtest 'none dirtysub linear' dirtysub 1 2
126 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
126 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
127 parent=2
127 parent=2
128 M sub/suba
128 M sub/suba
129
129
130 $ revtest 'none dirty same' dirty 2 3
130 $ revtest 'none dirty same' dirty 2 3
131 abort: uncommitted changes
131 abort: uncommitted changes
132 (commit or update --clean to discard changes)
132 (commit or update --clean to discard changes)
133 parent=2
133 parent=2
134 M foo
134 M foo
135
135
136 $ revtest 'none dirtysub same' dirtysub 2 3
136 $ revtest 'none dirtysub same' dirtysub 2 3
137 abort: uncommitted changes
137 abort: uncommitted changes
138 (commit or update --clean to discard changes)
138 (commit or update --clean to discard changes)
139 parent=2
139 parent=2
140 M sub/suba
140 M sub/suba
141
141
142 $ revtest 'none dirty cross' dirty 3 4
142 $ revtest 'none dirty cross' dirty 3 4
143 abort: uncommitted changes
143 abort: uncommitted changes
144 (commit or update --clean to discard changes)
144 (commit or update --clean to discard changes)
145 parent=3
145 parent=3
146 M foo
146 M foo
147
147
148 $ norevtest 'none dirty cross' dirty 2
148 $ norevtest 'none dirty cross' dirty 2
149 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
149 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
150 updated to "bd10386d478c: 2"
150 updated to "bd10386d478c: 2"
151 1 other heads for branch "default"
151 1 other heads for branch "default"
152 parent=2
152 parent=2
153 M foo
153 M foo
154
154
155 $ revtest 'none dirtysub cross' dirtysub 3 4
155 $ revtest 'none dirtysub cross' dirtysub 3 4
156 abort: uncommitted changes
156 abort: uncommitted changes
157 (commit or update --clean to discard changes)
157 (commit or update --clean to discard changes)
158 parent=3
158 parent=3
159 M sub/suba
159 M sub/suba
160
160
161 $ revtest '-C dirty linear' dirty 1 2 -C
161 $ revtest '--clean dirty linear' dirty 1 2 --clean
162 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
162 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
163 parent=2
163 parent=2
164
164
165 $ revtest '-c dirty linear' dirty 1 2 -c
165 $ revtest '--check dirty linear' dirty 1 2 --check
166 abort: uncommitted changes
166 abort: uncommitted changes
167 parent=1
167 parent=1
168 M foo
168 M foo
169
169
170 $ revtest '-m dirty linear' dirty 1 2 -m
170 $ revtest '--merge dirty linear' dirty 1 2 --merge
171 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
171 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
172 parent=2
172 parent=2
173 M foo
173 M foo
174
174
175 $ revtest '-m dirty cross' dirty 3 4 -m
175 $ revtest '--merge dirty cross' dirty 3 4 --merge
176 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
176 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
177 parent=4
177 parent=4
178 M foo
178 M foo
179
179
180 $ revtest '-c dirtysub linear' dirtysub 1 2 -c
180 $ revtest '--check dirtysub linear' dirtysub 1 2 --check
181 abort: uncommitted changes in subrepository "sub"
181 abort: uncommitted changes in subrepository "sub"
182 parent=1
182 parent=1
183 M sub/suba
183 M sub/suba
184
184
185 $ norevtest '-c clean same' clean 2 -c
185 $ norevtest '--check clean same' clean 2 -c
186 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
186 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
187 updated to "bd10386d478c: 2"
187 updated to "bd10386d478c: 2"
188 1 other heads for branch "default"
188 1 other heads for branch "default"
189 parent=2
189 parent=2
190
190
191 $ revtest '-cC dirty linear' dirty 1 2 -cC
191 $ revtest '--check --clean dirty linear' dirty 1 2 "--check --clean"
192 abort: cannot specify both --clean and --check
192 abort: cannot specify both --clean and --check
193 parent=1
193 parent=1
194 M foo
194 M foo
195
195
196 $ revtest '-mc dirty linear' dirty 1 2 -mc
196 $ revtest '--merge -checkc dirty linear' dirty 1 2 "--merge --check"
197 abort: cannot specify both --check and --merge
197 abort: cannot specify both --check and --merge
198 parent=1
198 parent=1
199 M foo
199 M foo
200
200
201 $ revtest '-mC dirty linear' dirty 1 2 -mC
201 $ revtest '--merge -clean dirty linear' dirty 1 2 "--merge --clean"
202 abort: cannot specify both --clean and --merge
202 abort: cannot specify both --clean and --merge
203 parent=1
203 parent=1
204 M foo
204 M foo
205
205
206 $ echo '[commands]' >> .hg/hgrc
206 $ echo '[commands]' >> .hg/hgrc
207 $ echo 'update.check = abort' >> .hg/hgrc
207 $ echo 'update.check = abort' >> .hg/hgrc
208
208
209 $ revtest 'none dirty linear' dirty 1 2
209 $ revtest 'none dirty linear' dirty 1 2
210 abort: uncommitted changes
210 abort: uncommitted changes
211 parent=1
211 parent=1
212 M foo
212 M foo
213
213
214 $ revtest 'none dirty linear' dirty 1 2 -c
214 $ revtest 'none dirty linear' dirty 1 2 --check
215 abort: uncommitted changes
215 abort: uncommitted changes
216 parent=1
216 parent=1
217 M foo
217 M foo
218
218
219 $ revtest 'none dirty linear' dirty 1 2 -C
219 $ revtest '--merge none dirty linear' dirty 1 2 --check
220 abort: uncommitted changes
221 parent=1
222 M foo
223
224 $ revtest 'none dirty linear' dirty 1 2 --clean
220 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
225 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
221 parent=2
226 parent=2
222
227
223 $ echo 'update.check = none' >> .hg/hgrc
228 $ echo 'update.check = none' >> .hg/hgrc
224
229
225 $ revtest 'none dirty cross' dirty 3 4
230 $ revtest 'none dirty cross' dirty 3 4
226 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
231 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
227 parent=4
232 parent=4
228 M foo
233 M foo
229
234
230 $ revtest 'none dirty linear' dirty 1 2
235 $ revtest 'none dirty linear' dirty 1 2
231 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
236 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
232 parent=2
237 parent=2
233 M foo
238 M foo
234
239
235 $ revtest 'none dirty linear' dirty 1 2 -c
240 $ revtest 'none dirty linear' dirty 1 2 --check
236 abort: uncommitted changes
241 abort: uncommitted changes
237 parent=1
242 parent=1
238 M foo
243 M foo
239
244
240 $ revtest 'none dirty linear' dirty 1 2 -C
245 $ revtest 'none dirty linear' dirty 1 2 --clean
241 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
246 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
242 parent=2
247 parent=2
243
248
244 $ hg co -qC 3
249 $ hg co -qC 3
245 $ echo dirty >> a
250 $ echo dirty >> a
246 $ hg co --tool :merge3 4
251 $ hg co --tool :merge3 4
247 merging a
252 merging a
248 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
253 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
249 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
254 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
250 use 'hg resolve' to retry unresolved file merges
255 use 'hg resolve' to retry unresolved file merges
251 [1]
256 [1]
252 $ hg log -G --template '{rev}:{node|short} {parents} {branches}\n'
257 $ hg log -G --template '{rev}:{node|short} {parents} {branches}\n'
253 o 5:ff252e8273df b1
258 o 5:ff252e8273df b1
254 |
259 |
255 @ 4:d047485b3896 0:60829823a42a b1
260 @ 4:d047485b3896 0:60829823a42a b1
256 |
261 |
257 | % 3:6efa171f091b 1:0786582aa4b1
262 | % 3:6efa171f091b 1:0786582aa4b1
258 | |
263 | |
259 | | o 2:bd10386d478c
264 | | o 2:bd10386d478c
260 | |/
265 | |/
261 | o 1:0786582aa4b1
266 | o 1:0786582aa4b1
262 |/
267 |/
263 o 0:60829823a42a
268 o 0:60829823a42a
264
269
265 $ hg st
270 $ hg st
266 M a
271 M a
267 ? a.orig
272 ? a.orig
268 # Unresolved merge conflicts:
273 # Unresolved merge conflicts:
269 #
274 #
270 # a
275 # a
271 #
276 #
272 # To mark files as resolved: hg resolve --mark FILE
277 # To mark files as resolved: hg resolve --mark FILE
273
278
274 $ cat a
279 $ cat a
275 <<<<<<< working copy: 6efa171f091b - test: 3
280 <<<<<<< working copy: 6efa171f091b - test: 3
276 three
281 three
277 dirty
282 dirty
278 ||||||| base
283 ||||||| base
279 three
284 three
280 =======
285 =======
281 four
286 four
282 >>>>>>> destination: d047485b3896 b1 - test: 4
287 >>>>>>> destination: d047485b3896 b1 - test: 4
283 $ rm a.orig
288 $ rm a.orig
284
289
285 $ echo 'update.check = noconflict' >> .hg/hgrc
290 $ echo 'update.check = noconflict' >> .hg/hgrc
286
291
287 $ revtest 'none dirty cross' dirty 3 4
292 $ revtest 'none dirty cross' dirty 3 4
288 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
293 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
289 parent=4
294 parent=4
290 M foo
295 M foo
291
296
292 $ revtest 'none dirty linear' dirty 1 2
297 $ revtest 'none dirty linear' dirty 1 2
293 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
298 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
294 parent=2
299 parent=2
295 M foo
300 M foo
296
301
297 $ revtest 'none dirty linear' dirty 1 2 -c
302 $ revtest 'none dirty linear' dirty 1 2 -c
298 abort: uncommitted changes
303 abort: uncommitted changes
299 parent=1
304 parent=1
300 M foo
305 M foo
301
306
302 $ revtest 'none dirty linear' dirty 1 2 -C
307 $ revtest 'none dirty linear' dirty 1 2 -C
303 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
308 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
304 parent=2
309 parent=2
305
310
306 Locally added file is allowed
311 Locally added file is allowed
307 $ hg up -qC 3
312 $ hg up -qC 3
308 $ echo a > bar
313 $ echo a > bar
309 $ hg add bar
314 $ hg add bar
310 $ hg up -q 4
315 $ hg up -q 4
311 $ hg st
316 $ hg st
312 A bar
317 A bar
313 $ hg forget bar
318 $ hg forget bar
314 $ rm bar
319 $ rm bar
315
320
316 Locally removed file is allowed
321 Locally removed file is allowed
317 $ hg up -qC 3
322 $ hg up -qC 3
318 $ hg rm foo
323 $ hg rm foo
319 $ hg up -q 4
324 $ hg up -q 4
320
325
321 File conflict is not allowed
326 File conflict is not allowed
322 $ hg up -qC 3
327 $ hg up -qC 3
323 $ echo dirty >> a
328 $ echo dirty >> a
324 $ hg up -q 4
329 $ hg up -q 4
325 abort: conflicting changes
330 abort: conflicting changes
326 (commit or update --clean to discard changes)
331 (commit or update --clean to discard changes)
327 [20]
332 [20]
328 $ hg up -m 4
333 $ hg up -m 4
329 merging a
334 merging a
330 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
335 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
331 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
336 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
332 use 'hg resolve' to retry unresolved file merges
337 use 'hg resolve' to retry unresolved file merges
333 [1]
338 [1]
334 $ rm a.orig
339 $ rm a.orig
335 $ hg status
340 $ hg status
336 M a
341 M a
337 # Unresolved merge conflicts:
342 # Unresolved merge conflicts:
338 #
343 #
339 # a
344 # a
340 #
345 #
341 # To mark files as resolved: hg resolve --mark FILE
346 # To mark files as resolved: hg resolve --mark FILE
342
347
343 $ hg resolve -l
348 $ hg resolve -l
344 U a
349 U a
345
350
346 Try to make empty commit while there are conflicts
351 Try to make empty commit while there are conflicts
347 $ hg revert -r . a
352 $ hg revert -r . a
348 $ rm a.orig
353 $ rm a.orig
349 $ hg ci -m empty
354 $ hg ci -m empty
350 abort: unresolved merge conflicts (see 'hg help resolve')
355 abort: unresolved merge conflicts (see 'hg help resolve')
351 [20]
356 [20]
352 $ hg resolve -m a
357 $ hg resolve -m a
353 (no more unresolved files)
358 (no more unresolved files)
354 $ hg resolve -l
359 $ hg resolve -l
355 R a
360 R a
356 $ hg ci -m empty
361 $ hg ci -m empty
357 nothing changed
362 nothing changed
358 [1]
363 [1]
359 $ hg resolve -l
364 $ hg resolve -l
360
365
361 Change/delete conflict is not allowed
366 Change/delete conflict is not allowed
362 $ hg up -qC 3
367 $ hg up -qC 3
363 $ hg rm foo
368 $ hg rm foo
364 $ hg up -q 4
369 $ hg up -q 4
365
370
366 Uses default value of "linear" when value is misspelled
371 Uses default value of "linear" when value is misspelled
367 $ echo 'update.check = linyar' >> .hg/hgrc
372 $ echo 'update.check = linyar' >> .hg/hgrc
368
373
369 $ revtest 'dirty cross' dirty 3 4
374 $ revtest 'dirty cross' dirty 3 4
370 abort: uncommitted changes
375 abort: uncommitted changes
371 (commit or update --clean to discard changes)
376 (commit or update --clean to discard changes)
372 parent=3
377 parent=3
373 M foo
378 M foo
374
379
375 Setup for later tests
380 Setup for later tests
376 $ revtest 'none dirty linear' dirty 1 2 -c
381 $ revtest 'none dirty linear' dirty 1 2 -c
377 abort: uncommitted changes
382 abort: uncommitted changes
378 parent=1
383 parent=1
379 M foo
384 M foo
380
385
381 $ cd ..
386 $ cd ..
382
387
383 Test updating to null revision
388 Test updating to null revision
384
389
385 $ hg init null-repo
390 $ hg init null-repo
386 $ cd null-repo
391 $ cd null-repo
387 $ echo a > a
392 $ echo a > a
388 $ hg add a
393 $ hg add a
389 $ hg ci -m a
394 $ hg ci -m a
390 $ hg up -qC 0
395 $ hg up -qC 0
391 $ echo b > b
396 $ echo b > b
392 $ hg add b
397 $ hg add b
393 $ hg up null
398 $ hg up null
394 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
399 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
395 $ hg st
400 $ hg st
396 A b
401 A b
397 $ hg up -q 0
402 $ hg up -q 0
398 $ hg st
403 $ hg st
399 A b
404 A b
400 $ hg up -qC null
405 $ hg up -qC null
401 $ hg st
406 $ hg st
402 ? b
407 ? b
403 $ cd ..
408 $ cd ..
404
409
405 Test updating with closed head
410 Test updating with closed head
406 ---------------------------------------------------------------------
411 ---------------------------------------------------------------------
407
412
408 $ hg clone -U -q b1 closed-heads
413 $ hg clone -U -q b1 closed-heads
409 $ cd closed-heads
414 $ cd closed-heads
410
415
411 Test updating if at least one non-closed branch head exists
416 Test updating if at least one non-closed branch head exists
412
417
413 if on the closed branch head:
418 if on the closed branch head:
414 - update to "."
419 - update to "."
415 - "updated to a closed branch head ...." message is displayed
420 - "updated to a closed branch head ...." message is displayed
416 - "N other heads for ...." message is displayed
421 - "N other heads for ...." message is displayed
417
422
418 $ hg update -q -C 3
423 $ hg update -q -C 3
419 $ hg commit --close-branch -m 6
424 $ hg commit --close-branch -m 6
420 $ norevtest "on closed branch head" clean 6
425 $ norevtest "on closed branch head" clean 6
421 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
426 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
422 no open descendant heads on branch "default", updating to a closed head
427 no open descendant heads on branch "default", updating to a closed head
423 (committing will reopen the head, use 'hg heads .' to see 1 other heads)
428 (committing will reopen the head, use 'hg heads .' to see 1 other heads)
424 parent=6
429 parent=6
425
430
426 if descendant non-closed branch head exists, and it is only one branch head:
431 if descendant non-closed branch head exists, and it is only one branch head:
427 - update to it, even if its revision is less than closed one
432 - update to it, even if its revision is less than closed one
428 - "N other heads for ...." message isn't displayed
433 - "N other heads for ...." message isn't displayed
429
434
430 $ norevtest "non-closed 2 should be chosen" clean 1
435 $ norevtest "non-closed 2 should be chosen" clean 1
431 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
436 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
432 parent=2
437 parent=2
433
438
434 if all descendant branch heads are closed, but there is another branch head:
439 if all descendant branch heads are closed, but there is another branch head:
435 - update to the tipmost descendant head
440 - update to the tipmost descendant head
436 - "updated to a closed branch head ...." message is displayed
441 - "updated to a closed branch head ...." message is displayed
437 - "N other heads for ...." message is displayed
442 - "N other heads for ...." message is displayed
438
443
439 $ norevtest "all descendant branch heads are closed" clean 3
444 $ norevtest "all descendant branch heads are closed" clean 3
440 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
445 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
441 no open descendant heads on branch "default", updating to a closed head
446 no open descendant heads on branch "default", updating to a closed head
442 (committing will reopen the head, use 'hg heads .' to see 1 other heads)
447 (committing will reopen the head, use 'hg heads .' to see 1 other heads)
443 parent=6
448 parent=6
444
449
445 Test updating if all branch heads are closed
450 Test updating if all branch heads are closed
446
451
447 if on the closed branch head:
452 if on the closed branch head:
448 - update to "."
453 - update to "."
449 - "updated to a closed branch head ...." message is displayed
454 - "updated to a closed branch head ...." message is displayed
450 - "all heads of branch ...." message is displayed
455 - "all heads of branch ...." message is displayed
451
456
452 $ hg update -q -C 2
457 $ hg update -q -C 2
453 $ hg commit --close-branch -m 7
458 $ hg commit --close-branch -m 7
454 $ norevtest "all heads of branch default are closed" clean 6
459 $ norevtest "all heads of branch default are closed" clean 6
455 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
460 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
456 no open descendant heads on branch "default", updating to a closed head
461 no open descendant heads on branch "default", updating to a closed head
457 (committing will reopen branch "default")
462 (committing will reopen branch "default")
458 parent=6
463 parent=6
459
464
460 if not on the closed branch head:
465 if not on the closed branch head:
461 - update to the tipmost descendant (closed) head
466 - update to the tipmost descendant (closed) head
462 - "updated to a closed branch head ...." message is displayed
467 - "updated to a closed branch head ...." message is displayed
463 - "all heads of branch ...." message is displayed
468 - "all heads of branch ...." message is displayed
464
469
465 $ norevtest "all heads of branch default are closed" clean 1
470 $ norevtest "all heads of branch default are closed" clean 1
466 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
471 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
467 no open descendant heads on branch "default", updating to a closed head
472 no open descendant heads on branch "default", updating to a closed head
468 (committing will reopen branch "default")
473 (committing will reopen branch "default")
469 parent=7
474 parent=7
470
475
471 $ cd ..
476 $ cd ..
472
477
473 Test updating if "default" branch doesn't exist and no revision is
478 Test updating if "default" branch doesn't exist and no revision is
474 checked out (= "default" is used as current branch)
479 checked out (= "default" is used as current branch)
475
480
476 $ hg init no-default-branch
481 $ hg init no-default-branch
477 $ cd no-default-branch
482 $ cd no-default-branch
478
483
479 $ hg branch foobar
484 $ hg branch foobar
480 marked working directory as branch foobar
485 marked working directory as branch foobar
481 (branches are permanent and global, did you want a bookmark?)
486 (branches are permanent and global, did you want a bookmark?)
482 $ echo a > a
487 $ echo a > a
483 $ hg commit -m "#0" -A
488 $ hg commit -m "#0" -A
484 adding a
489 adding a
485 $ echo 1 >> a
490 $ echo 1 >> a
486 $ hg commit -m "#1"
491 $ hg commit -m "#1"
487 $ hg update -q 0
492 $ hg update -q 0
488 $ echo 3 >> a
493 $ echo 3 >> a
489 $ hg commit -m "#2"
494 $ hg commit -m "#2"
490 created new head
495 created new head
491 $ hg commit --close-branch -m "#3"
496 $ hg commit --close-branch -m "#3"
492
497
493 if there is at least one non-closed branch head:
498 if there is at least one non-closed branch head:
494 - update to the tipmost branch head
499 - update to the tipmost branch head
495
500
496 $ norevtest "non-closed 1 should be chosen" clean null
501 $ norevtest "non-closed 1 should be chosen" clean null
497 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
502 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
498 parent=1
503 parent=1
499
504
500 if all branch heads are closed
505 if all branch heads are closed
501 - update to "tip"
506 - update to "tip"
502 - "updated to a closed branch head ...." message is displayed
507 - "updated to a closed branch head ...." message is displayed
503 - "all heads for branch "XXXX" are closed" message is displayed
508 - "all heads for branch "XXXX" are closed" message is displayed
504
509
505 $ hg update -q -C 1
510 $ hg update -q -C 1
506 $ hg commit --close-branch -m "#4"
511 $ hg commit --close-branch -m "#4"
507
512
508 $ norevtest "all branches are closed" clean null
513 $ norevtest "all branches are closed" clean null
509 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
514 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
510 no open descendant heads on branch "foobar", updating to a closed head
515 no open descendant heads on branch "foobar", updating to a closed head
511 (committing will reopen branch "foobar")
516 (committing will reopen branch "foobar")
512 parent=4
517 parent=4
513
518
514 $ cd ../b1
519 $ cd ../b1
515
520
516 Test obsolescence behavior
521 Test obsolescence behavior
517 ---------------------------------------------------------------------
522 ---------------------------------------------------------------------
518
523
519 successors should be taken in account when checking head destination
524 successors should be taken in account when checking head destination
520
525
521 $ cat << EOF >> $HGRCPATH
526 $ cat << EOF >> $HGRCPATH
522 > [ui]
527 > [ui]
523 > logtemplate={rev}:{node|short} {desc|firstline}
528 > logtemplate={rev}:{node|short} {desc|firstline}
524 > [experimental]
529 > [experimental]
525 > evolution.createmarkers=True
530 > evolution.createmarkers=True
526 > EOF
531 > EOF
527
532
528 Test no-argument update to a successor of an obsoleted changeset
533 Test no-argument update to a successor of an obsoleted changeset
529
534
530 $ hg log -G
535 $ hg log -G
531 o 5:ff252e8273df 5
536 o 5:ff252e8273df 5
532 |
537 |
533 o 4:d047485b3896 4
538 o 4:d047485b3896 4
534 |
539 |
535 | o 3:6efa171f091b 3
540 | o 3:6efa171f091b 3
536 | |
541 | |
537 | | o 2:bd10386d478c 2
542 | | o 2:bd10386d478c 2
538 | |/
543 | |/
539 | @ 1:0786582aa4b1 1
544 | @ 1:0786582aa4b1 1
540 |/
545 |/
541 o 0:60829823a42a 0
546 o 0:60829823a42a 0
542
547
543 $ hg book bm -r 3
548 $ hg book bm -r 3
544 $ hg status
549 $ hg status
545 M foo
550 M foo
546
551
547 We add simple obsolescence marker between 3 and 4 (indirect successors)
552 We add simple obsolescence marker between 3 and 4 (indirect successors)
548
553
549 $ hg id --debug -i -r 3
554 $ hg id --debug -i -r 3
550 6efa171f091b00a3c35edc15d48c52a498929953
555 6efa171f091b00a3c35edc15d48c52a498929953
551 $ hg id --debug -i -r 4
556 $ hg id --debug -i -r 4
552 d047485b3896813b2a624e86201983520f003206
557 d047485b3896813b2a624e86201983520f003206
553 $ hg debugobsolete 6efa171f091b00a3c35edc15d48c52a498929953 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
558 $ hg debugobsolete 6efa171f091b00a3c35edc15d48c52a498929953 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
554 1 new obsolescence markers
559 1 new obsolescence markers
555 obsoleted 1 changesets
560 obsoleted 1 changesets
556 $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d047485b3896813b2a624e86201983520f003206
561 $ hg debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa d047485b3896813b2a624e86201983520f003206
557 1 new obsolescence markers
562 1 new obsolescence markers
558
563
559 Test that 5 is detected as a valid destination from 3 and also accepts moving
564 Test that 5 is detected as a valid destination from 3 and also accepts moving
560 the bookmark (issue4015)
565 the bookmark (issue4015)
561
566
562 $ hg up --quiet --hidden 3
567 $ hg up --quiet --hidden 3
563 $ hg up 5
568 $ hg up 5
564 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
569 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
565 $ hg book bm
570 $ hg book bm
566 moving bookmark 'bm' forward from 6efa171f091b
571 moving bookmark 'bm' forward from 6efa171f091b
567 $ hg bookmarks
572 $ hg bookmarks
568 * bm 5:ff252e8273df
573 * bm 5:ff252e8273df
569
574
570 Test that we abort before we warn about the hidden commit if the working
575 Test that we abort before we warn about the hidden commit if the working
571 directory is dirty
576 directory is dirty
572 $ echo conflict > a
577 $ echo conflict > a
573 $ hg up --hidden 3
578 $ hg up --hidden 3
574 abort: uncommitted changes
579 abort: uncommitted changes
575 (commit or update --clean to discard changes)
580 (commit or update --clean to discard changes)
576 [255]
581 [255]
577
582
578 Test that we still warn also when there are conflicts
583 Test that we still warn also when there are conflicts
579 $ hg up -m --hidden 3
584 $ hg up -m --hidden 3
580 merging a
585 merging a
581 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
586 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
582 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
587 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
583 use 'hg resolve' to retry unresolved file merges
588 use 'hg resolve' to retry unresolved file merges
584 (leaving bookmark bm)
589 (leaving bookmark bm)
585 updated to hidden changeset 6efa171f091b
590 updated to hidden changeset 6efa171f091b
586 (hidden revision '6efa171f091b' was rewritten as: d047485b3896)
591 (hidden revision '6efa171f091b' was rewritten as: d047485b3896)
587 [1]
592 [1]
588
593
589 Test that statuses are reported properly before and after merge resolution.
594 Test that statuses are reported properly before and after merge resolution.
590 $ rm a.orig
595 $ rm a.orig
591 $ hg resolve -l
596 $ hg resolve -l
592 U a
597 U a
593 $ hg status
598 $ hg status
594 M a
599 M a
595 M foo
600 M foo
596 # Unresolved merge conflicts:
601 # Unresolved merge conflicts:
597 #
602 #
598 # a
603 # a
599 #
604 #
600 # To mark files as resolved: hg resolve --mark FILE
605 # To mark files as resolved: hg resolve --mark FILE
601
606
602
607
603 $ hg revert -r . a
608 $ hg revert -r . a
604
609
605 $ rm a.orig
610 $ rm a.orig
606 $ hg resolve -l
611 $ hg resolve -l
607 U a
612 U a
608 $ hg status
613 $ hg status
609 M foo
614 M foo
610 # Unresolved merge conflicts:
615 # Unresolved merge conflicts:
611 #
616 #
612 # a
617 # a
613 #
618 #
614 # To mark files as resolved: hg resolve --mark FILE
619 # To mark files as resolved: hg resolve --mark FILE
615
620
616 $ hg status -Tjson
621 $ hg status -Tjson
617 [
622 [
618 {
623 {
619 "itemtype": "file",
624 "itemtype": "file",
620 "path": "foo",
625 "path": "foo",
621 "status": "M"
626 "status": "M"
622 },
627 },
623 {
628 {
624 "itemtype": "file",
629 "itemtype": "file",
625 "path": "a",
630 "path": "a",
626 "unresolved": true
631 "unresolved": true
627 }
632 }
628 ]
633 ]
629
634
630 $ hg resolve -m
635 $ hg resolve -m
631 (no more unresolved files)
636 (no more unresolved files)
632
637
633 $ hg resolve -l
638 $ hg resolve -l
634 R a
639 R a
635 $ hg status
640 $ hg status
636 M foo
641 M foo
637 # No unresolved merge conflicts.
642 # No unresolved merge conflicts.
638
643
639 $ hg status -Tjson
644 $ hg status -Tjson
640 [
645 [
641 {
646 {
642 "itemtype": "file",
647 "itemtype": "file",
643 "path": "foo",
648 "path": "foo",
644 "status": "M"
649 "status": "M"
645 }
650 }
646 ]
651 ]
647
652
648 Test that 4 is detected as the no-argument destination from 3 and also moves
653 Test that 4 is detected as the no-argument destination from 3 and also moves
649 the bookmark with it
654 the bookmark with it
650 $ hg up --quiet 0 # we should be able to update to 3 directly
655 $ hg up --quiet 0 # we should be able to update to 3 directly
651 $ hg status
656 $ hg status
652 M foo
657 M foo
653 $ hg up --quiet --hidden 3 # but not implemented yet.
658 $ hg up --quiet --hidden 3 # but not implemented yet.
654 updated to hidden changeset 6efa171f091b
659 updated to hidden changeset 6efa171f091b
655 (hidden revision '6efa171f091b' was rewritten as: d047485b3896)
660 (hidden revision '6efa171f091b' was rewritten as: d047485b3896)
656 $ hg book -f bm
661 $ hg book -f bm
657 $ hg up
662 $ hg up
658 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
663 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
659 updating bookmark bm
664 updating bookmark bm
660 $ hg book
665 $ hg book
661 * bm 4:d047485b3896
666 * bm 4:d047485b3896
662
667
663 Test that 5 is detected as a valid destination from 1
668 Test that 5 is detected as a valid destination from 1
664 $ hg up --quiet 0 # we should be able to update to 3 directly
669 $ hg up --quiet 0 # we should be able to update to 3 directly
665 $ hg up --quiet --hidden 3 # but not implemented yet.
670 $ hg up --quiet --hidden 3 # but not implemented yet.
666 updated to hidden changeset 6efa171f091b
671 updated to hidden changeset 6efa171f091b
667 (hidden revision '6efa171f091b' was rewritten as: d047485b3896)
672 (hidden revision '6efa171f091b' was rewritten as: d047485b3896)
668 $ hg up 5
673 $ hg up 5
669 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
674 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
670
675
671 Test that 5 is not detected as a valid destination from 2
676 Test that 5 is not detected as a valid destination from 2
672 $ hg up --quiet 0
677 $ hg up --quiet 0
673 $ hg up --quiet 2
678 $ hg up --quiet 2
674 $ hg up 5
679 $ hg up 5
675 abort: uncommitted changes
680 abort: uncommitted changes
676 (commit or update --clean to discard changes)
681 (commit or update --clean to discard changes)
677 [255]
682 [255]
678
683
679 Test that we don't crash when updating from a pruned changeset (i.e. has no
684 Test that we don't crash when updating from a pruned changeset (i.e. has no
680 successors). Behavior should probably be that we update to the first
685 successors). Behavior should probably be that we update to the first
681 non-obsolete parent but that will be decided later.
686 non-obsolete parent but that will be decided later.
682 $ hg id --debug -r 2
687 $ hg id --debug -r 2
683 bd10386d478cd5a9faf2e604114c8e6da62d3889
688 bd10386d478cd5a9faf2e604114c8e6da62d3889
684 $ hg up --quiet 0
689 $ hg up --quiet 0
685 $ hg up --quiet 2
690 $ hg up --quiet 2
686 $ hg debugobsolete bd10386d478cd5a9faf2e604114c8e6da62d3889
691 $ hg debugobsolete bd10386d478cd5a9faf2e604114c8e6da62d3889
687 1 new obsolescence markers
692 1 new obsolescence markers
688 obsoleted 1 changesets
693 obsoleted 1 changesets
689 $ hg up
694 $ hg up
690 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
695 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
691
696
692 Test experimental revset support
697 Test experimental revset support
693
698
694 $ hg log -r '_destupdate()'
699 $ hg log -r '_destupdate()'
695 2:bd10386d478c 2 (no-eol)
700 2:bd10386d478c 2 (no-eol)
696
701
697 Test that boolean flags allow --no-flag specification to override [defaults]
702 Test that boolean flags allow --no-flag specification to override [defaults]
698 $ cat >> $HGRCPATH <<EOF
703 $ cat >> $HGRCPATH <<EOF
699 > [defaults]
704 > [defaults]
700 > update = --check
705 > update = --check
701 > EOF
706 > EOF
702 $ hg co 2
707 $ hg co 2
703 abort: uncommitted changes
708 abort: uncommitted changes
704 [20]
709 [20]
705 $ hg co --no-check 2
710 $ hg co --no-check 2
706 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
711 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
General Comments 0
You need to be logged in to leave comments. Login now