mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
d32fc630f2
Summary: previously, the importer would read the entire manifest and emit data to the store as it resolved complete directory entries. The entire manifest data would be buffered and sent out to the store. In the scenario where one subtree has been modified and a commit has been made, only the parents of the subdirectory need to be hashed and stored, but we would compute and try to store everything anyway. While this diff can't avoid having to compute hashes for everything (we need tree manifest data for that), by breaking the import into two passes we can potentially avoid interrogating the LocalStore about every tree in the entire manifest during an import; we only need to store the trees that are missing and can simply cut out sub trees that are already present. This saves us IO at the expense of buffering the manifest tree in memory for the duration of the first pass; it is an acceptable trade off. Reviewed By: simpkins Differential Revision: D4832166 fbshipit-source-id: 0a40cb851c65393b407a8161db05c4b1795fb11a |
||
---|---|---|
.. | ||
cli | ||
config | ||
inodes | ||
journal | ||
model | ||
rocksdb | ||
service | ||
store | ||
testharness |