patch: make diff in git mode respect --text option (
issue5510)
This changeset makes patch respect -a/--text option in --git mode by aligning
its behaviour with git itself.
--- a/mercurial/patch.py Wed Apr 05 00:34:58 2017 +0900
+++ b/mercurial/patch.py Wed Apr 05 15:15:06 2017 -0700
@@ -2552,7 +2552,7 @@
elif revs and not repo.ui.quiet:
header.append(diffline(path1, revs))
- if binary and opts.git and not opts.nobinary:
+ if binary and opts.git and not opts.nobinary and not opts.text:
text = mdiff.b85diff(content1, content2)
if text:
header.append('index %s..%s' %
--- a/tests/test-diff-binary-file.t Wed Apr 05 00:34:58 2017 +0900
+++ b/tests/test-diff-binary-file.t Wed Apr 05 15:15:06 2017 -0700
@@ -73,5 +73,39 @@
literal 5
Mc$_OqttjCF00uV!&;S4c
+ $ cd ..
+
+Test text mode with extended git-style diff format
+ $ hg init b
+ $ cd b
+ $ cat > writebin.py <<EOF
+ > import sys
+ > path = sys.argv[1]
+ > open(path, 'wb').write('\x00\x01\x02\x03')
+ > EOF
+ $ python writebin.py binfile.bin
+ $ hg add binfile.bin
+ $ hg ci -m 'add binfile.bin'
+
+ $ echo >> binfile.bin
+ $ hg ci -m 'change binfile.bin'
+
+ $ hg diff --git -a -r 0 -r 1
+ diff --git a/binfile.bin b/binfile.bin
+ --- a/binfile.bin
+ +++ b/binfile.bin
+ @@ -1,1 +1,1 @@
+ -\x00\x01\x02\x03 (esc)
+ \ No newline at end of file
+ +\x00\x01\x02\x03 (esc)
+
+ $ HGPLAIN=1 hg diff --git -a -r 0 -r 1
+ diff --git a/binfile.bin b/binfile.bin
+ --- a/binfile.bin
+ +++ b/binfile.bin
+ @@ -1,1 +1,1 @@
+ -\x00\x01\x02\x03 (esc)
+ \ No newline at end of file
+ +\x00\x01\x02\x03 (esc)
$ cd ..