comparison tests/test-rebase-detach.t @ 33560:d4df141f90d1

tests: rewrite test-rebase-detach.t using drawdag This makes it much clearer because each test case can have exactly the graph it wants (no extra cruft just because other tests want it). Differential Revision: https://phab.mercurial-scm.org/D94
author Martin von Zweigbergk <martinvonz@google.com>
date Fri, 14 Jul 2017 21:44:29 -0700
parents 094634292d34
children 469b06b4c3ca
comparison
equal deleted inserted replaced
33559:094634292d34 33560:d4df141f90d1
2 > [extensions] 2 > [extensions]
3 > rebase= 3 > rebase=
4 > 4 >
5 > [alias] 5 > [alias]
6 > tglog = log -G --template "{rev}: '{desc}'\n" 6 > tglog = log -G --template "{rev}: '{desc}'\n"
7 > EOF 7 >
8 8 > [extensions]
9 9 > drawdag=$TESTDIR/drawdag.py
10 $ hg init a 10 > EOF
11 $ cd a 11
12 $ hg unbundle "$TESTDIR/bundles/rebase.hg" 12 Rebasing D onto B detaching from C (one commit):
13 adding changesets 13
14 adding manifests 14 $ hg init a1
15 adding file changes
16 added 8 changesets with 7 changes to 7 files (+2 heads)
17 (run 'hg heads' to see heads, 'hg merge' to merge)
18 $ hg up tip
19 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
20
21 $ cd ..
22
23
24 Rebasing D onto H detaching from C:
25
26 $ hg clone -q -u . a a1
27 $ cd a1 15 $ cd a1
28 16
29 $ hg tglog 17 $ hg debugdrawdag <<EOF
30 @ 7: 'H' 18 > D
31 | 19 > |
32 | o 6: 'G' 20 > C B
33 |/| 21 > |/
34 o | 5: 'F' 22 > A
35 | | 23 > EOF
36 | o 4: 'E' 24 $ hg phase --force --secret D
37 |/ 25
38 | o 3: 'D' 26 $ hg rebase -s D -d B
39 | | 27 rebasing 3:e7b3f00ed42e "D" (D tip)
40 | o 2: 'C' 28 saved backup bundle to $TESTTMP/a1/.hg/strip-backup/e7b3f00ed42e-6f368371-rebase.hg (glob)
41 | |
42 | o 1: 'B'
43 |/
44 o 0: 'A'
45
46 $ hg phase --force --secret 3
47 $ hg rebase -s 3 -d 7
48 rebasing 3:32af7686d403 "D"
49 saved backup bundle to $TESTTMP/a1/.hg/strip-backup/32af7686d403-6f7dface-rebase.hg (glob)
50 29
51 $ hg log -G --template "{rev}:{phase} '{desc}' {branches}\n" 30 $ hg log -G --template "{rev}:{phase} '{desc}' {branches}\n"
52 o 7:secret 'D' 31 o 3:secret 'D'
53 | 32 |
54 @ 6:draft 'H'
55 |
56 | o 5:draft 'G'
57 |/|
58 o | 4:draft 'F'
59 | |
60 | o 3:draft 'E'
61 |/
62 | o 2:draft 'C' 33 | o 2:draft 'C'
63 | | 34 | |
64 | o 1:draft 'B' 35 o | 1:draft 'B'
65 |/ 36 |/
66 o 0:draft 'A' 37 o 0:draft 'A'
67 38
68 $ hg manifest --rev tip 39 $ hg manifest --rev tip
69 A 40 A
41 B
70 D 42 D
71 F 43
72 H 44 $ cd ..
73 45
74 $ cd .. 46
75 47 Rebasing D onto B detaching from C (two commits):
76 48
77 Rebasing C onto H detaching from B: 49 $ hg init a2
78
79 $ hg clone -q -u . a a2
80 $ cd a2 50 $ cd a2
81 51
82 $ hg tglog 52 $ hg debugdrawdag <<EOF
83 @ 7: 'H' 53 > E
84 | 54 > |
85 | o 6: 'G' 55 > D
86 |/| 56 > |
87 o | 5: 'F' 57 > C B
88 | | 58 > |/
89 | o 4: 'E' 59 > A
90 |/ 60 > EOF
91 | o 3: 'D' 61
92 | | 62 $ hg rebase -s D -d B
63 rebasing 3:e7b3f00ed42e "D" (D)
64 rebasing 4:69a34c08022a "E" (E tip)
65 saved backup bundle to $TESTTMP/a2/.hg/strip-backup/e7b3f00ed42e-a2ec7cea-rebase.hg (glob)
66
67 $ hg tglog
68 o 4: 'E'
69 |
70 o 3: 'D'
71 |
93 | o 2: 'C' 72 | o 2: 'C'
94 | | 73 | |
95 | o 1: 'B' 74 o | 1: 'B'
96 |/
97 o 0: 'A'
98
99 $ hg rebase -s 2 -d 7
100 rebasing 2:5fddd98957c8 "C"
101 rebasing 3:32af7686d403 "D"
102 saved backup bundle to $TESTTMP/a2/.hg/strip-backup/5fddd98957c8-f9244fa1-rebase.hg (glob)
103
104 $ hg tglog
105 o 7: 'D'
106 |
107 o 6: 'C'
108 |
109 @ 5: 'H'
110 |
111 | o 4: 'G'
112 |/|
113 o | 3: 'F'
114 | |
115 | o 2: 'E'
116 |/
117 | o 1: 'B'
118 |/ 75 |/
119 o 0: 'A' 76 o 0: 'A'
120 77
121 $ hg manifest --rev tip 78 $ hg manifest --rev tip
122 A 79 A
123 C 80 B
124 D 81 D
125 F 82 E
126 H 83
127 84 $ cd ..
128 $ cd .. 85
129 86 Rebasing C onto B using detach (same as not using it):
130 87
131 Rebasing B onto H using detach (same as not using it): 88 $ hg init a3
132
133 $ hg clone -q -u . a a3
134 $ cd a3 89 $ cd a3
135 90
136 $ hg tglog 91 $ hg debugdrawdag <<EOF
137 @ 7: 'H' 92 > D
138 | 93 > |
139 | o 6: 'G' 94 > C B
140 |/| 95 > |/
141 o | 5: 'F' 96 > A
142 | | 97 > EOF
143 | o 4: 'E' 98
144 |/ 99 $ hg rebase -s C -d B
145 | o 3: 'D' 100 rebasing 2:dc0947a82db8 "C" (C)
146 | | 101 rebasing 3:e7b3f00ed42e "D" (D tip)
147 | o 2: 'C' 102 saved backup bundle to $TESTTMP/a3/.hg/strip-backup/dc0947a82db8-b8481714-rebase.hg (glob)
148 | | 103
149 | o 1: 'B' 104 $ hg tglog
150 |/ 105 o 3: 'D'
151 o 0: 'A' 106 |
152 107 o 2: 'C'
153 $ hg rebase -s 1 -d 7 108 |
154 rebasing 1:42ccdea3bb16 "B" 109 o 1: 'B'
155 rebasing 2:5fddd98957c8 "C" 110 |
156 rebasing 3:32af7686d403 "D"
157 saved backup bundle to $TESTTMP/a3/.hg/strip-backup/42ccdea3bb16-3cb021d3-rebase.hg (glob)
158
159 $ hg tglog
160 o 7: 'D'
161 |
162 o 6: 'C'
163 |
164 o 5: 'B'
165 |
166 @ 4: 'H'
167 |
168 | o 3: 'G'
169 |/|
170 o | 2: 'F'
171 | |
172 | o 1: 'E'
173 |/
174 o 0: 'A' 111 o 0: 'A'
175 112
176 $ hg manifest --rev tip 113 $ hg manifest --rev tip
177 A 114 A
178 B 115 B
179 C 116 C
180 D 117 D
181 F 118
182 H 119 $ cd ..
183 120
184 $ cd .. 121
185 122 Rebasing D onto B detaching from C and collapsing:
186 123
187 Rebasing C onto H detaching from B and collapsing: 124 $ hg init a4
188
189 $ hg clone -q -u . a a4
190 $ cd a4 125 $ cd a4
191 $ hg phase --force --secret 3 126
192 127 $ hg debugdrawdag <<EOF
193 $ hg tglog 128 > E
194 @ 7: 'H' 129 > |
195 | 130 > D
196 | o 6: 'G' 131 > |
197 |/| 132 > C B
198 o | 5: 'F' 133 > |/
199 | | 134 > A
200 | o 4: 'E' 135 > EOF
201 |/ 136 $ hg phase --force --secret E
202 | o 3: 'D' 137
203 | | 138 $ hg rebase --collapse -s D -d B
204 | o 2: 'C' 139 rebasing 3:e7b3f00ed42e "D" (D)
205 | | 140 rebasing 4:69a34c08022a "E" (E tip)
206 | o 1: 'B' 141 saved backup bundle to $TESTTMP/a4/.hg/strip-backup/e7b3f00ed42e-a2ec7cea-rebase.hg (glob)
207 |/
208 o 0: 'A'
209
210 $ hg rebase --collapse -s 2 -d 7
211 rebasing 2:5fddd98957c8 "C"
212 rebasing 3:32af7686d403 "D"
213 saved backup bundle to $TESTTMP/a4/.hg/strip-backup/5fddd98957c8-f9244fa1-rebase.hg (glob)
214 142
215 $ hg log -G --template "{rev}:{phase} '{desc}' {branches}\n" 143 $ hg log -G --template "{rev}:{phase} '{desc}' {branches}\n"
216 o 6:secret 'Collapsed revision 144 o 3:secret 'Collapsed revision
217 | * C 145 | * D
218 | * D' 146 | * E'
219 @ 5:draft 'H' 147 | o 2:draft 'C'
220 | 148 | |
221 | o 4:draft 'G' 149 o | 1:draft 'B'
222 |/|
223 o | 3:draft 'F'
224 | |
225 | o 2:draft 'E'
226 |/
227 | o 1:draft 'B'
228 |/ 150 |/
229 o 0:draft 'A' 151 o 0:draft 'A'
230 152
231 $ hg manifest --rev tip 153 $ hg manifest --rev tip
232 A 154 A
233 C 155 B
234 D 156 D
235 F 157 E
236 H
237 158
238 $ cd .. 159 $ cd ..
239 160
240 Rebasing across null as ancestor 161 Rebasing across null as ancestor
241 $ hg clone -q -U a a5 162 $ hg init a5
242
243 $ cd a5 163 $ cd a5
244 164
245 $ echo x > x 165 $ hg debugdrawdag <<EOF
246 166 > E
247 $ hg add x 167 > |
248 168 > D
249 $ hg ci -m "extra branch" 169 > |
250 created new head 170 > C
251 171 > |
252 $ hg tglog 172 > A B
253 @ 8: 'extra branch' 173 > EOF
254 174
255 o 7: 'H' 175 $ hg rebase -s C -d B
256 | 176 rebasing 2:dc0947a82db8 "C" (C)
257 | o 6: 'G' 177 rebasing 3:e7b3f00ed42e "D" (D)
258 |/| 178 rebasing 4:69a34c08022a "E" (E tip)
259 o | 5: 'F' 179 saved backup bundle to $TESTTMP/a5/.hg/strip-backup/dc0947a82db8-3eefec98-rebase.hg (glob)
260 | | 180
261 | o 4: 'E' 181 $ hg tglog
262 |/ 182 o 4: 'E'
263 | o 3: 'D' 183 |
264 | | 184 o 3: 'D'
185 |
186 o 2: 'C'
187 |
188 o 1: 'B'
189
190 o 0: 'A'
191
192 $ hg rebase -d 1 -s 3
193 rebasing 3:e9153d36a1af "D"
194 rebasing 4:e3d0c70d606d "E" (tip)
195 saved backup bundle to $TESTTMP/a5/.hg/strip-backup/e9153d36a1af-db7388ed-rebase.hg (glob)
196 $ hg tglog
197 o 4: 'E'
198 |
199 o 3: 'D'
200 |
265 | o 2: 'C' 201 | o 2: 'C'
266 | | 202 |/
267 | o 1: 'B' 203 o 1: 'B'
268 |/ 204
269 o 0: 'A'
270
271 $ hg rebase -s 1 -d tip
272 rebasing 1:42ccdea3bb16 "B"
273 rebasing 2:5fddd98957c8 "C"
274 rebasing 3:32af7686d403 "D"
275 saved backup bundle to $TESTTMP/a5/.hg/strip-backup/42ccdea3bb16-3cb021d3-rebase.hg (glob)
276
277 $ hg tglog
278 o 8: 'D'
279 |
280 o 7: 'C'
281 |
282 o 6: 'B'
283 |
284 @ 5: 'extra branch'
285
286 o 4: 'H'
287 |
288 | o 3: 'G'
289 |/|
290 o | 2: 'F'
291 | |
292 | o 1: 'E'
293 |/
294 o 0: 'A'
295
296
297 $ hg rebase -d 5 -s 7
298 rebasing 7:13547172c9c0 "C"
299 rebasing 8:4e27a76c371a "D" (tip)
300 saved backup bundle to $TESTTMP/a5/.hg/strip-backup/13547172c9c0-35685ded-rebase.hg (glob)
301 $ hg tglog
302 o 8: 'D'
303 |
304 o 7: 'C'
305 |
306 | o 6: 'B'
307 |/
308 @ 5: 'extra branch'
309
310 o 4: 'H'
311 |
312 | o 3: 'G'
313 |/|
314 o | 2: 'F'
315 | |
316 | o 1: 'E'
317 |/
318 o 0: 'A' 205 o 0: 'A'
319 206
320 $ cd .. 207 $ cd ..
321 208
322 Verify that target is not selected as external rev (issue3085) 209 Verify that target is not selected as external rev (issue3085)
323 210
324 $ hg clone -q -U a a6 211 $ hg init a6
325 $ cd a6 212 $ cd a6
326 $ hg up -q 6 213
214 $ hg debugdrawdag <<EOF
215 > H
216 > | G
217 > |/|
218 > F E
219 > |/
220 > A
221 > EOF
222 $ hg up -q G
327 223
328 $ echo "I" >> E 224 $ echo "I" >> E
329 $ hg ci -m "I" 225 $ hg ci -m "I"
330 $ hg merge 7 226 $ hg tag --local I
227 $ hg merge H
331 1 files updated, 0 files merged, 0 files removed, 0 files unresolved 228 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
332 (branch merge, don't forget to commit) 229 (branch merge, don't forget to commit)
333 $ hg ci -m "Merge" 230 $ hg ci -m "Merge"
334 $ echo "J" >> F 231 $ echo "J" >> F
335 $ hg ci -m "J" 232 $ hg ci -m "J"
336 233 $ hg tglog
337 $ hg rebase -s 8 -d 7 --collapse --config ui.merge=internal:other 234 @ 7: 'J'
338 rebasing 8:9790e768172d "I" 235 |
339 rebasing 9:5d7b11f5fb97 "Merge" 236 o 6: 'Merge'
340 rebasing 10:9427d4d5af81 "J" (tip) 237 |\
341 saved backup bundle to $TESTTMP/a6/.hg/strip-backup/9790e768172d-c2111e9d-rebase.hg (glob) 238 | o 5: 'I'
342 239 | |
343 $ hg tglog 240 o | 4: 'H'
344 @ 8: 'Collapsed revision 241 | |
242 | o 3: 'G'
243 |/|
244 o | 2: 'F'
245 | |
246 | o 1: 'E'
247 |/
248 o 0: 'A'
249
250 $ hg rebase -s I -d H --collapse --config ui.merge=internal:other
251 rebasing 5:b92d164ad3cb "I" (I)
252 rebasing 6:0cfbc7e8faaf "Merge"
253 rebasing 7:c6aaf0d259c0 "J" (tip)
254 saved backup bundle to $TESTTMP/a6/.hg/strip-backup/b92d164ad3cb-88fd7ab7-rebase.hg (glob)
255
256 $ hg tglog
257 @ 5: 'Collapsed revision
345 | * I 258 | * I
346 | * Merge 259 | * Merge
347 | * J' 260 | * J'
348 o 7: 'H' 261 o 4: 'H'
349 | 262 |
350 | o 6: 'G' 263 | o 3: 'G'
351 |/| 264 |/|
352 o | 5: 'F' 265 o | 2: 'F'
353 | | 266 | |
354 | o 4: 'E' 267 | o 1: 'E'
355 |/
356 | o 3: 'D'
357 | |
358 | o 2: 'C'
359 | |
360 | o 1: 'B'
361 |/ 268 |/
362 o 0: 'A' 269 o 0: 'A'
363 270
364 271
365 $ hg log --rev tip 272 $ hg log --rev tip
366 changeset: 8:9472f4b1d736 273 changeset: 5:65079693dac4
367 tag: tip 274 tag: tip
368 user: test 275 user: test
369 date: Thu Jan 01 00:00:00 1970 +0000 276 date: Thu Jan 01 00:00:00 1970 +0000
370 summary: Collapsed revision 277 summary: Collapsed revision
371 278
372 279
373 $ cd .. 280 $ cd ..
374 281
375 Ensure --continue restores a correct state (issue3046) and phase: 282 Ensure --continue restores a correct state (issue3046) and phase:
376 $ hg clone -q a a7 283 $ hg init a7
377 $ cd a7 284 $ cd a7
378 $ hg up -q 3 285
379 $ echo 'H2' > H 286 $ hg debugdrawdag <<EOF
380 $ hg ci -A -m 'H2' 287 > C B
381 adding H 288 > |/
382 $ hg phase --force --secret 8 289 > A
383 $ hg rebase -s 8 -d 7 --config ui.merge=internal:fail 290 > EOF
384 rebasing 8:6215fafa5447 "H2" (tip) 291 $ hg up -q C
385 merging H 292 $ echo 'B2' > B
386 warning: conflicts while merging H! (edit, then use 'hg resolve --mark') 293 $ hg ci -A -m 'B2'
294 adding B
295 $ hg phase --force --secret .
296 $ hg rebase -s . -d B --config ui.merge=internal:fail
297 rebasing 3:17b4880d2402 "B2" (tip)
298 merging B
299 warning: conflicts while merging B! (edit, then use 'hg resolve --mark')
387 unresolved conflicts (see hg resolve, then hg rebase --continue) 300 unresolved conflicts (see hg resolve, then hg rebase --continue)
388 [1] 301 [1]
389 $ hg resolve --all -t internal:local 302 $ hg resolve --all -t internal:local
390 (no more unresolved files) 303 (no more unresolved files)
391 continue: hg rebase --continue 304 continue: hg rebase --continue
392 $ hg rebase -c 305 $ hg rebase -c
393 rebasing 8:6215fafa5447 "H2" (tip) 306 rebasing 3:17b4880d2402 "B2" (tip)
394 note: rebase of 8:6215fafa5447 created no changes to commit 307 note: rebase of 3:17b4880d2402 created no changes to commit
395 saved backup bundle to $TESTTMP/a7/.hg/strip-backup/6215fafa5447-5804ebd5-rebase.hg (glob) 308 saved backup bundle to $TESTTMP/a7/.hg/strip-backup/17b4880d2402-1ae1f6cc-rebase.hg (glob)
396 $ hg log -G --template "{rev}:{phase} '{desc}' {branches}\n" 309 $ hg log -G --template "{rev}:{phase} '{desc}' {branches}\n"
397 @ 7:draft 'H' 310 o 2:draft 'C'
398 | 311 |
399 | o 6:draft 'G' 312 | @ 1:draft 'B'
400 |/|
401 o | 5:draft 'F'
402 | |
403 | o 4:draft 'E'
404 |/
405 | o 3:draft 'D'
406 | |
407 | o 2:draft 'C'
408 | |
409 | o 1:draft 'B'
410 |/ 313 |/
411 o 0:draft 'A' 314 o 0:draft 'A'
412 315
413 316
414 $ cd .. 317 $ cd ..