sapling/eden/fs
Wez Furlong d32fc630f2 switch hg manifest import to two passes
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
2017-04-06 10:52:06 -07:00
..
cli an "eden debug" CLI command and thrift APIs to support it 2017-04-03 15:50:32 -07:00
config use googletest instead of gtest with gmock 2017-04-01 09:21:54 -07:00
inodes report timestamps on non-materialized files 2017-04-03 15:50:32 -07:00
journal implement eden->watchman subscriptions 2017-03-21 13:35:20 -07:00
model use googletest instead of gtest with gmock 2017-04-01 09:21:54 -07:00
rocksdb update all copyright statements to "2016-present" 2017-01-20 22:03:02 -08:00
service use .eden/socket in hg extensions 2017-04-06 10:52:06 -07:00
store switch hg manifest import to two passes 2017-04-06 10:52:06 -07:00
testharness use googletest instead of gtest with gmock 2017-04-01 09:21:54 -07:00