Show More
@@ -153,22 +153,7 b' def strip(ui, repo, nodelist, backup=Tru' | |||
|
153 | 153 | stripobsidx = [i for i, m in enumerate(repo.obsstore) |
|
154 | 154 | if m in obsmarkers] |
|
155 | 155 | |
|
156 | # compute necessary bookmark movement | |
|
157 | bm = repo._bookmarks | |
|
158 | updatebm = [] | |
|
159 | for m in bm: | |
|
160 | rev = repo[bm[m]].rev() | |
|
161 | if rev in tostrip: | |
|
162 | updatebm.append(m) | |
|
163 | newbmtarget = None | |
|
164 | if updatebm: # don't compute anything is there is no bookmark to move anyway | |
|
165 | # For a set s, max(parents(s) - s) is the same as max(heads(::s - s)), | |
|
166 | # but is much faster | |
|
167 | newbmtarget = repo.revs('max(parents(%ld) - (%ld))', tostrip, tostrip) | |
|
168 | if newbmtarget: | |
|
169 | newbmtarget = repo[newbmtarget.first()].node() | |
|
170 | else: | |
|
171 | newbmtarget = '.' | |
|
156 | newbmtarget, updatebm = _bookmarkmovements(repo, tostrip) | |
|
172 | 157 | |
|
173 | 158 | backupfile = None |
|
174 | 159 | node = nodelist[-1] |
@@ -235,7 +220,7 b' def strip(ui, repo, nodelist, backup=Tru' | |||
|
235 | 220 | |
|
236 | 221 | with repo.transaction('repair') as tr: |
|
237 | 222 | bmchanges = [(m, repo[newbmtarget].node()) for m in updatebm] |
|
238 | bm.applychanges(repo, tr, bmchanges) | |
|
223 | repo._bookmarks.applychanges(repo, tr, bmchanges) | |
|
239 | 224 | |
|
240 | 225 | # remove undo files |
|
241 | 226 | for undovfs, undofile in repo.undofiles(): |
@@ -267,6 +252,25 b' def strip(ui, repo, nodelist, backup=Tru' | |||
|
267 | 252 | # extensions can use it |
|
268 | 253 | return backupfile |
|
269 | 254 | |
|
255 | def _bookmarkmovements(repo, tostrip): | |
|
256 | # compute necessary bookmark movement | |
|
257 | bm = repo._bookmarks | |
|
258 | updatebm = [] | |
|
259 | for m in bm: | |
|
260 | rev = repo[bm[m]].rev() | |
|
261 | if rev in tostrip: | |
|
262 | updatebm.append(m) | |
|
263 | newbmtarget = None | |
|
264 | if updatebm: # don't compute anything is there is no bookmark to move anyway | |
|
265 | # For a set s, max(parents(s) - s) is the same as max(heads(::s - s)), | |
|
266 | # but is much faster | |
|
267 | newbmtarget = repo.revs('max(parents(%ld) - (%ld))', tostrip, tostrip) | |
|
268 | if newbmtarget: | |
|
269 | newbmtarget = repo[newbmtarget.first()].node() | |
|
270 | else: | |
|
271 | newbmtarget = '.' | |
|
272 | return newbmtarget, updatebm | |
|
273 | ||
|
270 | 274 | def _createstripbackup(repo, stripbases, node, topic): |
|
271 | 275 | # backup the changeset we are about to strip |
|
272 | 276 | vfs = repo.vfs |
General Comments 0
You need to be logged in to leave comments.
Login now