sapling/eden/fs/store
Wez Furlong 59ed6b36b5 import tree manifest data from mercurial
Summary:
When tree manifest data is available, we don't need to parse the full
manifest any more, which is great because we can simply and quickly load the
root manifest and be done with a checkout operation.  We can then quickly load
the manifest entry for a given directory path on demand, making us closer to our
ideal of O(what-you-use).

This diff plumbs in the manifest code from mercurial so that we can reuse
the decoder implementation to get the manfiest data and translate it into
something that we can put into our LocalStore.

There's a little wrinkle when it comes to files; mercurial doesn't support
a means for getting the file contents based on just its hash, we have to
provide the filename and revision hash for that.  We have existing code
to create proxy entries in the store to map from a proxy hash to a tuple
with the appropriate data needed to resolve the file entry.

We need to extend its use to the trees that we generate because we need
to be able to propagate that path down to a child tree when we generate
the tree entry for a file for the first time.

If a tree manifest is not available for a given revision, we fall back
to the existing implementation that parses the full flat manifest.

Note: the flat manifest import generates entries with different hashes
compared to the tree manifest hash version.  While we could make the
serialization match up, there's little risk of this causing problems
for us in practice, so punting on that for now.

Reviewed By: simpkins

Differential Revision: D4873069

fbshipit-source-id: 865001996745700586f571ed67371aed1668a6a7
2017-04-14 13:05:34 -07:00
..
git update all copyright statements to "2016-present" 2017-01-20 22:03:02 -08:00
hg import tree manifest data from mercurial 2017-04-14 13:05:34 -07:00
test use googletest instead of gtest with gmock 2017-04-01 09:21:54 -07:00
BackingStore.h update all copyright statements to "2016-present" 2017-01-20 22:03:02 -08:00
BlobMetadata.h update all copyright statements to "2016-present" 2017-01-20 22:03:02 -08:00
EmptyBackingStore.cpp update all copyright statements to "2016-present" 2017-01-20 22:03:02 -08:00
EmptyBackingStore.h update all copyright statements to "2016-present" 2017-01-20 22:03:02 -08:00
IObjectStore.h update all copyright statements to "2016-present" 2017-01-20 22:03:02 -08:00
LocalStore.cpp switch hg manifest import to two passes 2017-04-06 10:52:06 -07:00
LocalStore.h move eden/utils and eden/fuse into eden/fs 2017-04-14 11:39:02 -07:00
ObjectStore.cpp fix warnings triggered with -Wshadow-compatible-local 2017-03-02 13:32:51 -08:00
ObjectStore.h update all copyright statements to "2016-present" 2017-01-20 22:03:02 -08:00
ObjectStores.cpp update all copyright statements to "2016-present" 2017-01-20 22:03:02 -08:00
ObjectStores.h move eden/utils and eden/fuse into eden/fs 2017-04-14 11:39:02 -07:00
StoreResult.cpp update all copyright statements to "2016-present" 2017-01-20 22:03:02 -08:00
StoreResult.h update all copyright statements to "2016-present" 2017-01-20 22:03:02 -08:00
TARGETS codemod: fixup more build targets in TARGETS 2017-01-14 01:44:01 -08:00