@@ -199,11 +199,11 @@ class Diff(object):
199199 re_header = re .compile (r"""
200200 ^diff[ ]--git
201201 [ ](?:a/)?(?P<a_path_fallback>.+?)[ ](?:b/)?(?P<b_path_fallback>.+?)\n
202+ (?:^old[ ]mode[ ](?P<old_mode>\d+)\n
203+ ^new[ ]mode[ ](?P<new_mode>\d+)(?:\n|$))?
202204 (?:^similarity[ ]index[ ]\d+%\n
203205 ^rename[ ]from[ ](?P<rename_from>.*)\n
204206 ^rename[ ]to[ ](?P<rename_to>.*)(?:\n|$))?
205- (?:^old[ ]mode[ ](?P<old_mode>\d+)\n
206- ^new[ ]mode[ ](?P<new_mode>\d+)(?:\n|$))?
207207 (?:^new[ ]file[ ]mode[ ](?P<new_file_mode>.+)(?:\n|$))?
208208 (?:^deleted[ ]file[ ]mode[ ](?P<deleted_file_mode>.+)(?:\n|$))?
209209 (?:^index[ ](?P<a_blob_id>[0-9A-Fa-f]+)
@@ -331,8 +331,9 @@ def _index_from_patch_format(cls, repo, stream):
331331 previous_header = None
332332 for header in cls .re_header .finditer (text ):
333333 a_path_fallback , b_path_fallback , \
334+ old_mode , new_mode , \
334335 rename_from , rename_to , \
335- old_mode , new_mode , new_file_mode , deleted_file_mode , \
336+ new_file_mode , deleted_file_mode , \
336337 a_blob_id , b_blob_id , b_mode , \
337338 a_path , b_path = header .groups ()
338339 new_file , deleted_file = bool (new_file_mode ), bool (deleted_file_mode )
0 commit comments