Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/commands.py @ 22903:3d51e756b1ec
graft: use merge.graft
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Mon, 13 Oct 2014 17:12:31 -0500 |
parents | 722117c8e023 |
children | 2d0b60b5abc0 |
comparison
equal
deleted
inserted
replaced
22902:ce0592328d68 | 22903:3d51e756b1ec |
---|---|
3452 if not revs: | 3452 if not revs: |
3453 return -1 | 3453 return -1 |
3454 | 3454 |
3455 wlock = repo.wlock() | 3455 wlock = repo.wlock() |
3456 try: | 3456 try: |
3457 current = repo['.'] | |
3458 for pos, ctx in enumerate(repo.set("%ld", revs)): | 3457 for pos, ctx in enumerate(repo.set("%ld", revs)): |
3459 | 3458 |
3460 ui.status(_('grafting revision %s\n') % ctx.rev()) | 3459 ui.status(_('grafting revision %s\n') % ctx.rev()) |
3461 if opts.get('dry_run'): | 3460 if opts.get('dry_run'): |
3462 continue | 3461 continue |
3480 # perform the graft merge with p1(rev) as 'ancestor' | 3479 # perform the graft merge with p1(rev) as 'ancestor' |
3481 try: | 3480 try: |
3482 # ui.forcemerge is an internal variable, do not document | 3481 # ui.forcemerge is an internal variable, do not document |
3483 repo.ui.setconfig('ui', 'forcemerge', opts.get('tool', ''), | 3482 repo.ui.setconfig('ui', 'forcemerge', opts.get('tool', ''), |
3484 'graft') | 3483 'graft') |
3485 stats = mergemod.update(repo, ctx.node(), True, True, False, | 3484 stats = mergemod.graft(repo, ctx, ctx.p1(), |
3486 ctx.p1().node(), | 3485 ['local', 'graft']) |
3487 labels=['local', 'graft']) | |
3488 # drop the second merge parent | |
3489 repo.dirstate.beginparentchange() | |
3490 repo.setparents(current.node(), nullid) | |
3491 repo.dirstate.write() | |
3492 # fix up dirstate for copies and renames | |
3493 copies.duplicatecopies(repo, ctx.rev(), ctx.p1().rev()) | |
3494 repo.dirstate.endparentchange() | |
3495 finally: | 3486 finally: |
3496 repo.ui.setconfig('ui', 'forcemerge', '', 'graft') | 3487 repo.ui.setconfig('ui', 'forcemerge', '', 'graft') |
3497 # report any conflicts | 3488 # report any conflicts |
3498 if stats and stats[3] > 0: | 3489 if stats and stats[3] > 0: |
3499 # write out state for --continue | 3490 # write out state for --continue |
3508 # commit | 3499 # commit |
3509 node = repo.commit(text=message, user=user, | 3500 node = repo.commit(text=message, user=user, |
3510 date=date, extra=extra, editor=editor) | 3501 date=date, extra=extra, editor=editor) |
3511 if node is None: | 3502 if node is None: |
3512 ui.status(_('graft for revision %s is empty\n') % ctx.rev()) | 3503 ui.status(_('graft for revision %s is empty\n') % ctx.rev()) |
3513 else: | |
3514 current = repo[node] | |
3515 finally: | 3504 finally: |
3516 wlock.release() | 3505 wlock.release() |
3517 | 3506 |
3518 # remove state when we complete successfully | 3507 # remove state when we complete successfully |
3519 if not opts.get('dry_run'): | 3508 if not opts.get('dry_run'): |