changeset 14328:3c65cdcf3ba6 stable

simplemerge: do not allow binary files to abort an entire merge When used as the default merge tool, or used as a --tool override, the simplemerge script should not be allowed to raise a util.Abort just because one of the files being merged is binary. Instead, return 1 and mark the file unresolved.
author Steve Borho <steve@borho.org>
date Fri, 13 May 2011 19:46:36 -0500
parents 2a6ee654655e
children abaacdab38f6 afb2ed5b37a2
files mercurial/simplemerge.py tests/test-simplemerge-cmd.t
diffstat 2 files changed, 10 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/simplemerge.py	Mon May 09 10:46:54 2011 +0200
+++ b/mercurial/simplemerge.py	Fri May 13 19:46:36 2011 -0500
@@ -407,10 +407,10 @@
         f.close()
         if util.binary(text):
             msg = _("%s looks like a binary file.") % filename
+            if not opts.get('quiet'):
+                ui.warn(_('warning: %s\n') % msg)
             if not opts.get('text'):
                 raise util.Abort(msg)
-            elif not opts.get('quiet'):
-                ui.warn(_('warning: %s\n') % msg)
         return text
 
     name_a = local
@@ -423,9 +423,12 @@
     if labels:
         raise util.Abort(_("can only specify two labels."))
 
-    localtext = readfile(local)
-    basetext = readfile(base)
-    othertext = readfile(other)
+    try:
+        localtext = readfile(local)
+        basetext = readfile(base)
+        othertext = readfile(other)
+    except util.Abort:
+        return 1
 
     local = os.path.realpath(local)
     if not opts.get('print'):
--- a/tests/test-simplemerge-cmd.t	Mon May 09 10:46:54 2011 +0200
+++ b/tests/test-simplemerge-cmd.t	Fri May 13 19:46:36 2011 -0500
@@ -99,8 +99,8 @@
   $ python -c "f = file('binary-local', 'w'); f.write('\x00'); f.close()"
   $ cat orig >> binary-local
   $ python simplemerge -p binary-local base other
-  abort: binary-local looks like a binary file.
-  [255]
+  warning: binary-local looks like a binary file.
+  [1]
 
 binary file --text