sapling/infinitepush
Stanislau Hlebik 4136d61d32 infinitepush: reduce pushbackup memory usage
Summary:
Previously `_getrevstobackup()` would load manifest for each commit in memory
only to check if a file was deleted in this commit or not. Manifest can be
quite big and since every loaded flatmanifest is cached in fastmanifest then
memory usage can be huge.
Since we are doing this only to check if there are any commits that were
downloaded to the client without filelogs and then were stripped server-side.
This cases are rare and it would be easier to track these commits in the
config file.

Test Plan: arc unit

Reviewers: #mercurial, mjpieters, quark

Reviewed By: quark

Subscribers: mjpieters

Differential Revision: https://phabricator.intern.facebook.com/D5111372

Tasks: 15389402

Signature: t1:5111372:1495848867:4028bd48313ac0e2022c3695195bedc6eda80abf
2017-05-29 12:54:26 -07:00
..
__init__.py infinitepush: cleanup temp files 2017-05-17 06:42:04 -07:00
backupcommands.py infinitepush: reduce pushbackup memory usage 2017-05-29 12:54:26 -07:00
bundleparts.py fb-hgext: make compatible to upstream changes 2017-02-23 04:08:18 -08:00
common.py infinitepush: refactoring 2017-01-06 04:15:16 -08:00
fileindexapi.py infinitepush: record nodesmetadata 2017-03-30 02:07:30 -07:00
indexapi.py infinitepush: record nodesmetadata 2017-03-30 02:07:30 -07:00
README infinitepush: sample implementation 2016-08-26 06:09:01 -07:00
schema.sql infinitepush: record nodesmetadata 2017-03-30 02:07:30 -07:00
sqlindexapi.py infinitepush: record nodesmetadata 2017-03-30 02:07:30 -07:00
store.py infinitepush: fix string formatting 2017-02-03 07:10:53 -08:00

## What is it?

This extension adds ability to save certain pushes to a remote blob store
as bundles and to serve commits from remote blob store.
The revisions are stored on disk or in everstore.
The metadata are stored in sql or on disk.

## Config options

infinitepush.branchpattern: pattern to detect a scratchbranch, example
                            're:scratch/.+'

infinitepush.indextype: disk or sql for the metadata
infinitepush.reponame: only relevant for sql metadata backend, reponame to put in
                       sql

infinitepush.indexpath: only relevant for ondisk metadata backend, the path to
                        store the index on disk. If not set will be under .hg
                        in a folder named filebundlestore

infinitepush.storepath: only relevant for ondisk metadata backend, the path to
                        store the bundles. If not set, it will be
                        .hg/filebundlestore