sapling/eden/scm
Xavier Deguillard 7f5439da0e eden: add a cat_tree command
Summary:
When running `edenfsctl prefetch **/BUCK` with an empty hgcache, EdenFS ends up
asking mercurial for every manifest one by one. Unfortunately, every manifest
fetched also causes the packfile to be flushed to disk, which then leads EdenFS
to rescan the filesystem for the new packfile. Once too many packfiles are
present on disk, Mercurial triggers a repack. Effectively, that means we have a
quadratic complexity both on Mercurial, and on EdenFS's side.

While this has been a long standing issue, we've so far avoided falling into
this complexity for a number of reason. The main one being that the hgcache is
very rarely empty, and thus the quadratic complexity is usually on low number
of files. Users also rarely run a prefetch of all the files for the entire
repo. However, on repositories with long standing branches, the hgcache is
effectively cold and thus any prefetch would trigger the pathological behavior.

To solve this, we take the same approach taken for files: sending the raw
manifest to EdenFS, which will then take care of deserializing it properly.

Reviewed By: DurhamG

Differential Revision: D23035335

fbshipit-source-id: 855e6fb4fabf81c427fad6c9f17d05f95c47e9ae
2020-08-12 01:48:03 -07:00
..
contrib contrib: remove revlog related perf tests 2020-07-30 20:32:34 -07:00
distutils_rust edenscm/hg: add GitHub Actions with CI for HG plus add fixes for getdeps (#25) 2020-07-10 12:07:45 -07:00
doc py3: fix test-help.t 2020-04-09 18:25:54 -07:00
edenscm eden: add a cat_tree command 2020-08-12 01:48:03 -07:00
edenscmnative begin adding some type stubs for the Rust Python bindings 2020-08-11 21:45:04 -07:00
exec fix test on Windows 2020-08-04 10:37:25 -07:00
i18n check-code: convert to Python 3 2020-05-07 09:07:50 -07:00
lib client: add commit revlog data endpoint 2020-08-11 22:15:10 -07:00
newdoc newdoc: Add mutation and visibility documentation 2020-03-20 04:09:32 -07:00
pystubs repoview: further remove repoview references 2020-07-06 14:04:27 -07:00
slides Eliminate obsolete since-last-arc-diff flag 2020-04-14 09:09:12 -07:00
tests eden: add a cat_tree command 2020-08-12 01:48:03 -07:00
.editorconfig Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
.flake8 Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
.gitignore run-tests: make output format friendly for adhoc scripts 2020-06-10 19:29:59 -07:00
COPYING Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
gen_version.py version: a Rust crate providing version information 2020-05-18 09:00:40 -07:00
hgeditor Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
Makefile add Mononoke integration tests CI (#26) 2020-07-16 12:16:10 -07:00
README.rst Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
setup3.py edenscm/hg: add GitHub Actions with CI for HG plus add fixes for getdeps (#25) 2020-07-10 12:07:45 -07:00
setup.py edenscm/hg: add GitHub Actions with CI for HG plus add fixes for getdeps (#25) 2020-07-10 12:07:45 -07:00

Mercurial
=========

Mercurial is a fast, easy to use, distributed revision control tool
for software developers.

Basic install::

 $ make            # see install targets
 $ make install    # do a system-wide install
 $ hg debuginstall # sanity-check setup
 $ hg              # see help

Running without installing::

 $ make local      # build for inplace usage
 $ ./hg --version  # should show the latest version

See https://mercurial-scm.org/ for detailed installation
instructions, platform-specific notes, and Mercurial user information.