svn.apache.org doesn't let me commit this, even though it accepts my
password...

[[[
patch: Make binary patches and git mode changes coexist.

* subversion/libsvn_diff/parse-diff.c
  (transitions): Add missing transition.

* subversion/tests/cmdline/patch_tests.py
  (patch_binary_file): Tweak the test to trigger the new codepath.
]]]

[[[
Index: subversion/libsvn_diff/parse-diff.c
===================================================================
--- subversion/libsvn_diff/parse-diff.c (revision 1705734)
+++ subversion/libsvn_diff/parse-diff.c (working copy)
@@ -2038,6 +2038,7 @@ static struct transition transitions[] =
 
   {"GIT binary patch",  state_git_diff_seen,    binary_patch_start},
   {"GIT binary patch",  state_git_tree_seen,    binary_patch_start},
+  {"GIT binary patch",  state_git_mode_seen,    binary_patch_start},
 };
 
 svn_error_t *
Index: subversion/tests/cmdline/patch_tests.py
===================================================================
--- subversion/tests/cmdline/patch_tests.py     (revision 1705734)
+++ subversion/tests/cmdline/patch_tests.py     (working copy)
@@ -5659,7 +5659,13 @@ def patch_binary_file(sbox):
   sbox.simple_revert('iota')
 
   tmp = sbox.get_tempname()
-  svntest.main.file_write(tmp, ''.join(diff_output))
+  patch = diff_output[:]
+  patch[3:3] = [
+    "old mode 100644\n",
+    "new mode 100755\n",
+    #"index ...\n",
+  ]
+  svntest.main.file_write(tmp, ''.join(patch))
 
   expected_output = wc.State(wc_dir, {
     'iota'              : Item(status='UU'),
@@ -5666,7 +5672,8 @@ def patch_binary_file(sbox):
   })
   expected_disk = svntest.main.greek_state.copy()
   expected_disk.tweak('iota',
-                      props={'svn:mime-type':'application/binary'},
+                      props={'svn:mime-type':'application/binary',
+                             'svn:executable': '*'},
                       contents =
                       'This is the file \'iota\'.\n'
                       '\0\202\203\204\205\206\207nsomething\nelse\xFF')
]]]

Reply via email to