##// END OF EJS Templates
histedit: also handle locally missing nodes when reading obsolescence...
Pierre-Yves David -
r28224:8ec5478a default
parent child Browse files
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