Mercurial > hg
changeset 13856:0995eee8ffe4
rebase: add --tool argument for specifying merge tool
author | Stefano Tortarolo <stefano.tortarolo@gmail.com> |
---|---|
date | Sat, 02 Apr 2011 11:07:05 +0200 |
parents | 3c43dd85d3d1 |
children | ba1f98f877ec |
files | hgext/rebase.py tests/test-rebase-parameters.t |
diffstat | 2 files changed, 71 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/rebase.py Fri Apr 01 22:44:58 2011 +0200 +++ b/hgext/rebase.py Sat Apr 02 11:07:05 2011 +0200 @@ -114,6 +114,8 @@ if srcf or basef or destf: raise util.Abort( _('abort and continue do not allow specifying revisions')) + if opts.get('tool', False): + ui.warn(_('tool option will be ignored\n')) (originalwd, target, state, skipped, collapsef, keepf, keepbranchesf, external) = restorestatus(repo) @@ -167,10 +169,14 @@ if len(repo.parents()) == 2: repo.ui.debug('resuming interrupted rebase\n') else: - stats = rebasenode(repo, rev, p1, p2, state) - if stats and stats[3] > 0: - raise util.Abort(_('unresolved conflicts (see hg ' - 'resolve, then hg rebase --continue)')) + try: + ui.setconfig('ui', 'forcemerge', opts.get('tool', '')) + stats = rebasenode(repo, rev, p1, p2, state) + if stats and stats[3] > 0: + raise util.Abort(_('unresolved conflicts (see hg ' + 'resolve, then hg rebase --continue)')) + finally: + ui.setconfig('ui', 'forcemerge', '') updatedirstate(repo, rev, target, p2) if not collapsef: newrev = concludenode(repo, rev, p1, p2, extrafn=extrafn) @@ -592,6 +598,7 @@ ('', 'keepbranches', False, _('keep original branch names')), ('', 'detach', False, _('force detaching of source from its original ' 'branch')), + ('t', 'tool', '', _('specify merge tool')), ('c', 'continue', False, _('continue an interrupted rebase')), ('a', 'abort', False, _('abort an interrupted rebase'))] + templateopts,
--- a/tests/test-rebase-parameters.t Fri Apr 01 22:44:58 2011 +0200 +++ b/tests/test-rebase-parameters.t Sat Apr 02 11:07:05 2011 +0200 @@ -330,3 +330,63 @@ $ cd .. +Test --tool parameter: + + $ hg init b + $ cd b + + $ echo c1 > c1 + $ hg ci -Am c1 + adding c1 + + $ echo c2 > c2 + $ hg ci -Am c2 + adding c2 + + $ hg up -q 0 + $ echo c2b > c2 + $ hg ci -Am c2b + adding c2 + created new head + + $ cd .. + + $ hg clone -q -u . b b1 + $ cd b1 + + $ hg rebase -s 2 -d 1 --tool internal:local + saved backup bundle to $TESTTMP/b1/.hg/strip-backup/*-backup.hg (glob) + + $ hg cat c2 + c2 + + $ cd .. + + + $ hg clone -q -u . b b2 + $ cd b2 + + $ hg rebase -s 2 -d 1 --tool internal:other + saved backup bundle to $TESTTMP/b2/.hg/strip-backup/*-backup.hg (glob) + + $ hg cat c2 + c2b + + $ cd .. + + + $ hg clone -q -u . b b3 + $ cd b3 + + $ hg rebase -s 2 -d 1 --tool internal:fail + abort: unresolved conflicts (see hg resolve, then hg rebase --continue) + [255] + + $ hg resolve -l + U c2 + + $ hg resolve -m c2 + $ hg rebase -c --tool internal:fail + tool option will be ignored + saved backup bundle to $TESTTMP/b3/.hg/strip-backup/*-backup.hg (glob) +