| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 7be3486 commit c8fd910
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -251,11 +251,11 @@ class Diff(object): | |||
| 251 | 251 | ||
| 252 | 252 | __slots__ = ("a_blob", "b_blob", "a_mode", "b_mode", "a_rawpath", "b_rawpath", | |
| 253 | 253 | "new_file", "deleted_file", "raw_rename_from", "raw_rename_to", | |
| 254 | - "diff", "change_type") | ||
| 254 | + "diff", "change_type", "score") | ||
| 255 | 255 | ||
| 256 | 256 | def __init__(self, repo, a_rawpath, b_rawpath, a_blob_id, b_blob_id, a_mode, | |
| 257 | 257 | b_mode, new_file, deleted_file, raw_rename_from, | |
| 258 | - raw_rename_to, diff, change_type): | ||
| 258 | + raw_rename_to, diff, change_type, score): | ||
| 259 | 259 | ||
| 260 | 260 | self.a_mode = a_mode | |
| 261 | 261 | self.b_mode = b_mode | |
@@ -291,6 +291,7 @@ def __init__(self, repo, a_rawpath, b_rawpath, a_blob_id, b_blob_id, a_mode, | |||
| 291 | 291 | ||
| 292 | 292 | self.diff = diff | |
| 293 | 293 | self.change_type = change_type | |
| 294 | + self.score = score | ||
| 294 | 295 | ||
| 295 | 296 | def __eq__(self, other): | |
| 296 | 297 | for name in self.__slots__: | |
@@ -445,7 +446,7 @@ def _index_from_patch_format(cls, repo, proc): | |||
| 445 | 446 | new_file, deleted_file, | |
| 446 | 447 | rename_from, | |
| 447 | 448 | rename_to, | |
| 448 | - None, None)) | ||
| 449 | + None, None, None)) | ||
| 449 | 450 | ||
| 450 | 451 | previous_header = header | |
| 451 | 452 | # end for each header we parse | |
@@ -470,7 +471,13 @@ def handle_diff_line(line): | |||
| 470 | 471 | return | |
| 471 | 472 | ||
| 472 | 473 | meta, _, path = line[1:].partition('\t') | |
| 473 | - old_mode, new_mode, a_blob_id, b_blob_id, change_type = meta.split(None, 4) | ||
| 474 | + old_mode, new_mode, a_blob_id, b_blob_id, _change_type = meta.split(None, 4) | ||
| 475 | + # Change type can be R100 | ||
| 476 | + # R: status letter | ||
| 477 | + # 100: score (in case of copy and rename) | ||
| 478 | + change_type = _change_type[0] | ||
| 479 | + score_str = ''.join(_change_type[1:]) | ||
| 480 | + score = int(score_str) if score_str.isdigit() else None | ||
| 474 | 481 | path = path.strip() | |
| 475 | 482 | a_path = path.encode(defenc) | |
| 476 | 483 | b_path = path.encode(defenc) | |
@@ -487,15 +494,16 @@ def handle_diff_line(line): | |||
| 487 | 494 | elif change_type == 'A': | |
| 488 | 495 | a_blob_id = None | |
| 489 | 496 | new_file = True | |
| 490 | - elif change_type[0] == 'R': # parses RXXX, where XXX is a confidence value | ||
| 497 | + elif change_type == 'R': | ||
| 491 | 498 | a_path, b_path = path.split('\t', 1) | |
| 492 | 499 | a_path = a_path.encode(defenc) | |
| 493 | 500 | b_path = b_path.encode(defenc) | |
| 494 | 501 | rename_from, rename_to = a_path, b_path | |
| 495 | 502 | # END add/remove handling | |
| 496 | 503 | ||
| 497 | 504 | diff = Diff(repo, a_path, b_path, a_blob_id, b_blob_id, old_mode, new_mode, | |
| 498 | - new_file, deleted_file, rename_from, rename_to, '', change_type) | ||
| 505 | + new_file, deleted_file, rename_from, rename_to, '', | ||
| 506 | + change_type, score) | ||
| 499 | 507 | index.append(diff) | |
| 500 | 508 | ||
| 501 | 509 | handle_process_output(proc, handle_diff_line, None, finalize_process, decode_streams=False) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -108,6 +108,8 @@ def test_diff_with_rename(self): | |||
| 108 | 108 | self.assertIsNotNone(diff.renamed) | |
| 109 | 109 | self.assertEqual(diff.rename_from, 'this') | |
| 110 | 110 | self.assertEqual(diff.rename_to, 'that') | |
| 111 | + self.assertEqual(diff.change_type, 'R') | ||
| 112 | + self.assertEqual(diff.score, 100) | ||
| 111 | 113 | self.assertEqual(len(list(diffs.iter_change_type('R'))), 1) | |
| 112 | 114 | ||
| 113 | 115 | def test_diff_of_modified_files_not_added_to_the_index(self): | |
| Back | FazBrowse Home | New Git URL |
0 commit comments