Translation table ~~~~~~~~~~~~~~~~~ A fast bidirectional mapping between sha1-names and sha256-names of all local objects in the repository is kept on disk. The exact format of that mapping is to be determined. All operations that make new objects (e.g., "git commit") add the new objects to the translation table.
This seems like a rather nontrival thing to design. It will need to hold millions of mappings, and be quickly searchable from either direction (sha1->new and new->sha1) while still be fairly fast to insert new records into.
For Linux, just the list of hashes recording the commits is going to be in the millions, whiel the list of hashes of individual files for all those commits is going to be substantially larger.
David Lang