1 $ cat >> $HGRCPATH <<EOF |
|
2 > [ui] |
|
3 > logtemplate = {rev}:{node|short} {desc}\n |
|
4 > [experimental] |
|
5 > prunestrip=True |
|
6 > evolution=createmarkers |
|
7 > [extensions] |
|
8 > rebase= |
|
9 > strip= |
|
10 > EOF |
|
11 $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH |
|
12 $ echo "directaccess=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/hack/directaccess.py" >> $HGRCPATH |
|
13 $ echo "inhibit=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/hack/inhibit.py" >> $HGRCPATH |
|
14 $ mkcommit() { |
|
15 > echo "$1" > "$1" |
|
16 > hg add "$1" |
|
17 > hg ci -m "add $1" |
|
18 > } |
|
19 |
|
20 $ hg init inhibit |
|
21 $ cd inhibit |
|
22 $ mkcommit cA |
|
23 $ mkcommit cB |
|
24 $ mkcommit cC |
|
25 $ mkcommit cD |
|
26 $ hg up 'desc(cA)' |
|
27 0 files updated, 0 files merged, 3 files removed, 0 files unresolved |
|
28 $ mkcommit cE |
|
29 created new head |
|
30 $ mkcommit cG |
|
31 $ mkcommit cH |
|
32 $ mkcommit cJ |
|
33 $ hg log -G |
|
34 @ 7:18214586bf78 add cJ |
|
35 | |
|
36 o 6:cf5c4f4554ce add cH |
|
37 | |
|
38 o 5:5419eb264a33 add cG |
|
39 | |
|
40 o 4:98065434e5c6 add cE |
|
41 | |
|
42 | o 3:2db36d8066ff add cD |
|
43 | | |
|
44 | o 2:7df62a38b9bf add cC |
|
45 | | |
|
46 | o 1:02bcbc3f6e56 add cB |
|
47 |/ |
|
48 o 0:54ccbc537fc2 add cA |
|
49 |
|
50 |
|
51 plain prune |
|
52 |
|
53 $ hg strip 1:: |
|
54 3 changesets pruned |
|
55 $ hg log -G |
|
56 @ 7:18214586bf78 add cJ |
|
57 | |
|
58 o 6:cf5c4f4554ce add cH |
|
59 | |
|
60 o 5:5419eb264a33 add cG |
|
61 | |
|
62 o 4:98065434e5c6 add cE |
|
63 | |
|
64 o 0:54ccbc537fc2 add cA |
|
65 |
|
66 $ hg debugobsinhibit --hidden 1:: |
|
67 $ hg log -G |
|
68 @ 7:18214586bf78 add cJ |
|
69 | |
|
70 o 6:cf5c4f4554ce add cH |
|
71 | |
|
72 o 5:5419eb264a33 add cG |
|
73 | |
|
74 o 4:98065434e5c6 add cE |
|
75 | |
|
76 | o 3:2db36d8066ff add cD |
|
77 | | |
|
78 | o 2:7df62a38b9bf add cC |
|
79 | | |
|
80 | o 1:02bcbc3f6e56 add cB |
|
81 |/ |
|
82 o 0:54ccbc537fc2 add cA |
|
83 |
|
84 $ hg strip --hidden 1:: |
|
85 3 changesets pruned |
|
86 $ hg log -G |
|
87 @ 7:18214586bf78 add cJ |
|
88 | |
|
89 o 6:cf5c4f4554ce add cH |
|
90 | |
|
91 o 5:5419eb264a33 add cG |
|
92 | |
|
93 o 4:98065434e5c6 add cE |
|
94 | |
|
95 o 0:54ccbc537fc2 add cA |
|
96 |
|
97 |
|
98 after amend |
|
99 |
|
100 $ echo babar > cJ |
|
101 $ hg commit --amend |
|
102 $ hg log -G |
|
103 @ 9:55c73a90e4b4 add cJ |
|
104 | |
|
105 o 6:cf5c4f4554ce add cH |
|
106 | |
|
107 o 5:5419eb264a33 add cG |
|
108 | |
|
109 o 4:98065434e5c6 add cE |
|
110 | |
|
111 o 0:54ccbc537fc2 add cA |
|
112 |
|
113 $ hg debugobsinhibit --hidden 18214586bf78 |
|
114 $ hg log -G |
|
115 @ 9:55c73a90e4b4 add cJ |
|
116 | |
|
117 | o 7:18214586bf78 add cJ |
|
118 |/ |
|
119 o 6:cf5c4f4554ce add cH |
|
120 | |
|
121 o 5:5419eb264a33 add cG |
|
122 | |
|
123 o 4:98065434e5c6 add cE |
|
124 | |
|
125 o 0:54ccbc537fc2 add cA |
|
126 |
|
127 |
|
128 and no divergence |
|
129 |
|
130 $ hg summary |
|
131 parent: 9:55c73a90e4b4 tip |
|
132 add cJ |
|
133 branch: default |
|
134 commit: (clean) |
|
135 update: 1 new changesets, 2 branch heads (merge) |
|
136 phases: 6 draft |
|
137 |
|
138 check public revision got cleared |
|
139 (when adding the second inhibitor, the first one is removed because it is public) |
|
140 |
|
141 $ wc -m .hg/store/obsinhibit | sed -e 's/^[ \t]*//' |
|
142 20 .hg/store/obsinhibit |
|
143 $ hg strip 7 |
|
144 1 changesets pruned |
|
145 $ hg debugobsinhibit --hidden 18214586bf78 |
|
146 $ wc -m .hg/store/obsinhibit | sed -e 's/^[ \t]*//' |
|
147 20 .hg/store/obsinhibit |
|
148 $ hg log -G |
|
149 @ 9:55c73a90e4b4 add cJ |
|
150 | |
|
151 | o 7:18214586bf78 add cJ |
|
152 |/ |
|
153 o 6:cf5c4f4554ce add cH |
|
154 | |
|
155 o 5:5419eb264a33 add cG |
|
156 | |
|
157 o 4:98065434e5c6 add cE |
|
158 | |
|
159 o 0:54ccbc537fc2 add cA |
|
160 |
|
161 $ hg phase --public 7 |
|
162 1 new bumped changesets |
|
163 $ hg strip 9 |
|
164 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
165 working directory now at cf5c4f4554ce |
|
166 1 changesets pruned |
|
167 $ hg log -G |
|
168 o 7:18214586bf78 add cJ |
|
169 | |
|
170 @ 6:cf5c4f4554ce add cH |
|
171 | |
|
172 o 5:5419eb264a33 add cG |
|
173 | |
|
174 o 4:98065434e5c6 add cE |
|
175 | |
|
176 o 0:54ccbc537fc2 add cA |
|
177 |
|
178 $ hg debugobsinhibit --hidden 55c73a90e4b4 |
|
179 $ wc -m .hg/store/obsinhibit | sed -e 's/^[ \t]*//' |
|
180 20 .hg/store/obsinhibit |
|
181 $ hg log -G |
|
182 o 9:55c73a90e4b4 add cJ |
|
183 | |
|
184 | o 7:18214586bf78 add cJ |
|
185 |/ |
|
186 @ 6:cf5c4f4554ce add cH |
|
187 | |
|
188 o 5:5419eb264a33 add cG |
|
189 | |
|
190 o 4:98065434e5c6 add cE |
|
191 | |
|
192 o 0:54ccbc537fc2 add cA |
|
193 |
|
194 Update should inhibit all related unstable commits |
|
195 |
|
196 $ hg update 2 --hidden |
|
197 2 files updated, 0 files merged, 3 files removed, 0 files unresolved |
|
198 $ hg log -G |
|
199 o 9:55c73a90e4b4 add cJ |
|
200 | |
|
201 | o 7:18214586bf78 add cJ |
|
202 |/ |
|
203 o 6:cf5c4f4554ce add cH |
|
204 | |
|
205 o 5:5419eb264a33 add cG |
|
206 | |
|
207 o 4:98065434e5c6 add cE |
|
208 | |
|
209 | @ 2:7df62a38b9bf add cC |
|
210 | | |
|
211 | o 1:02bcbc3f6e56 add cB |
|
212 |/ |
|
213 o 0:54ccbc537fc2 add cA |
|
214 |
|
215 |
|
216 $ hg update 9 |
|
217 4 files updated, 0 files merged, 2 files removed, 0 files unresolved |
|
218 $ hg log -G |
|
219 @ 9:55c73a90e4b4 add cJ |
|
220 | |
|
221 | o 7:18214586bf78 add cJ |
|
222 |/ |
|
223 o 6:cf5c4f4554ce add cH |
|
224 | |
|
225 o 5:5419eb264a33 add cG |
|
226 | |
|
227 o 4:98065434e5c6 add cE |
|
228 | |
|
229 | o 2:7df62a38b9bf add cC |
|
230 | | |
|
231 | o 1:02bcbc3f6e56 add cB |
|
232 |/ |
|
233 o 0:54ccbc537fc2 add cA |
|
234 |
|
235 $ hg strip --hidden 1:: |
|
236 3 changesets pruned |
|
237 $ hg log -G |
|
238 @ 9:55c73a90e4b4 add cJ |
|
239 | |
|
240 | o 7:18214586bf78 add cJ |
|
241 |/ |
|
242 o 6:cf5c4f4554ce add cH |
|
243 | |
|
244 o 5:5419eb264a33 add cG |
|
245 | |
|
246 o 4:98065434e5c6 add cE |
|
247 | |
|
248 o 0:54ccbc537fc2 add cA |
|
249 |
|
250 |
|
251 Bookmark should inhibit all related unstable commits |
|
252 $ hg bookmark -r 2 book1 --hidden |
|
253 $ hg log -G |
|
254 @ 9:55c73a90e4b4 add cJ |
|
255 | |
|
256 | o 7:18214586bf78 add cJ |
|
257 |/ |
|
258 o 6:cf5c4f4554ce add cH |
|
259 | |
|
260 o 5:5419eb264a33 add cG |
|
261 | |
|
262 o 4:98065434e5c6 add cE |
|
263 | |
|
264 | o 2:7df62a38b9bf add cC |
|
265 | | |
|
266 | o 1:02bcbc3f6e56 add cB |
|
267 |/ |
|
268 o 0:54ccbc537fc2 add cA |
|
269 |
|
270 |
|
271 Removing a bookmark with bookmark -D should prune the changes underneath |
|
272 that are not reachable from another bookmark or head |
|
273 |
|
274 $ hg bookmark -r 1 book2 |
|
275 $ hg bookmark -D book1 --config experimental.evolution=createmarkers #--config to make sure prune is not registered as a command. |
|
276 bookmark 'book1' deleted |
|
277 1 changesets pruned |
|
278 $ hg log -G |
|
279 @ 9:55c73a90e4b4 add cJ |
|
280 | |
|
281 | o 7:18214586bf78 add cJ |
|
282 |/ |
|
283 o 6:cf5c4f4554ce add cH |
|
284 | |
|
285 o 5:5419eb264a33 add cG |
|
286 | |
|
287 o 4:98065434e5c6 add cE |
|
288 | |
|
289 | o 1:02bcbc3f6e56 add cB |
|
290 |/ |
|
291 o 0:54ccbc537fc2 add cA |
|
292 |
|
293 $ hg bookmark -D book2 |
|
294 bookmark 'book2' deleted |
|
295 1 changesets pruned |
|
296 $ hg log -G |
|
297 @ 9:55c73a90e4b4 add cJ |
|
298 | |
|
299 | o 7:18214586bf78 add cJ |
|
300 |/ |
|
301 o 6:cf5c4f4554ce add cH |
|
302 | |
|
303 o 5:5419eb264a33 add cG |
|
304 | |
|
305 o 4:98065434e5c6 add cE |
|
306 | |
|
307 o 0:54ccbc537fc2 add cA |
|
308 |
|
309 Test edge cases of bookmark -D |
|
310 $ hg book -D book2 -m hello |
|
311 abort: Cannot use both -m and -D |
|
312 [255] |
|
313 |
|
314 $ hg book -Draster-fix |
|
315 abort: Error, please check your command |
|
316 (make sure to put a space between -D and your bookmark name) |
|
317 [255] |
|
318 |
|
319 Test that direct access make changesets visible |
|
320 |
|
321 $ hg export 2db36d8066ff 02bcbc3f6e56 |
|
322 # HG changeset patch |
|
323 # User test |
|
324 # Date 0 0 |
|
325 # Thu Jan 01 00:00:00 1970 +0000 |
|
326 # Node ID 2db36d8066ff50e8be3d3e6c2da1ebc0a8381d82 |
|
327 # Parent 7df62a38b9bf9daf968de235043ba88a8ef43393 |
|
328 add cD |
|
329 |
|
330 diff -r 7df62a38b9bf -r 2db36d8066ff cD |
|
331 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
332 +++ b/cD Thu Jan 01 00:00:00 1970 +0000 |
|
333 @@ -0,0 +1,1 @@ |
|
334 +cD |
|
335 # HG changeset patch |
|
336 # User test |
|
337 # Date 0 0 |
|
338 # Thu Jan 01 00:00:00 1970 +0000 |
|
339 # Node ID 02bcbc3f6e56fb2928efec2c6e24472720bf5511 |
|
340 # Parent 54ccbc537fc2d6845a5d61337c1cfb80d1d2815e |
|
341 add cB |
|
342 |
|
343 diff -r 54ccbc537fc2 -r 02bcbc3f6e56 cB |
|
344 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
345 +++ b/cB Thu Jan 01 00:00:00 1970 +0000 |
|
346 @@ -0,0 +1,1 @@ |
|
347 +cB |
|
348 |
|
349 But only with hash |
|
350 |
|
351 $ hg export 2db36d8066ff:: |
|
352 # HG changeset patch |
|
353 # User test |
|
354 # Date 0 0 |
|
355 # Thu Jan 01 00:00:00 1970 +0000 |
|
356 # Node ID 2db36d8066ff50e8be3d3e6c2da1ebc0a8381d82 |
|
357 # Parent 7df62a38b9bf9daf968de235043ba88a8ef43393 |
|
358 add cD |
|
359 |
|
360 diff -r 7df62a38b9bf -r 2db36d8066ff cD |
|
361 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
362 +++ b/cD Thu Jan 01 00:00:00 1970 +0000 |
|
363 @@ -0,0 +1,1 @@ |
|
364 +cD |
|
365 |
|
366 $ hg export 1 3 |
|
367 abort: hidden revision '1'! |
|
368 (use --hidden to access hidden revisions; pruned) |
|
369 [255] |
|
370 |
|
371 |
|
372 Test directaccess in a larger revset |
|
373 |
|
374 $ hg log -r '. + .^ + 2db36d8066ff' -T '{node|short}\n' |
|
375 55c73a90e4b4 |
|
376 cf5c4f4554ce |
|
377 2db36d8066ff |
|
378 |
|
379 Test directaccess only takes hashes |
|
380 |
|
381 $ HOOKPATH=$TESTTMP/printexplicitaccess.py |
|
382 $ cat >> $HOOKPATH <<EOF |
|
383 > def hook(ui, repo, **kwds): |
|
384 > for i in sorted(repo._explicitaccess): |
|
385 > ui.write('directaccess: %s\n' % i) |
|
386 > EOF |
|
387 |
|
388 $ hg log -r 1 -r 2 -r 2db36d8066f -T '{rev}\n' --config hooks.post-log=python:$HOOKPATH:hook |
|
389 1 |
|
390 2 |
|
391 3 |
|
392 directaccess: 3 |
|
393 |
|
394 With severals hidden sha, rebase of one hidden stack onto another one: |
|
395 $ hg update -C 0 |
|
396 0 files updated, 0 files merged, 4 files removed, 0 files unresolved |
|
397 $ mkcommit cK |
|
398 created new head |
|
399 $ mkcommit cL |
|
400 $ hg update -C 9 |
|
401 4 files updated, 0 files merged, 2 files removed, 0 files unresolved |
|
402 $ hg log -G |
|
403 o 11:53a94305e133 add cL |
|
404 | |
|
405 o 10:ad78ff7d621f add cK |
|
406 | |
|
407 | @ 9:55c73a90e4b4 add cJ |
|
408 | | |
|
409 | | o 7:18214586bf78 add cJ |
|
410 | |/ |
|
411 | o 6:cf5c4f4554ce add cH |
|
412 | | |
|
413 | o 5:5419eb264a33 add cG |
|
414 | | |
|
415 | o 4:98065434e5c6 add cE |
|
416 |/ |
|
417 o 0:54ccbc537fc2 add cA |
|
418 |
|
419 $ hg strip --hidden 10: |
|
420 2 changesets pruned |
|
421 $ hg log -G |
|
422 @ 9:55c73a90e4b4 add cJ |
|
423 | |
|
424 | o 7:18214586bf78 add cJ |
|
425 |/ |
|
426 o 6:cf5c4f4554ce add cH |
|
427 | |
|
428 o 5:5419eb264a33 add cG |
|
429 | |
|
430 o 4:98065434e5c6 add cE |
|
431 | |
|
432 o 0:54ccbc537fc2 add cA |
|
433 |
|
434 $ hg rebase -s 10 -d 3 |
|
435 abort: hidden revision '3'! |
|
436 (use --hidden to access hidden revisions; pruned) |
|
437 [255] |
|
438 $ hg rebase -r ad78ff7d621f -r 53a94305e133 -d 2db36d8066ff --config experimental.rebaseskipobsolete=0 |
|
439 Warning: accessing hidden changesets 2db36d8066ff for write operation |
|
440 Warning: accessing hidden changesets ad78ff7d621f,53a94305e133 for write operation |
|
441 rebasing 10:ad78ff7d621f "add cK" |
|
442 rebasing 11:53a94305e133 "add cL" |
|
443 $ hg log -G |
|
444 o 13:2f7b7704d714 add cL |
|
445 | |
|
446 o 12:fe1634cbe235 add cK |
|
447 | |
|
448 | @ 9:55c73a90e4b4 add cJ |
|
449 | | |
|
450 | | o 7:18214586bf78 add cJ |
|
451 | |/ |
|
452 | o 6:cf5c4f4554ce add cH |
|
453 | | |
|
454 | o 5:5419eb264a33 add cG |
|
455 | | |
|
456 | o 4:98065434e5c6 add cE |
|
457 | | |
|
458 o | 3:2db36d8066ff add cD |
|
459 | | |
|
460 o | 2:7df62a38b9bf add cC |
|
461 | | |
|
462 o | 1:02bcbc3f6e56 add cB |
|
463 |/ |
|
464 o 0:54ccbc537fc2 add cA |
|
465 |
|
466 |
|
467 Check that amending in the middle of a stack does not show obsolete revs |
|
468 Since we are doing operation in the middle of the stack we cannot just |
|
469 have createmarkers as we are creating instability |
|
470 |
|
471 $ cat >> $HGRCPATH <<EOF |
|
472 > [experimental] |
|
473 > evolution=all |
|
474 > EOF |
|
475 |
|
476 $ hg strip --hidden 1:: |
|
477 5 changesets pruned |
|
478 $ hg log -G |
|
479 @ 9:55c73a90e4b4 add cJ |
|
480 | |
|
481 | o 7:18214586bf78 add cJ |
|
482 |/ |
|
483 o 6:cf5c4f4554ce add cH |
|
484 | |
|
485 o 5:5419eb264a33 add cG |
|
486 | |
|
487 o 4:98065434e5c6 add cE |
|
488 | |
|
489 o 0:54ccbc537fc2 add cA |
|
490 |
|
491 $ hg up 7 |
|
492 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
493 $ mkcommit cL |
|
494 $ mkcommit cM |
|
495 $ mkcommit cN |
|
496 $ hg log -G |
|
497 @ 16:a438c045eb37 add cN |
|
498 | |
|
499 o 15:2d66e189f5b5 add cM |
|
500 | |
|
501 o 14:d66ccb8c5871 add cL |
|
502 | |
|
503 | o 9:55c73a90e4b4 add cJ |
|
504 | | |
|
505 o | 7:18214586bf78 add cJ |
|
506 |/ |
|
507 o 6:cf5c4f4554ce add cH |
|
508 | |
|
509 o 5:5419eb264a33 add cG |
|
510 | |
|
511 o 4:98065434e5c6 add cE |
|
512 | |
|
513 o 0:54ccbc537fc2 add cA |
|
514 |
|
515 $ hg up 15 |
|
516 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
517 $ echo "mmm" >> cM |
|
518 $ hg amend |
|
519 $ hg log -G |
|
520 @ 18:210589181b14 add cM |
|
521 | |
|
522 | o 16:a438c045eb37 add cN |
|
523 | | |
|
524 | o 15:2d66e189f5b5 add cM |
|
525 |/ |
|
526 o 14:d66ccb8c5871 add cL |
|
527 | |
|
528 | o 9:55c73a90e4b4 add cJ |
|
529 | | |
|
530 o | 7:18214586bf78 add cJ |
|
531 |/ |
|
532 o 6:cf5c4f4554ce add cH |
|
533 | |
|
534 o 5:5419eb264a33 add cG |
|
535 | |
|
536 o 4:98065434e5c6 add cE |
|
537 | |
|
538 o 0:54ccbc537fc2 add cA |
|
539 |
|
540 Check that rebasing a commit twice makes the commit visible again |
|
541 |
|
542 $ hg rebase -d 18 -r 16 --keep |
|
543 rebasing 16:a438c045eb37 "add cN" |
|
544 $ hg log -r 14:: -G |
|
545 o 19:104eed5354c7 add cN |
|
546 | |
|
547 @ 18:210589181b14 add cM |
|
548 | |
|
549 | o 16:a438c045eb37 add cN |
|
550 | | |
|
551 | o 15:2d66e189f5b5 add cM |
|
552 |/ |
|
553 o 14:d66ccb8c5871 add cL |
|
554 | |
|
555 ~ |
|
556 $ hg strip -r 210589181b14 |
|
557 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
558 working directory now at d66ccb8c5871 |
|
559 2 changesets pruned |
|
560 |
|
561 Using a hash prefix solely made of digits should work |
|
562 $ hg update 210589181 |
|
563 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
564 $ hg rebase -d 18 -r 16 --keep |
|
565 rebasing 16:a438c045eb37 "add cN" |
|
566 $ hg log -r 14:: -G |
|
567 o 19:104eed5354c7 add cN |
|
568 | |
|
569 @ 18:210589181b14 add cM |
|
570 | |
|
571 | o 16:a438c045eb37 add cN |
|
572 | | |
|
573 | o 15:2d66e189f5b5 add cM |
|
574 |/ |
|
575 o 14:d66ccb8c5871 add cL |
|
576 | |
|
577 ~ |
|
578 |
|
579 Test prunestrip |
|
580 |
|
581 $ hg book foo -r 104eed5354c7 |
|
582 $ hg strip -r 210589181b14 |
|
583 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
584 working directory now at d66ccb8c5871 |
|
585 2 changesets pruned |
|
586 $ hg log -r 14:: -G -T '{rev}:{node|short} {desc|firstline} {bookmarks}\n' |
|
587 o 16:a438c045eb37 add cN |
|
588 | |
|
589 o 15:2d66e189f5b5 add cM |
|
590 | |
|
591 @ 14:d66ccb8c5871 add cL foo |
|
592 | |
|
593 ~ |
|
594 |
|
595 Check that --hidden used with inhibit does not hide every obsolete commit |
|
596 We show the log before and after a log -G --hidden, they should be the same |
|
597 $ hg log -G |
|
598 o 16:a438c045eb37 add cN |
|
599 | |
|
600 o 15:2d66e189f5b5 add cM |
|
601 | |
|
602 @ 14:d66ccb8c5871 add cL |
|
603 | |
|
604 | o 9:55c73a90e4b4 add cJ |
|
605 | | |
|
606 o | 7:18214586bf78 add cJ |
|
607 |/ |
|
608 o 6:cf5c4f4554ce add cH |
|
609 | |
|
610 o 5:5419eb264a33 add cG |
|
611 | |
|
612 o 4:98065434e5c6 add cE |
|
613 | |
|
614 o 0:54ccbc537fc2 add cA |
|
615 |
|
616 $ hg log -G --hidden |
|
617 x 19:104eed5354c7 add cN |
|
618 | |
|
619 x 18:210589181b14 add cM |
|
620 | |
|
621 | x 17:b3c3274523f9 temporary amend commit for 2d66e189f5b5 |
|
622 | | |
|
623 | | o 16:a438c045eb37 add cN |
|
624 | |/ |
|
625 | o 15:2d66e189f5b5 add cM |
|
626 |/ |
|
627 @ 14:d66ccb8c5871 add cL |
|
628 | |
|
629 | x 13:2f7b7704d714 add cL |
|
630 | | |
|
631 | x 12:fe1634cbe235 add cK |
|
632 | | |
|
633 | | x 11:53a94305e133 add cL |
|
634 | | | |
|
635 | | x 10:ad78ff7d621f add cK |
|
636 | | | |
|
637 | | | o 9:55c73a90e4b4 add cJ |
|
638 | | | | |
|
639 +-------x 8:e84f73d9ad36 temporary amend commit for 18214586bf78 |
|
640 | | | | |
|
641 o-----+ 7:18214586bf78 add cJ |
|
642 / / / |
|
643 | | o 6:cf5c4f4554ce add cH |
|
644 | | | |
|
645 | | o 5:5419eb264a33 add cG |
|
646 | | | |
|
647 | | o 4:98065434e5c6 add cE |
|
648 | |/ |
|
649 x | 3:2db36d8066ff add cD |
|
650 | | |
|
651 x | 2:7df62a38b9bf add cC |
|
652 | | |
|
653 x | 1:02bcbc3f6e56 add cB |
|
654 |/ |
|
655 o 0:54ccbc537fc2 add cA |
|
656 |
|
657 |
|
658 $ hg log -G |
|
659 o 16:a438c045eb37 add cN |
|
660 | |
|
661 o 15:2d66e189f5b5 add cM |
|
662 | |
|
663 @ 14:d66ccb8c5871 add cL |
|
664 | |
|
665 | o 9:55c73a90e4b4 add cJ |
|
666 | | |
|
667 o | 7:18214586bf78 add cJ |
|
668 |/ |
|
669 o 6:cf5c4f4554ce add cH |
|
670 | |
|
671 o 5:5419eb264a33 add cG |
|
672 | |
|
673 o 4:98065434e5c6 add cE |
|
674 | |
|
675 o 0:54ccbc537fc2 add cA |
|
676 |
|
677 |
|
678 check that pruning and inhibited node does not confuse anything |
|
679 |
|
680 $ hg up --hidden 210589181b14 |
|
681 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
682 $ hg strip --bundle 210589181b14 |
|
683 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
684 saved backup bundle to $TESTTMP/inhibit/.hg/strip-backup/210589181b14-e09c7b88-backup.hg (glob) |
|
685 $ hg unbundle .hg/strip-backup/210589181b14-e09c7b88-backup.hg # restore state |
|
686 adding changesets |
|
687 adding manifests |
|
688 adding file changes |
|
689 added 2 changesets with 1 changes to 2 files (+1 heads) |
|
690 3 new obsolescence markers |
|
691 obsoleted 1 changesets |
|
692 (run 'hg heads .' to see heads, 'hg merge' to merge) |
|
693 |
|
694 Only allow direct access and check that evolve works like before |
|
695 (also disable evolve commands to avoid hint about using evolve) |
|
696 $ cat >> $HGRCPATH <<EOF |
|
697 > [extensions] |
|
698 > inhibit=! |
|
699 > [experimental] |
|
700 > evolution=createmarkers |
|
701 > EOF |
|
702 |
|
703 $ hg up 15 |
|
704 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
705 working directory parent is obsolete! (2d66e189f5b5) |
|
706 $ cat >> $HGRCPATH <<EOF |
|
707 > [experimental] |
|
708 > evolution=all |
|
709 > EOF |
|
710 $ echo "CM" > cM |
|
711 $ hg amend |
|
712 $ hg log -G |
|
713 @ 21:721c3c279519 add cM |
|
714 | |
|
715 | o 16:a438c045eb37 add cN |
|
716 | | |
|
717 | x 15:2d66e189f5b5 add cM |
|
718 |/ |
|
719 o 14:d66ccb8c5871 add cL |
|
720 | |
|
721 o 7:18214586bf78 add cJ |
|
722 | |
|
723 o 6:cf5c4f4554ce add cH |
|
724 | |
|
725 o 5:5419eb264a33 add cG |
|
726 | |
|
727 o 4:98065434e5c6 add cE |
|
728 | |
|
729 o 0:54ccbc537fc2 add cA |
|
730 |
|
731 $ cat >> $HGRCPATH <<EOF |
|
732 > [extensions] |
|
733 > EOF |
|
734 $ echo "inhibit=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/hack/inhibit.py" >> $HGRCPATH |
|
735 |
|
736 Empty commit |
|
737 $ hg amend |
|
738 nothing changed |
|
739 [1] |
|
740 |
|
741 Check that the behavior of rebase with obsolescence markers is maintained |
|
742 despite inhibit |
|
743 |
|
744 $ hg up a438c045eb37 |
|
745 2 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
746 $ hg rebase -r 15:: -d 21 --config experimental.rebaseskipobsolete=True |
|
747 note: not rebasing 15:2d66e189f5b5 "add cM", already in destination as 21:721c3c279519 "add cM" |
|
748 rebasing 16:a438c045eb37 "add cN" |
|
749 $ hg up -q 2d66e189f5b5 # To inhibit it as the rest of test depends on it |
|
750 $ hg up -q 21 |
|
751 |
|
752 Directaccess should load after some extensions precised in the conf |
|
753 With no extension specified: |
|
754 |
|
755 $ cat >$TESTTMP/test_extension.py << EOF |
|
756 > from mercurial import extensions |
|
757 > def uisetup(ui): |
|
758 > print extensions._order |
|
759 > EOF |
|
760 $ cat >> $HGRCPATH << EOF |
|
761 > [extensions] |
|
762 > testextension=$TESTTMP/test_extension.py |
|
763 > EOF |
|
764 $ hg id |
|
765 ['rebase', 'strip', 'evolve', 'directaccess', 'inhibit', 'testextension'] |
|
766 721c3c279519 |
|
767 |
|
768 With test_extension specified: |
|
769 $ cat >> $HGRCPATH << EOF |
|
770 > [directaccess] |
|
771 > loadsafter=testextension |
|
772 > EOF |
|
773 $ hg id |
|
774 ['rebase', 'strip', 'evolve', 'inhibit', 'testextension', 'directaccess'] |
|
775 721c3c279519 |
|
776 |
|
777 Inhibit should not work without directaccess |
|
778 $ cat >> $HGRCPATH <<EOF |
|
779 > [extensions] |
|
780 > directaccess=! |
|
781 > testextension=! |
|
782 > EOF |
|
783 $ hg up . |
|
784 cannot use inhibit without the direct access extension |
|
785 (please enable it or inhibit won't work) |
|
786 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
787 $ echo "directaccess=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/hack/directaccess.py" >> $HGRCPATH |
|
788 $ cd .. |
|
789 |
|
790 hg push should not allow directaccess unless forced with --hidden |
|
791 We copy the inhibhit repo to inhibit2 and make some changes to push to inhibit |
|
792 |
|
793 $ cp -r inhibit inhibit2 |
|
794 $ pwd=$(pwd) |
|
795 $ cd inhibit |
|
796 $ mkcommit pk |
|
797 created new head |
|
798 $ hg id |
|
799 003a4735afde tip |
|
800 $ echo "OO" > pk |
|
801 $ hg amend |
|
802 $ hg id |
|
803 71eb4f100663 tip |
|
804 |
|
805 Hidden commits cannot be pushed without --hidden |
|
806 $ hg push -r 003a4735afde $pwd/inhibit2 |
|
807 pushing to $TESTTMP/inhibit2 |
|
808 abort: hidden revision '003a4735afde'! |
|
809 (use --hidden to access hidden revisions; successor: 71eb4f100663) |
|
810 [255] |
|
811 |
|
812 Visible commits can still be pushed |
|
813 $ hg push -fr 71eb4f100663 $pwd/inhibit2 |
|
814 pushing to $TESTTMP/inhibit2 |
|
815 searching for changes |
|
816 adding changesets |
|
817 adding manifests |
|
818 adding file changes |
|
819 added 1 changesets with 1 changes to 1 files (+1 heads) |
|
820 2 new obsolescence markers |
|
821 |
|
822 Create a stack (obsolete with successor in dest) -> (not obsolete) and rebase |
|
823 it. We expect to not see the stack at the end of the rebase. |
|
824 $ hg log -G -r "25::" |
|
825 @ 25:71eb4f100663 add pk |
|
826 | |
|
827 ~ |
|
828 $ hg up -C 22 |
|
829 1 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
830 $ mkcommit Dk |
|
831 $ hg prune 22 -s 25 |
|
832 1 changesets pruned |
|
833 $ hg rebase -s 22 -d 25 --config experimental.rebaseskipobsolete=True |
|
834 note: not rebasing 22:46cb6daad392 "add cN", already in destination as 25:71eb4f100663 "add pk" |
|
835 rebasing 26:7ad60e760c7b "add Dk" (tip) |
|
836 $ hg log -G -r "25::" |
|
837 @ 27:1192fa9fbc68 add Dk |
|
838 | |
|
839 o 25:71eb4f100663 add pk |
|
840 | |
|
841 ~ |
|
842 |
|
843 Create a stack (obsolete with succ in dest) -> (not obsolete) -> (not obsolete). |
|
844 Rebase the first two revs of the stack onto dest, we expect to see one new |
|
845 revision on the destination and everything visible. |
|
846 $ hg up 25 |
|
847 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
848 $ mkcommit Dl |
|
849 created new head |
|
850 $ mkcommit Dp |
|
851 $ mkcommit Do |
|
852 $ hg log -G -r "25::" |
|
853 @ 30:b517facce1ef add Do |
|
854 | |
|
855 o 29:c5a47ab27c2e add Dp |
|
856 | |
|
857 o 28:8c1c2edbaf1b add Dl |
|
858 | |
|
859 | o 27:1192fa9fbc68 add Dk |
|
860 |/ |
|
861 o 25:71eb4f100663 add pk |
|
862 | |
|
863 ~ |
|
864 $ hg prune 28 -s 27 |
|
865 1 changesets pruned |
|
866 $ hg up 25 |
|
867 0 files updated, 0 files merged, 3 files removed, 0 files unresolved |
|
868 $ hg rebase -r "28 + 29" --keep -d 27 --config experimental.rebaseskipobsolete=True |
|
869 note: not rebasing 28:8c1c2edbaf1b "add Dl", already in destination as 27:1192fa9fbc68 "add Dk" |
|
870 rebasing 29:c5a47ab27c2e "add Dp" |
|
871 $ hg log -G -r "25::" |
|
872 o 31:7d8affb1f604 add Dp |
|
873 | |
|
874 | o 30:b517facce1ef add Do |
|
875 | | |
|
876 | o 29:c5a47ab27c2e add Dp |
|
877 | | |
|
878 | o 28:8c1c2edbaf1b add Dl |
|
879 | | |
|
880 o | 27:1192fa9fbc68 add Dk |
|
881 |/ |
|
882 @ 25:71eb4f100663 add pk |
|
883 | |
|
884 ~ |
|
885 |
|
886 Rebase the same stack in full on the destination, we expect it to disappear |
|
887 and only see the top revision added to destination. We don\'t expect 29 to be |
|
888 skipped as we used --keep before. |
|
889 $ hg rebase -s 28 -d 27 --config experimental.rebaseskipobsolete=True |
|
890 note: not rebasing 28:8c1c2edbaf1b "add Dl", already in destination as 27:1192fa9fbc68 "add Dk" |
|
891 rebasing 29:c5a47ab27c2e "add Dp" |
|
892 rebasing 30:b517facce1ef "add Do" |
|
893 $ hg log -G -r "25::" |
|
894 o 32:1d43fff9e26f add Do |
|
895 | |
|
896 o 31:7d8affb1f604 add Dp |
|
897 | |
|
898 o 27:1192fa9fbc68 add Dk |
|
899 | |
|
900 @ 25:71eb4f100663 add pk |
|
901 | |
|
902 ~ |
|
903 |
|
904 Pulling from a inhibit repo to a non-inhibit repo should work |
|
905 |
|
906 $ cd .. |
|
907 $ hg clone -q inhibit not-inhibit |
|
908 $ cat >> not-inhibit/.hg/hgrc <<EOF |
|
909 > [extensions] |
|
910 > inhibit=! |
|
911 > directaccess=! |
|
912 > evolve=! |
|
913 > EOF |
|
914 $ cd not-inhibit |
|
915 $ hg book -d foo |
|
916 $ hg pull |
|
917 pulling from $TESTTMP/inhibit (glob) |
|
918 searching for changes |
|
919 no changes found |
|
920 adding remote bookmark foo |
|
921 |
|
922 Test that bookmark -D can take multiple branch names |
|
923 $ cd ../inhibit |
|
924 $ hg bookmark book2 book1 book3 |
|
925 $ touch foo && hg add foo && hg ci -m "add foo" |
|
926 created new head |
|
927 $ hg up book1 |
|
928 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
929 (activating bookmark book1) |
|
930 $ hg bookmark -D book2 book3 |
|
931 bookmark 'book2' deleted |
|
932 bookmark 'book3' deleted |
|
933 1 changesets pruned |
|