sapling/edenscm/hgext/infinitepush
Aleksei Kulikov 22dce8230d snapshot: bundle metadata and the related files
Summary:
Instead of the lfs remote storage it was chosen to send the snapshot metadata via bundles.
Snapshot metadata consists of: the actual metadata blob + several other blobs (untracked files etc).
If we have several snapshot revisions in a single bundle, the blobs could repeat.
Then we should store each blob as a separate entry in a binary stream, keeping its id and contents.

Here we introduce a new bundle part type `"b2x:snapshotmetadataparttype"`.
```
1 byte of version info
[ # a list of binary entries, each corresponds to a separate file
  # (either a metadata file itself or a related -- externally stored -- file)
  <oid><length><data>
  :oid: is a 64char string with the hash of the file
  :length: is an unsigned int with length of the data
  :data: is binary data of length <length>, the actual file contents
]
```

So far there is an ongoing discussion on the exact format of serialization.
Actual state is at [the quip doc](https://fb.quip.com/R5OVAzabX8oo).

Reviewed By: markbt

Differential Revision: D17184222

fbshipit-source-id: 90f833ec71556e90d513e3be3f3efa7f870b037d
2019-09-06 08:18:35 -07:00
..
__init__.py commitcloud: backup and sync all non-public commits 2019-08-16 10:24:44 -07:00
bookmarks.py remotenames: applychanges for remotebookmark store 2019-06-27 08:10:58 -07:00
bundleparts.py snapshot: bundle metadata and the related files 2019-09-06 08:18:35 -07:00
bundlestore.py infinitepush: delay import of sqlindex 2019-05-03 04:09:54 -07:00
client.py infinitepush: log pushes to Scuba 2019-06-03 05:30:44 -07:00
common.py mutation: add bundlerepo support 2019-06-04 04:50:53 -07:00
constants.py infinitepush: remove import cycle 2019-05-02 14:48:34 -07:00
fileindex.py infinitepush: add replaybookmarksqueue 2019-06-17 06:19:12 -07:00
infinitepushcommands.py infinitepush: add replaybookmarksqueue 2019-06-17 06:19:12 -07:00
README codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
server.py snapshot: bundle metadata and the related files 2019-09-06 08:18:35 -07:00
sqlindex.py infinitepush: add replaybookmarksqueue 2019-06-17 06:19:12 -07: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