Show More
@@ -127,8 +127,9 b' NEW_FILENODE = 1' | |||
|
127 | 127 | DEL_FILENODE = 2 |
|
128 | 128 | MOD_FILENODE = 3 |
|
129 | 129 | RENAMED_FILENODE = 4 |
|
130 |
C |
|
|
131 |
|
|
|
130 | COPIED_FILENODE = 5 | |
|
131 | CHMOD_FILENODE = 6 | |
|
132 | BIN_FILENODE = 7 | |
|
132 | 133 | |
|
133 | 134 | |
|
134 | 135 | class DiffLimitExceeded(Exception): |
@@ -179,6 +180,8 b' class DiffProcessor(object):' | |||
|
179 | 180 | (?:^similarity[ ]index[ ](?P<similarity_index>\d+)%(?:\n|$))? |
|
180 | 181 | (?:^rename[ ]from[ ](?P<rename_from>\S+)\n |
|
181 | 182 | ^rename[ ]to[ ](?P<rename_to>\S+)(?:\n|$))? |
|
183 | (?:^copy[ ]from[ ](?P<copy_from>\S+)\n | |
|
184 | ^copy[ ]to[ ](?P<copy_to>\S+)(?:\n|$))? | |
|
182 | 185 | (?:^new[ ]file[ ]mode[ ](?P<new_file_mode>.+)(?:\n|$))? |
|
183 | 186 | (?:^deleted[ ]file[ ]mode[ ](?P<deleted_file_mode>.+)(?:\n|$))? |
|
184 | 187 | (?:^index[ ](?P<a_blob_id>[0-9A-Fa-f]+) |
@@ -388,7 +391,12 b' class DiffProcessor(object):' | |||
|
388 | 391 | stats['binary'] = True |
|
389 | 392 | stats['ops'][RENAMED_FILENODE] = ('file renamed from %s to %s' |
|
390 | 393 | % (head['rename_from'], head['rename_to'])) |
|
391 | ||
|
394 | # COPY | |
|
395 | if head['copy_from'] and head['copy_to']: | |
|
396 | op = 'M' | |
|
397 | stats['binary'] = True | |
|
398 | stats['ops'][COPIED_FILENODE] = ('file copied from %s to %s' | |
|
399 | % (head['copy_from'], head['copy_to'])) | |
|
392 | 400 | # FALL BACK: detect missed old style add or remove |
|
393 | 401 | if op is None: |
|
394 | 402 | if not head['a_file'] and head['b_file']: |
@@ -2,7 +2,7 b' from __future__ import with_statement' | |||
|
2 | 2 | import os |
|
3 | 3 | from rhodecode.tests import * |
|
4 | 4 | from rhodecode.lib.diffs import DiffProcessor, NEW_FILENODE, DEL_FILENODE, \ |
|
5 | MOD_FILENODE, RENAMED_FILENODE, CHMOD_FILENODE, BIN_FILENODE | |
|
5 | MOD_FILENODE, RENAMED_FILENODE, CHMOD_FILENODE, BIN_FILENODE, COPIED_FILENODE | |
|
6 | 6 | |
|
7 | 7 | dn = os.path.dirname |
|
8 | 8 | FIXTURES = os.path.join(dn(dn(os.path.abspath(__file__))), 'fixtures') |
@@ -217,6 +217,13 b' DIFF_FIXTURES = {' | |||
|
217 | 217 | 'binary': False, |
|
218 | 218 | 'ops': {MOD_FILENODE: 'modified file'}}), |
|
219 | 219 | ], |
|
220 | 'hg_diff_copy_file.diff': [ | |
|
221 | ('file2', 'M', | |
|
222 | {'added': 0, | |
|
223 | 'deleted': 0, | |
|
224 | 'binary': True, | |
|
225 | 'ops': {COPIED_FILENODE: 'file copied from file1 to file2'}}), | |
|
226 | ] | |
|
220 | 227 | # 'large_diff.diff': [ |
|
221 | 228 | # ('.hgignore', 'A', {'deleted': 0, 'binary': False, 'added': 3, 'ops': {1: 'new file 100644'}}), |
|
222 | 229 | # ('MANIFEST.in', 'A', {'deleted': 0, 'binary': False, 'added': 3, 'ops': {1: 'new file 100644'}}), |
General Comments 0
You need to be logged in to leave comments.
Login now