# HG changeset patch # User Patrick Mezard # Date 1285627267 -7200 # Node ID 9b3913baba0c2d3abc03d31ed2a5a7a60f95db60 # Parent 77600d697d0e60a74e39aaba6771c5fd8c05cabb patch: upgrade to git patch when removing binary file Otherwise it may cause data loss when removing binary files in mq with --git=auto. diff -r 77600d697d0e -r 9b3913baba0c mercurial/patch.py --- a/mercurial/patch.py Mon Sep 27 22:47:10 2010 +0200 +++ b/mercurial/patch.py Tue Sep 28 00:41:07 2010 +0200 @@ -1588,7 +1588,7 @@ else: header.append('deleted file mode %s\n' % gitmode[man1.flags(f)]) - elif not to: + elif not to or util.binary(to): # regular diffs cannot represent empty file deletion losedatafn(f) else: diff -r 77600d697d0e -r 9b3913baba0c tests/test-diff-upgrade --- a/tests/test-diff-upgrade Mon Sep 27 22:47:10 2010 +0200 +++ b/tests/test-diff-upgrade Tue Sep 28 00:41:07 2010 +0200 @@ -43,10 +43,10 @@ echo '% git=no: git diff for single regular file' hg autodiff --git=yes regular -echo '% git=auto: regular diff for regular files and removals' -hg autodiff --git=auto regular newregular rmregular rmbinary rmexec +echo '% git=auto: regular diff for regular files and non-binary removals' +hg autodiff --git=auto regular newregular rmregular rmexec -for f in exec newexec setexec unsetexec binary newbinary newempty rmempty; do +for f in exec newexec setexec unsetexec binary newbinary newempty rmempty rmbinary; do echo '% git=auto: git diff for' $f hg autodiff --git=auto $f done diff -r 77600d697d0e -r 9b3913baba0c tests/test-diff-upgrade.out --- a/tests/test-diff-upgrade.out Mon Sep 27 22:47:10 2010 +0200 +++ b/tests/test-diff-upgrade.out Tue Sep 28 00:41:07 2010 +0200 @@ -62,7 +62,7 @@ @@ -1,1 +1,2 @@ regular +regular -% git=auto: regular diff for regular files and removals +% git=auto: regular diff for regular files and non-binary removals diff -r b3f053cd7c7f newregular --- /dev/null +++ b/newregular @@ -74,8 +74,6 @@ @@ -1,1 +1,2 @@ regular +regular -diff -r b3f053cd7c7f rmbinary -Binary file rmbinary has changed diff -r b3f053cd7c7f rmexec --- a/rmexec +++ /dev/null @@ -129,6 +127,10 @@ % git=auto: git diff for rmempty diff --git a/rmempty b/rmempty deleted file mode 100644 +% git=auto: git diff for rmbinary +diff --git a/rmbinary b/rmbinary +deleted file mode 100644 +Binary file rmbinary has changed % git=warn: regular diff with data loss warnings diff -r b3f053cd7c7f binary Binary file binary has changed @@ -172,6 +174,7 @@ data lost for: newbinary data lost for: newempty data lost for: newexec +data lost for: rmbinary data lost for: rmempty data lost for: setexec data lost for: unsetexec