record: catch PatchErrors from internalpatch and display error message
This resulted in big ugly tracebacks in
issue1282, for example.
--- a/hgext/record.py Sun Aug 31 11:34:52 2008 +0200
+++ b/hgext/record.py Sun Aug 31 11:36:07 2008 +0200
@@ -468,9 +468,16 @@
# 3b. (apply)
if dopatch:
- ui.debug('applying patch\n')
- ui.debug(fp.getvalue())
- patch.internalpatch(fp, ui, 1, repo.root)
+ try:
+ ui.debug('applying patch\n')
+ ui.debug(fp.getvalue())
+ patch.internalpatch(fp, ui, 1, repo.root)
+ except patch.PatchError, err:
+ s = str(err)
+ if s:
+ raise util.Abort(s)
+ else:
+ raise util.Abort(_('patch failed to apply'))
del fp
# 4. We prepared working directory according to filtered patch.