--- a/hgext/transplant.py Sat Apr 21 21:40:25 2012 +0200
+++ b/hgext/transplant.py Sun Apr 22 16:40:38 2012 +0200
@@ -20,6 +20,9 @@
from mercurial import patch, revlog, scmutil, util, error, cmdutil
from mercurial import revset, templatekw
+class TransplantError(error.Abort):
+ pass
+
cmdtable = {}
command = cmdutil.command(cmdtable)
@@ -171,11 +174,17 @@
del revmap[rev]
if patchfile or domerge:
try:
- n = self.applyone(repo, node,
- source.changelog.read(node),
- patchfile, merge=domerge,
- log=opts.get('log'),
- filter=opts.get('filter'))
+ try:
+ n = self.applyone(repo, node,
+ source.changelog.read(node),
+ patchfile, merge=domerge,
+ log=opts.get('log'),
+ filter=opts.get('filter'))
+ except TransplantError:
+ # Do not rollback, it is up to the user to
+ # fix the merge or cancel everything
+ tr.close()
+ raise
if n and domerge:
self.ui.status(_('%s merged at %s\n') % (revstr,
short(n)))
@@ -259,8 +268,8 @@
p2 = node
self.log(user, date, message, p1, p2, merge=merge)
self.ui.write(str(inst) + '\n')
- raise util.Abort(_('fix up the merge and run '
- 'hg transplant --continue'))
+ raise TransplantError(_('fix up the merge and run '
+ 'hg transplant --continue'))
else:
files = None
if merge: