##// END OF EJS Templates
rebase: refactor logic to read rebasestate in a separate function...
Pulkit Goyal -
r38534:19076e2d default
parent child Browse files
Show More
@@ -225,14 +225,26 b' class rebaseruntime(object):'
225
225
226 def restorestatus(self):
226 def restorestatus(self):
227 """Restore a previously stored status"""
227 """Restore a previously stored status"""
228 data = self._read()
229 self.repo.ui.debug('rebase status resumed\n')
230
231 self.originalwd = data['originalwd']
232 self.destmap = data['destmap']
233 self.state = data['state']
234 self.skipped = data['skipped']
235 self.collapsef = data['collapse']
236 self.keepf = data['keep']
237 self.keepbranchesf = data['keepbranches']
238 self.external = data['external']
239 self.activebookmark = data['activebookmark']
240
241 def _read(self):
228 self.prepared = True
242 self.prepared = True
229 repo = self.repo
243 repo = self.repo
230 assert repo.filtername is None
244 assert repo.filtername is None
231 keepbranches = None
245 data = {'keepbranches': None, 'collapse': None, 'activebookmark': None,
246 'external': nullrev, 'keep': None, 'originalwd': None}
232 legacydest = None
247 legacydest = None
233 collapse = False
234 external = nullrev
235 activebookmark = None
236 state = {}
248 state = {}
237 destmap = {}
249 destmap = {}
238
250
@@ -240,25 +252,25 b' class rebaseruntime(object):'
240 f = repo.vfs("rebasestate")
252 f = repo.vfs("rebasestate")
241 for i, l in enumerate(f.read().splitlines()):
253 for i, l in enumerate(f.read().splitlines()):
242 if i == 0:
254 if i == 0:
243 originalwd = repo[l].rev()
255 data['originalwd'] = repo[l].rev()
244 elif i == 1:
256 elif i == 1:
245 # this line should be empty in newer version. but legacy
257 # this line should be empty in newer version. but legacy
246 # clients may still use it
258 # clients may still use it
247 if l:
259 if l:
248 legacydest = repo[l].rev()
260 legacydest = repo[l].rev()
249 elif i == 2:
261 elif i == 2:
250 external = repo[l].rev()
262 data['external'] = repo[l].rev()
251 elif i == 3:
263 elif i == 3:
252 collapse = bool(int(l))
264 data['collapse'] = bool(int(l))
253 elif i == 4:
265 elif i == 4:
254 keep = bool(int(l))
266 data['keep'] = bool(int(l))
255 elif i == 5:
267 elif i == 5:
256 keepbranches = bool(int(l))
268 data['keepbranches'] = bool(int(l))
257 elif i == 6 and not (len(l) == 81 and ':' in l):
269 elif i == 6 and not (len(l) == 81 and ':' in l):
258 # line 6 is a recent addition, so for backwards
270 # line 6 is a recent addition, so for backwards
259 # compatibility check that the line doesn't look like the
271 # compatibility check that the line doesn't look like the
260 # oldrev:newrev lines
272 # oldrev:newrev lines
261 activebookmark = l
273 data['activebookmark'] = l
262 else:
274 else:
263 args = l.split(':')
275 args = l.split(':')
264 oldrev = repo[args[0]].rev()
276 oldrev = repo[args[0]].rev()
@@ -281,30 +293,24 b' class rebaseruntime(object):'
281 raise
293 raise
282 cmdutil.wrongtooltocontinue(repo, _('rebase'))
294 cmdutil.wrongtooltocontinue(repo, _('rebase'))
283
295
284 if keepbranches is None:
296 if data['keepbranches'] is None:
285 raise error.Abort(_('.hg/rebasestate is incomplete'))
297 raise error.Abort(_('.hg/rebasestate is incomplete'))
286
298
299 data['destmap'] = destmap
300 data['state'] = state
287 skipped = set()
301 skipped = set()
288 # recompute the set of skipped revs
302 # recompute the set of skipped revs
289 if not collapse:
303 if not data['collapse']:
290 seen = set(destmap.values())
304 seen = set(destmap.values())
291 for old, new in sorted(state.items()):
305 for old, new in sorted(state.items()):
292 if new != revtodo and new in seen:
306 if new != revtodo and new in seen:
293 skipped.add(old)
307 skipped.add(old)
294 seen.add(new)
308 seen.add(new)
309 data['skipped'] = skipped
295 repo.ui.debug('computed skipped revs: %s\n' %
310 repo.ui.debug('computed skipped revs: %s\n' %
296 (' '.join('%d' % r for r in sorted(skipped)) or ''))
311 (' '.join('%d' % r for r in sorted(skipped)) or ''))
297 repo.ui.debug('rebase status resumed\n')
298
312
299 self.originalwd = originalwd
313 return data
300 self.destmap = destmap
301 self.state = state
302 self.skipped = skipped
303 self.collapsef = collapse
304 self.keepf = keep
305 self.keepbranchesf = keepbranches
306 self.external = external
307 self.activebookmark = activebookmark
308
314
309 def _handleskippingobsolete(self, obsoleterevs, destmap):
315 def _handleskippingobsolete(self, obsoleterevs, destmap):
310 """Compute structures necessary for skipping obsolete revisions
316 """Compute structures necessary for skipping obsolete revisions
General Comments 0
You need to be logged in to leave comments. Login now