The five steps
- Hash every file 8 min
- Hash the directories 9 min
- What changed 10 min
- Rehash only what changed 11 min
- Moves and renames 10 min
Hash a repository snapshot into a Merkle tree, then use it the way an editor does: find the files that changed between two snapshots without reading the ones that did not, rehash only what a write touched, and spot a rename instead of reporting a delete and an add.