diff --git a/git/diff.py b/git/diff.py index 28c10e49e..729970c47 100644 --- a/git/diff.py +++ b/git/diff.py @@ -471,6 +471,11 @@ def handle_diff_line(line): meta, _, path = line[1:].partition('\t') old_mode, new_mode, a_blob_id, b_blob_id, change_type = meta.split(None, 4) + # Change type can be R100 + # R: status letter + # 100: score (in case of copy and rename) + change_type = change_type[0] + score = ''.join(change_type[1:]) or None path = path.strip() a_path = path.encode(defenc) b_path = path.encode(defenc) diff --git a/git/test/test_diff.py b/git/test/test_diff.py index 48a5a641f..6dc73e82b 100644 --- a/git/test/test_diff.py +++ b/git/test/test_diff.py @@ -108,6 +108,7 @@ def test_diff_with_rename(self): self.assertIsNotNone(diff.renamed) self.assertEqual(diff.rename_from, 'this') self.assertEqual(diff.rename_to, 'that') + self.assertEqual(diff.change_type, 'R') self.assertEqual(len(list(diffs.iter_change_type('R'))), 1) def test_diff_of_modified_files_not_added_to_the_index(self):