##// END OF EJS Templates
test-rebase: add another test for rebase with multiple roots...
Pierre-Yves David -
r18472:37100f30 stable
parent child Browse files
Show More
@@ -1,387 +1,458 b''
1 1 ==========================
2 2 Test rebase with obsolete
3 3 ==========================
4 4
5 5 Enable obsolete
6 6
7 7 $ cat > ${TESTTMP}/obs.py << EOF
8 8 > import mercurial.obsolete
9 9 > mercurial.obsolete._enabled = True
10 10 > EOF
11 11 $ cat >> $HGRCPATH << EOF
12 12 > [ui]
13 13 > logtemplate= {rev}:{node|short} {desc|firstline}
14 14 > [phases]
15 15 > publish=False
16 16 > [extensions]'
17 17 > rebase=
18 18 >
19 19 > obs=${TESTTMP}/obs.py
20 20 > EOF
21 21
22 22 Setup rebase canonical repo
23 23
24 24 $ hg init base
25 25 $ cd base
26 26 $ hg unbundle "$TESTDIR/bundles/rebase.hg"
27 27 adding changesets
28 28 adding manifests
29 29 adding file changes
30 30 added 8 changesets with 7 changes to 7 files (+2 heads)
31 31 (run 'hg heads' to see heads, 'hg merge' to merge)
32 32 $ hg up tip
33 33 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
34 34 $ hg log -G
35 35 @ 7:02de42196ebe H
36 36 |
37 37 | o 6:eea13746799a G
38 38 |/|
39 39 o | 5:24b6387c8c8c F
40 40 | |
41 41 | o 4:9520eea781bc E
42 42 |/
43 43 | o 3:32af7686d403 D
44 44 | |
45 45 | o 2:5fddd98957c8 C
46 46 | |
47 47 | o 1:42ccdea3bb16 B
48 48 |/
49 49 o 0:cd010b8cd998 A
50 50
51 51 $ cd ..
52 52
53 53 simple rebase
54 54 ---------------------------------
55 55
56 56 $ hg clone base simple
57 57 updating to branch default
58 58 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
59 59 $ cd simple
60 60 $ hg up 32af7686d403
61 61 3 files updated, 0 files merged, 2 files removed, 0 files unresolved
62 62 $ hg rebase -d eea13746799a
63 63 $ hg log -G
64 64 @ 10:8eeb3c33ad33 D
65 65 |
66 66 o 9:2327fea05063 C
67 67 |
68 68 o 8:e4e5be0395b2 B
69 69 |
70 70 | o 7:02de42196ebe H
71 71 | |
72 72 o | 6:eea13746799a G
73 73 |\|
74 74 | o 5:24b6387c8c8c F
75 75 | |
76 76 o | 4:9520eea781bc E
77 77 |/
78 78 o 0:cd010b8cd998 A
79 79
80 80 $ hg log --hidden -G
81 81 @ 10:8eeb3c33ad33 D
82 82 |
83 83 o 9:2327fea05063 C
84 84 |
85 85 o 8:e4e5be0395b2 B
86 86 |
87 87 | o 7:02de42196ebe H
88 88 | |
89 89 o | 6:eea13746799a G
90 90 |\|
91 91 | o 5:24b6387c8c8c F
92 92 | |
93 93 o | 4:9520eea781bc E
94 94 |/
95 95 | x 3:32af7686d403 D
96 96 | |
97 97 | x 2:5fddd98957c8 C
98 98 | |
99 99 | x 1:42ccdea3bb16 B
100 100 |/
101 101 o 0:cd010b8cd998 A
102 102
103 103 $ hg debugobsolete
104 104 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 e4e5be0395b2cbd471ed22a26b1b6a1a0658a794 0 {'date': '*', 'user': 'test'} (glob)
105 105 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 2327fea05063f39961b14cb69435a9898dc9a245 0 {'date': '*', 'user': 'test'} (glob)
106 106 32af7686d403cf45b5d95f2d70cebea587ac806a 8eeb3c33ad33d452c89e5dcf611c347f978fb42b 0 {'date': '*', 'user': 'test'} (glob)
107 107
108 108
109 109 $ cd ..
110 110
111 111 empty changeset
112 112 ---------------------------------
113 113
114 114 $ hg clone base empty
115 115 updating to branch default
116 116 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
117 117 $ cd empty
118 118 $ hg up eea13746799a
119 119 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
120 120
121 121 We make a copy of both the first changeset in the rebased and some other in the
122 122 set.
123 123
124 124 $ hg graft 42ccdea3bb16 32af7686d403
125 125 grafting revision 1
126 126 grafting revision 3
127 127 $ hg rebase -s 42ccdea3bb16 -d .
128 128 $ hg log -G
129 129 @ 10:5ae4c968c6ac C
130 130 |
131 131 o 9:08483444fef9 D
132 132 |
133 133 o 8:8877864f1edb B
134 134 |
135 135 | o 7:02de42196ebe H
136 136 | |
137 137 o | 6:eea13746799a G
138 138 |\|
139 139 | o 5:24b6387c8c8c F
140 140 | |
141 141 o | 4:9520eea781bc E
142 142 |/
143 143 o 0:cd010b8cd998 A
144 144
145 145 $ hg log --hidden -G
146 146 @ 10:5ae4c968c6ac C
147 147 |
148 148 o 9:08483444fef9 D
149 149 |
150 150 o 8:8877864f1edb B
151 151 |
152 152 | o 7:02de42196ebe H
153 153 | |
154 154 o | 6:eea13746799a G
155 155 |\|
156 156 | o 5:24b6387c8c8c F
157 157 | |
158 158 o | 4:9520eea781bc E
159 159 |/
160 160 | x 3:32af7686d403 D
161 161 | |
162 162 | x 2:5fddd98957c8 C
163 163 | |
164 164 | x 1:42ccdea3bb16 B
165 165 |/
166 166 o 0:cd010b8cd998 A
167 167
168 168 $ hg debugobsolete
169 169 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 0 {'date': '*', 'user': 'test'} (glob)
170 170 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 5ae4c968c6aca831df823664e706c9d4aa34473d 0 {'date': '*', 'user': 'test'} (glob)
171 171 32af7686d403cf45b5d95f2d70cebea587ac806a 0 {'date': '*', 'user': 'test'} (glob)
172 172
173 173
174 174 More complex case were part of the rebase set were already rebased
175 175
176 176 $ hg rebase --rev 'desc(D)' --dest 'desc(H)'
177 177 $ hg debugobsolete
178 178 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 0 {'date': '*', 'user': 'test'} (glob)
179 179 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 5ae4c968c6aca831df823664e706c9d4aa34473d 0 {'date': '*', 'user': 'test'} (glob)
180 180 32af7686d403cf45b5d95f2d70cebea587ac806a 0 {'date': '*', 'user': 'test'} (glob)
181 181 08483444fef91d6224f6655ee586a65d263ad34c cbc07f26687521cecfc9a141bf5ecfc0fd2b8531 0 {'date': '* *', 'user': 'test'} (glob)
182 182 $ hg log -G
183 183 @ 11:cbc07f266875 D
184 184 |
185 185 | o 10:5ae4c968c6ac C
186 186 | |
187 187 | x 9:08483444fef9 D
188 188 | |
189 189 | o 8:8877864f1edb B
190 190 | |
191 191 o | 7:02de42196ebe H
192 192 | |
193 193 | o 6:eea13746799a G
194 194 |/|
195 195 o | 5:24b6387c8c8c F
196 196 | |
197 197 | o 4:9520eea781bc E
198 198 |/
199 199 o 0:cd010b8cd998 A
200 200
201 201 $ hg rebase --source 'desc(B)' --dest 'tip'
202 202 $ hg debugobsolete
203 203 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 0 {'date': '* *', 'user': 'test'} (glob)
204 204 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 5ae4c968c6aca831df823664e706c9d4aa34473d 0 {'date': '* *', 'user': 'test'} (glob)
205 205 32af7686d403cf45b5d95f2d70cebea587ac806a 0 {'date': '* *', 'user': 'test'} (glob)
206 206 08483444fef91d6224f6655ee586a65d263ad34c cbc07f26687521cecfc9a141bf5ecfc0fd2b8531 0 {'date': '* *', 'user': 'test'} (glob)
207 207 8877864f1edb05d0e07dc4ba77b67a80a7b86672 b1861c79d66ec3aa1b607ac3c9fb819e38b12238 0 {'date': '* *', 'user': 'test'} (glob)
208 208 08483444fef91d6224f6655ee586a65d263ad34c 0 {'date': '* *', 'user': 'test'} (glob)
209 209 5ae4c968c6aca831df823664e706c9d4aa34473d dd4be135457a404ce5541de427ae1d98a28f4acd 0 {'date': '* *', 'user': 'test'} (glob)
210 210 $ hg log --rev 'divergent()'
211 211 $ hg log -G
212 212 @ 13:dd4be135457a C
213 213 |
214 214 o 12:b1861c79d66e B
215 215 |
216 216 o 11:cbc07f266875 D
217 217 |
218 218 o 7:02de42196ebe H
219 219 |
220 220 | o 6:eea13746799a G
221 221 |/|
222 222 o | 5:24b6387c8c8c F
223 223 | |
224 224 | o 4:9520eea781bc E
225 225 |/
226 226 o 0:cd010b8cd998 A
227 227
228 228
229 229 $ cd ..
230 230
231 231 collapse rebase
232 232 ---------------------------------
233 233
234 234 $ hg clone base collapse
235 235 updating to branch default
236 236 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
237 237 $ cd collapse
238 238 $ hg rebase -s 42ccdea3bb16 -d eea13746799a --collapse
239 239 $ hg log -G
240 240 @ 8:4dc2197e807b Collapsed revision
241 241 |
242 242 | o 7:02de42196ebe H
243 243 | |
244 244 o | 6:eea13746799a G
245 245 |\|
246 246 | o 5:24b6387c8c8c F
247 247 | |
248 248 o | 4:9520eea781bc E
249 249 |/
250 250 o 0:cd010b8cd998 A
251 251
252 252 $ hg log --hidden -G
253 253 @ 8:4dc2197e807b Collapsed revision
254 254 |
255 255 | o 7:02de42196ebe H
256 256 | |
257 257 o | 6:eea13746799a G
258 258 |\|
259 259 | o 5:24b6387c8c8c F
260 260 | |
261 261 o | 4:9520eea781bc E
262 262 |/
263 263 | x 3:32af7686d403 D
264 264 | |
265 265 | x 2:5fddd98957c8 C
266 266 | |
267 267 | x 1:42ccdea3bb16 B
268 268 |/
269 269 o 0:cd010b8cd998 A
270 270
271 271 $ hg id --debug
272 272 4dc2197e807bae9817f09905b50ab288be2dbbcf tip
273 273 $ hg debugobsolete
274 274 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 4dc2197e807bae9817f09905b50ab288be2dbbcf 0 {'date': '*', 'user': 'test'} (glob)
275 275 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 4dc2197e807bae9817f09905b50ab288be2dbbcf 0 {'date': '*', 'user': 'test'} (glob)
276 276 32af7686d403cf45b5d95f2d70cebea587ac806a 4dc2197e807bae9817f09905b50ab288be2dbbcf 0 {'date': '*', 'user': 'test'} (glob)
277 277
278 278 $ cd ..
279 279
280 280 Rebase set has hidden descendants
281 281 ---------------------------------
282 282
283 283 We rebase a changeset which has a hidden changeset. The hidden changeset must
284 284 not be rebased.
285 285
286 286 $ hg clone base hidden
287 287 updating to branch default
288 288 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
289 289 $ cd hidden
290 290 $ hg rebase -s 5fddd98957c8 -d eea13746799a
291 291 $ hg rebase -s 42ccdea3bb16 -d 02de42196ebe
292 292 $ hg log -G
293 293 @ 10:7c6027df6a99 B
294 294 |
295 295 | o 9:cf44d2f5a9f4 D
296 296 | |
297 297 | o 8:e273c5e7d2d2 C
298 298 | |
299 299 o | 7:02de42196ebe H
300 300 | |
301 301 | o 6:eea13746799a G
302 302 |/|
303 303 o | 5:24b6387c8c8c F
304 304 | |
305 305 | o 4:9520eea781bc E
306 306 |/
307 307 o 0:cd010b8cd998 A
308 308
309 309 $ hg log --hidden -G
310 310 @ 10:7c6027df6a99 B
311 311 |
312 312 | o 9:cf44d2f5a9f4 D
313 313 | |
314 314 | o 8:e273c5e7d2d2 C
315 315 | |
316 316 o | 7:02de42196ebe H
317 317 | |
318 318 | o 6:eea13746799a G
319 319 |/|
320 320 o | 5:24b6387c8c8c F
321 321 | |
322 322 | o 4:9520eea781bc E
323 323 |/
324 324 | x 3:32af7686d403 D
325 325 | |
326 326 | x 2:5fddd98957c8 C
327 327 | |
328 328 | x 1:42ccdea3bb16 B
329 329 |/
330 330 o 0:cd010b8cd998 A
331 331
332 332 $ hg debugobsolete
333 333 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b e273c5e7d2d29df783dce9f9eaa3ac4adc69c15d 0 {'date': '*', 'user': 'test'} (glob)
334 334 32af7686d403cf45b5d95f2d70cebea587ac806a cf44d2f5a9f4297a62be94cbdd3dff7c7dc54258 0 {'date': '*', 'user': 'test'} (glob)
335 335 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 7c6027df6a99d93f461868e5433f63bde20b6dfb 0 {'date': '*', 'user': 'test'} (glob)
336 336
337 337 Test that rewriting leaving instability behind is allowed
338 338 ---------------------------------------------------------------------
339 339
340 340 $ hg log -r 'children(8)'
341 341 9:cf44d2f5a9f4 D (no-eol)
342 342 $ hg rebase -r 8
343 343 $ hg log -G
344 344 @ 11:0d8f238b634c C
345 345 |
346 346 o 10:7c6027df6a99 B
347 347 |
348 348 | o 9:cf44d2f5a9f4 D
349 349 | |
350 350 | x 8:e273c5e7d2d2 C
351 351 | |
352 352 o | 7:02de42196ebe H
353 353 | |
354 354 | o 6:eea13746799a G
355 355 |/|
356 356 o | 5:24b6387c8c8c F
357 357 | |
358 358 | o 4:9520eea781bc E
359 359 |/
360 360 o 0:cd010b8cd998 A
361 361
362 362
363 363
364 364 Test multiple root handling
365 365 ------------------------------------
366 366
367 367 $ hg rebase --dest 4 --rev '7+11+9'
368 368 $ hg log -G
369 369 @ 14:1e8370e38cca C
370 370 |
371 371 | o 13:102b4c1d889b D
372 372 | |
373 373 o | 12:bfe264faf697 H
374 374 |/
375 375 | o 10:7c6027df6a99 B
376 376 | |
377 377 | x 7:02de42196ebe H
378 378 | |
379 379 +---o 6:eea13746799a G
380 380 | |/
381 381 | o 5:24b6387c8c8c F
382 382 | |
383 383 o | 4:9520eea781bc E
384 384 |/
385 385 o 0:cd010b8cd998 A
386 386
387 387 $ cd ..
388
389 test on rebase dropping a merge
390
391 (setup)
392
393 $ hg init dropmerge
394 $ cd dropmerge
395 $ hg unbundle "$TESTDIR/bundles/rebase.hg"
396 adding changesets
397 adding manifests
398 adding file changes
399 added 8 changesets with 7 changes to 7 files (+2 heads)
400 (run 'hg heads' to see heads, 'hg merge' to merge)
401 $ hg up 3
402 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
403 $ hg merge 7
404 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
405 (branch merge, don't forget to commit)
406 $ hg ci -m 'M'
407 $ echo I > I
408 $ hg add I
409 $ hg ci -m I
410 $ hg log -G
411 @ 9:4bde274eefcf I
412 |
413 o 8:53a6a128b2b7 M
414 |\
415 | o 7:02de42196ebe H
416 | |
417 | | o 6:eea13746799a G
418 | |/|
419 | o | 5:24b6387c8c8c F
420 | | |
421 | | o 4:9520eea781bc E
422 | |/
423 o | 3:32af7686d403 D
424 | |
425 o | 2:5fddd98957c8 C
426 | |
427 o | 1:42ccdea3bb16 B
428 |/
429 o 0:cd010b8cd998 A
430
431 (actual test)
432
433 $ hg rebase --dest 6 --rev '((desc(H) + desc(D))::) - desc(M)'
434 $ hg log -G
435 @ 12:acd174b7ab39 I
436 |
437 o 11:6c11a6218c97 H
438 |
439 | o 10:b5313c85b22e D
440 |/
441 | o 8:53a6a128b2b7 M
442 | |\
443 | | x 7:02de42196ebe H
444 | | |
445 o---+ 6:eea13746799a G
446 | | |
447 | | o 5:24b6387c8c8c F
448 | | |
449 o---+ 4:9520eea781bc E
450 / /
451 x | 3:32af7686d403 D
452 | |
453 o | 2:5fddd98957c8 C
454 | |
455 o | 1:42ccdea3bb16 B
456 |/
457 o 0:cd010b8cd998 A
458
General Comments 0
You need to be logged in to leave comments. Login now