| 750 | using DiffHashes = std::unordered_set<UInt128>; |
| 751 | |
| 752 | UInt128 diffHash(const CommitDiff & file_changes) |
| 753 | { |
| 754 | SipHash hasher; |
| 755 | |
| 756 | for (const auto & elem : file_changes) |
| 757 | { |
| 758 | hasher.update(elem.second.file_change.change_type); |
| 759 | hasher.update(elem.second.file_change.old_path.size()); |
| 760 | hasher.update(elem.second.file_change.old_path); |
| 761 | hasher.update(elem.second.file_change.path.size()); |
| 762 | hasher.update(elem.second.file_change.path); |
| 763 | |
| 764 | hasher.update(elem.second.line_changes.size()); |
| 765 | for (const auto & line_change : elem.second.line_changes) |
| 766 | { |
| 767 | hasher.update(line_change.sign); |
| 768 | hasher.update(line_change.line_number_old); |
| 769 | hasher.update(line_change.line_number_new); |
| 770 | hasher.update(line_change.indent); |
| 771 | hasher.update(line_change.line.size()); |
| 772 | hasher.update(line_change.line); |
| 773 | } |
| 774 | } |
| 775 | |
| 776 | UInt128 hash_of_diff; |
| 777 | hasher.get128(hash_of_diff.items[0], hash_of_diff.items[1]); |
| 778 | |
| 779 | return hash_of_diff; |
| 780 | } |
| 781 | |
| 782 | |
| 783 | /** File changes in form |
no test coverage detected