Previously we replaced the hello command with hello_shallow to communicate
the shallow capability to the server. This isn't particularly mercurialy,
so now we create a *_shallow command for each command that could be shallow.
Refactors a lot of the behavior into separate classes, like shallowrepo,
shallowbundler, etc. This maps more closely to the existing classes in
mercurial. Also we no longer replace several classes (like filelog, and
filectx).
Fix a ton of bugs found by running the tests. Examples: hg log foo.txt,
unbundling, hg log -G foo.txt, annotate, etc.
Summary:
This creates a revlog implementation that stores all of it's data
as key/value pairs remotely. Each revlog entry is stored as "p1 + p2 + text"
and is cached in the fileserverclient.cachepath path. Any entries that are
local only are stored in .hg/store/localdata. The fileserverclient is used
to fetch any remote entries that are not in the cache.
Future commits will add support for adding revisions, adding groups from a
bundle, and creating groups for a bundle.
Mercurial currently uses '.hgtags' in a special way, so I've hardcoded a hack
there for now.
Test Plan: N/A
Reviewers: bryano, sid0, mpm, dschleimer
Differential Revision: https://phabricator.fb.com/D802534
Task ID: 2370049
Summary:
This is the first in a series of diffs that create a remote filelog
extension. There are about 15 diff's in the series, so I might send some out in
parallel. I don't expect the current diffs to be perfect, so this is more
for distributing knowledge about the code than it is for code review. The commits
will go in a bitbucket repo.
This commit creates the fileserverclient that allows the extension to request
file contents from the server (the file server, not the hg server).
Future commits will add progress reporting, a smarter fetch api, and debug
statistics.
Test Plan: N/A
Reviewers: bryano, sid0, mpm, dschleimer
Differential Revision: https://phabricator.fb.com/D802515
Task ID: 2370049