Skip to content

Commit 1445b59

Browse files
committed
Fix order of regex parts
When both old/new mode and rename from/to lines are found, they will appear in different order.
1 parent 2090b54 commit 1445b59

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

git/diff.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)