[PATCH 2 of 3 RFC] import: if --exact fails, suggest importing without --exact

Augie Fackler raf at durin42.com
Fri Mar 11 13:25:49 EST 2016

# HG changeset patch
# User Augie Fackler <augie at google.com>
# Date 1457538538 18000
#      Wed Mar 09 10:48:58 2016 -0500
# Node ID 602504c64084d85820c883a43b02951a61e992f5
# Parent  288dbf95fd9eb74148d0d94f0b7a05a4d3d7b50d
# EXP-Topic import
import: if --exact fails, suggest importing without --exact

I've heard enough reports that users get confused by this that adding
a hint here seems prudent. I'm not in love with the specific hint, but
it seems like a slight improvement over the status quo.

diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -1041,7 +1041,9 @@ def tryimportone(ui, repo, hunk, parents
             # and branch bits
             ui.warn(_("warning: can't check exact import with --no-commit\n"))
         elif opts.get('exact') and hex(n) != nodeid:
-            raise error.Abort(_('patch is damaged or loses information'))
+            raise error.Abort(_('patch is damaged or loses information'),
+                              hint=_('try again without --exact, as the data'
+                                     ' loss may be minor'))
         msg = _('applied to working directory')
         if n:
             # i18n: refers to a short changeset id
diff --git a/tests/test-import-merge.t b/tests/test-import-merge.t
--- a/tests/test-import-merge.t
+++ b/tests/test-import-merge.t
@@ -156,6 +156,7 @@ Test that --exact on a bad header doesn'
   transaction abort!
   rollback completed
   abort: patch is damaged or loses information
+  (try again without --exact, as the data loss may be minor)
   $ hg verify
   checking changesets

More information about the Mercurial-devel mailing list