Commit Briefs
reduce storage requests by inferring object presence via dependencies
Query the presence of packed objects in bulk. First look for missing contents. Assuming topogical loading order, trees, commits, and tags which depend on these contents will be missing as well. Based on this assumption we can avoid sending queries about such objects to storage. The approach was suggested by olasd, but all potential bugs in here are mine.
the pointer between commits must point the other way
pointed out by olasd
add all commits found in pack file to the graph, not just tip commits
pointed out by olasd
exclude submodules from the packed object graph
pointed out by olasd
build a graph of objects found in the pack file
Not used yet, still WIP.
make the Git loader load objects in topological order
The Git loader will now send objects to storage in topological Git DAG order. There is no support for topological order in the dumb loader yet because the current implementation assumes that a single pack file will be fetched from the server. The tests are passing, except for these 4: TestGitLoader::test_metrics TestGitLoader::test_metrics_filtered TestGitLoader2::test_load_incremental TestGitLoader2::test_load_incremental_from[partial-parent-and-empty-previous] It seems these tests depend on assumptions that are no longer valid once objects get loaded in topological order? The implementation does not yet handle edge cases such as tags pointing at non-commit objects.
tests: Fix numerous tests after recent changes in loader-core (master)
BaseLoader.load now returns a dict with an extra error field when a loading fails.