269 |
269 |
270 def concludenode(repo, rev, p1, p2, commitmsg=None, extrafn=None): |
270 def concludenode(repo, rev, p1, p2, commitmsg=None, extrafn=None): |
271 'Commit the changes and store useful information in extra' |
271 'Commit the changes and store useful information in extra' |
272 try: |
272 try: |
273 repo.dirstate.setparents(repo[p1].node(), repo[p2].node()) |
273 repo.dirstate.setparents(repo[p1].node(), repo[p2].node()) |
|
274 ctx = repo[rev] |
274 if commitmsg is None: |
275 if commitmsg is None: |
275 commitmsg = repo[rev].description() |
276 commitmsg = ctx.description() |
276 ctx = repo[rev] |
|
277 extra = {'rebase_source': ctx.hex()} |
277 extra = {'rebase_source': ctx.hex()} |
278 if extrafn: |
278 if extrafn: |
279 extrafn(ctx, extra) |
279 extrafn(ctx, extra) |
280 # Commit might fail if unresolved files exist |
280 # Commit might fail if unresolved files exist |
281 newrev = repo.commit(text=commitmsg, user=ctx.user(), |
281 newrev = repo.commit(text=commitmsg, user=ctx.user(), |
345 return False |
345 return False |
346 |
346 |
347 def updatemq(repo, state, skipped, **opts): |
347 def updatemq(repo, state, skipped, **opts): |
348 'Update rebased mq patches - finalize and then import them' |
348 'Update rebased mq patches - finalize and then import them' |
349 mqrebase = {} |
349 mqrebase = {} |
350 for p in repo.mq.applied: |
350 mq = repo.mq |
351 if repo[p.node].rev() in state: |
351 for p in mq.applied: |
|
352 rev = repo[p.node].rev() |
|
353 if rev in state: |
352 repo.ui.debug('revision %d is an mq patch (%s), finalize it.\n' % |
354 repo.ui.debug('revision %d is an mq patch (%s), finalize it.\n' % |
353 (repo[p.node].rev(), p.name)) |
355 (rev, p.name)) |
354 mqrebase[repo[p.node].rev()] = (p.name, isagitpatch(repo, p.name)) |
356 mqrebase[rev] = (p.name, isagitpatch(repo, p.name)) |
355 |
357 |
356 if mqrebase: |
358 if mqrebase: |
357 repo.mq.finish(repo, mqrebase.keys()) |
359 mq.finish(repo, mqrebase.keys()) |
358 |
360 |
359 # We must start import from the newest revision |
361 # We must start import from the newest revision |
360 for rev in sorted(mqrebase, reverse=True): |
362 for rev in sorted(mqrebase, reverse=True): |
361 if rev not in skipped: |
363 if rev not in skipped: |
362 repo.ui.debug('import mq patch %d (%s)\n' |
364 name, isgit = mqrebase[rev] |
363 % (state[rev], mqrebase[rev][0])) |
365 repo.ui.debug('import mq patch %d (%s)\n' % (state[rev], name)) |
364 repo.mq.qimport(repo, (), patchname=mqrebase[rev][0], |
366 mq.qimport(repo, (), patchname=name, git=isgit, |
365 git=mqrebase[rev][1],rev=[str(state[rev])]) |
367 rev=[str(state[rev])]) |
366 repo.mq.save_dirty() |
368 mq.save_dirty() |
367 qrepo = repo.mq.qrepo() |
369 qrepo = mq.qrepo() |
368 if qrepo: |
370 if qrepo: |
369 qrepo[None].add(repo.mq.added) |
371 qrepo[None].add(mq.added) |
370 repo.mq.added = [] |
372 mq.added = [] |
371 |
373 |
372 def storestatus(repo, originalwd, target, state, collapse, keep, keepbranches, |
374 def storestatus(repo, originalwd, target, state, collapse, keep, keepbranches, |
373 external): |
375 external): |
374 'Store the current status to allow recovery' |
376 'Store the current status to allow recovery' |
375 f = repo.opener("rebasestate", "w") |
377 f = repo.opener("rebasestate", "w") |