sapling/infinitepush
Stanislau Hlebik b6eb201c3f infinitepush: fix backup of commits with removed files
Summary:
There was a bug that caused commits with file deletions to not be backed up.
This diff fixes it by first checking if file exists in the commit and only
then downloading context of the file.

Note:
In tests I had to ignore stdout of `hg pushbackup` because the output was
different on macs and linux.
On linux there was an additional line

  remote: abort: data/committostripfirst.i@091b63e5e4: no match found!

Probably mac's remotefilelog closes stdout/stderr earlier, but I wasn't
able to find a root cause.

Test Plan: Run unit tests

Reviewers: #mercurial, quark

Reviewed By: quark

Subscribers: quark, mjpieters

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

Tasks: 15389402

Signature: t1:4929244:1492791804:77b2baa9eb54a53120a955e72e6c132be5db6b44
2017-04-21 10:24:14 -07:00
..
__init__.py infinitepush: handle old changegroup format correctly server-side 2017-04-20 07:30:51 -07:00
backupcommands.py infinitepush: fix backup of commits with removed files 2017-04-21 10:24:14 -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