Show More
@@ -1397,6 +1397,8 def adjustreplacementsfrommarkers(repo, | |||||
1397 | return oldreplacements |
|
1397 | return oldreplacements | |
1398 |
|
1398 | |||
1399 | unfi = repo.unfiltered() |
|
1399 | unfi = repo.unfiltered() | |
|
1400 | nm = unfi.changelog.nodemap | |||
|
1401 | obsstore = repo.obsstore | |||
1400 | newreplacements = list(oldreplacements) |
|
1402 | newreplacements = list(oldreplacements) | |
1401 | oldsuccs = [r[1] for r in oldreplacements] |
|
1403 | oldsuccs = [r[1] for r in oldreplacements] | |
1402 | # successors that have already been added to succstocheck once |
|
1404 | # successors that have already been added to succstocheck once | |
@@ -1404,15 +1406,13 def adjustreplacementsfrommarkers(repo, | |||||
1404 | succstocheck = list(seensuccs) |
|
1406 | succstocheck = list(seensuccs) | |
1405 | while succstocheck: |
|
1407 | while succstocheck: | |
1406 | n = succstocheck.pop() |
|
1408 | n = succstocheck.pop() | |
1407 | try: |
|
1409 | missing = nm.get(n) is None | |
1408 | ctx = unfi[n] |
|
1410 | markers = obsstore.successors.get(n, ()) | |
1409 | except error.RepoError: |
|
1411 | if missing and not markers: | |
1410 | # XXX node unknown locally, we should properly follow marker |
|
1412 | # dead end, mark it as such | |
1411 | newreplacements.append((n, ())) |
|
1413 | newreplacements.append((n, ())) | |
1412 | continue |
|
1414 | for marker in markers: | |
1413 |
|
1415 | nsuccs = marker[1] | ||
1414 | for marker in obsolete.successormarkers(ctx): |
|
|||
1415 | nsuccs = marker.succnodes() |
|
|||
1416 | newreplacements.append((n, nsuccs)) |
|
1416 | newreplacements.append((n, nsuccs)) | |
1417 | for nsucc in nsuccs: |
|
1417 | for nsucc in nsuccs: | |
1418 | if nsucc not in seensuccs: |
|
1418 | if nsucc not in seensuccs: |
@@ -54,6 +54,40 Test that histedit learns about obsolesc | |||||
54 | 3e30a45cf2f719e96ab3922dfe039cfd047956ce 0 {e72d22b19f8ecf4150ab4f91d0973fd9955d3ddf} (*) {'user': 'test'} (glob) |
|
54 | 3e30a45cf2f719e96ab3922dfe039cfd047956ce 0 {e72d22b19f8ecf4150ab4f91d0973fd9955d3ddf} (*) {'user': 'test'} (glob) | |
55 | 1b2d564fad96311b45362f17c2aa855150efb35f 46abc7c4d8738e8563e577f7889e1b6db3da4199 0 (*) {'user': 'test'} (glob) |
|
55 | 1b2d564fad96311b45362f17c2aa855150efb35f 46abc7c4d8738e8563e577f7889e1b6db3da4199 0 (*) {'user': 'test'} (glob) | |
56 | 114f4176969ef342759a8a57e6bccefc4234829b 49d44ab2be1b67a79127568a67c9c99430633b48 0 (*) {'user': 'test'} (glob) |
|
56 | 114f4176969ef342759a8a57e6bccefc4234829b 49d44ab2be1b67a79127568a67c9c99430633b48 0 (*) {'user': 'test'} (glob) | |
|
57 | ||||
|
58 | With some node gone missing during the edit. | |||
|
59 | ||||
|
60 | $ echo "pick `hg log -r 0 -T '{node|short}'`" > plan | |||
|
61 | $ echo "pick `hg log -r 6 -T '{node|short}'`" >> plan | |||
|
62 | $ echo "edit `hg log -r 5 -T '{node|short}'`" >> plan | |||
|
63 | $ hg histedit -r 'all()' --commands plan | |||
|
64 | Editing (49d44ab2be1b), you may commit or record as needed now. | |||
|
65 | (hg histedit --continue to resume) | |||
|
66 | [1] | |||
|
67 | $ hg st | |||
|
68 | A b | |||
|
69 | A d | |||
|
70 | ? plan | |||
|
71 | $ hg commit --amend -X . -m XXXXXX | |||
|
72 | $ hg commit --amend -X . -m b2 | |||
|
73 | $ hg --hidden --config extensions.strip= strip 'desc(XXXXXX)' --no-backup | |||
|
74 | $ hg histedit --continue | |||
|
75 | $ hg log -G | |||
|
76 | @ 9:273c1f3b8626 c | |||
|
77 | | | |||
|
78 | o 8:aba7da937030 b2 | |||
|
79 | | | |||
|
80 | o 0:cb9a9f314b8b a | |||
|
81 | ||||
|
82 | $ hg debugobsolete | |||
|
83 | e72d22b19f8ecf4150ab4f91d0973fd9955d3ddf 49d44ab2be1b67a79127568a67c9c99430633b48 0 (*) {'user': 'test'} (glob) | |||
|
84 | 3e30a45cf2f719e96ab3922dfe039cfd047956ce 0 {e72d22b19f8ecf4150ab4f91d0973fd9955d3ddf} (*) {'user': 'test'} (glob) | |||
|
85 | 1b2d564fad96311b45362f17c2aa855150efb35f 46abc7c4d8738e8563e577f7889e1b6db3da4199 0 (*) {'user': 'test'} (glob) | |||
|
86 | 114f4176969ef342759a8a57e6bccefc4234829b 49d44ab2be1b67a79127568a67c9c99430633b48 0 (*) {'user': 'test'} (glob) | |||
|
87 | 76f72745eac0643d16530e56e2f86e36e40631f1 2ca853e48edbd6453a0674dc0fe28a0974c51b9c 0 (*) {'user': 'test'} (glob) | |||
|
88 | 2ca853e48edbd6453a0674dc0fe28a0974c51b9c aba7da93703075eec9fb1dbaf143ff2bc1c49d46 0 (*) {'user': 'test'} (glob) | |||
|
89 | 49d44ab2be1b67a79127568a67c9c99430633b48 273c1f3b86267ed3ec684bb13af1fa4d6ba56e02 0 (*) {'user': 'test'} (glob) | |||
|
90 | 46abc7c4d8738e8563e577f7889e1b6db3da4199 aba7da93703075eec9fb1dbaf143ff2bc1c49d46 0 (*) {'user': 'test'} (glob) | |||
57 | $ cd .. |
|
91 | $ cd .. | |
58 |
|
92 | |||
59 | Base setup for the rest of the testing |
|
93 | Base setup for the rest of the testing |
General Comments 0
You need to be logged in to leave comments.
Login now