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.
--- 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