Commit Graph

38 Commits

Author SHA1 Message Date
Durham Goode
77d31b12e4 Add hit/miss ratio to debug output 2013-07-01 17:37:55 -07:00
Durham Goode
9642a8a2d6 Add remotefilelog.fallbackrepo config 2013-07-01 16:28:34 -07:00
Durham Goode
58ff8f91f6 Prefetch before copy tracing 2013-07-01 15:35:08 -07:00
Durham Goode
027a1d4ab8 Set umask before writing files to shared cache 2013-06-28 17:12:20 -07:00
Durham Goode
8e037436cb Add gc command for cleaning up the cache 2013-06-28 15:57:15 -07:00
Durham Goode
6e3494bf98 Add incoming hook for producing file blobs 2013-06-27 15:14:22 -07:00
Durham Goode
1ac9b8cbc1 Move requirement string to a variable 2013-06-26 14:37:59 -07:00
Durham Goode
3e6b7810df Override bundle10.generatefiles instead of prune 2013-06-25 13:26:24 -07:00
Durham Goode
bb32b111bf Change contract between extension and memcache process to allow arbitrary key lengths and customizable cache paths 2013-06-25 11:38:48 -07:00
Durham Goode
6536d87bc0 Prevent pull from sending files to shallow clones 2013-06-23 13:50:22 -07:00
Durham Goode
84b481de56 Add option for server cache location.
Change _callstream wrapper to only run on client.
2013-06-21 13:22:18 -07:00
Durham Goode
f16a3a4134 Rename to remotefilelog since shallowrepo is already taken 2013-06-21 10:14:29 -07:00
Durham Goode
ff1e4bb8e7 Fix bundle revision ordering.
Implement remotefilectx.ancestor
2013-06-12 17:56:18 -07:00
Durham Goode
78ce8beeb3 Add make/setup files. Move source into a subdirectory. 2013-06-12 13:42:44 -07:00
Durham Goode
7d592e55d3 Comment on the use of tags 2013-06-11 17:24:35 -07:00
Durham Goode
a3f328265c Handle case of filenodes having multiple linknodes over time. 2013-06-11 16:41:55 -07:00
Durham Goode
a10ced9c1c Refactor client server interaction to not use a custom hello.
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.
2013-06-11 13:34:39 -07:00
Durham Goode
4a768a3915 Use memcache as the store 2013-06-07 15:13:58 -07:00
Durham Goode
c116aa3a58 Major refactor and bug fixes
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.
2013-05-20 15:03:07 -07:00
Durham Goode
4b5967096a Wrap filectx and filelog 2013-05-17 18:08:53 -07:00
Durham Goode
ef5a6f59b4 Include ancestors with file contents 2013-05-14 19:48:05 -07:00
Durham Goode
20e59af1e6 Add incoming changegroup filelogs to the localdata store 2013-05-06 17:50:36 -07:00
Durham Goode
4dde67b7cd Support changegroup creation for pushing to the server 2013-05-06 17:49:26 -07:00
Durham Goode
b9d766187a Replace trace copies to remove rev number dependency 2013-05-06 17:47:26 -07:00
Durham Goode
20dac8e5e5 Wrap filelog ancestors and prevent strip 2013-05-06 17:45:32 -07:00
Durham Goode
0de57128fd Wrap filelog size functions 2013-05-06 17:44:22 -07:00
Durham Goode
03e6061480 Prevent server from sending filelogs during pull 2013-05-06 17:42:50 -07:00
Durham Goode
114aa24676 remotefilelog fetch files from server during update 2013-05-06 17:38:59 -07:00
Durham Goode
a24460ffe0 remotefilelog enable shallow cloning 2013-05-06 17:35:59 -07:00
Durham Goode
390895725b remotefilelog enable getfiles command on server 2013-05-06 17:26:27 -07:00
Durham Goode
51a7535795 remoterevlog bundling 2013-05-06 17:09:42 -07:00
Durham Goode
83b10bdf13 remoterevlog add revisions 2013-05-06 17:09:01 -07:00
Durham Goode
8793c18b01 remotefilelog: remoterevlog basic implementation and read apis
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
2013-05-06 17:08:10 -07:00
Durham Goode
18a97db027 fileserverclient statistics 2013-05-06 16:59:05 -07:00
Durham Goode
9e48b089fd fileserverclient progress reporting 2013-05-06 16:51:48 -07:00
Durham Goode
3029f1520a fileserverclient prefetch 2013-05-06 16:49:55 -07:00
Durham Goode
0ea98dc851 remotefilelog: create initial fileserverclient
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
2013-05-06 16:44:04 -07:00
Durham Goode
c13fb9b584 Initial .hgignore and .arcconfig 2013-05-06 15:54:49 -07:00