[PATCH] rebase: add --tool argument for specifying merge tool
Stefano Tortarolo
stefano.tortarolo at gmail.com
Sat Apr 2 04:08:11 CDT 2011
# HG changeset patch
# User Stefano Tortarolo <stefano.tortarolo at gmail.com>
# Date 1301735225 -7200
# Node ID 487818714d2f280ac575b353a7a21b5ca19a08a8
# Parent 5ed036e42fd9d2890d1312636eeb68e78b2ff759
rebase: add --tool argument for specifying merge tool
diff --git a/hgext/rebase.py b/hgext/rebase.py
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -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,
diff --git a/tests/test-rebase-parameters.t b/tests/test-rebase-parameters.t
--- a/tests/test-rebase-parameters.t
+++ b/tests/test-rebase-parameters.t
@@ -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)
+
More information about the Mercurial-devel
mailing list