A Scalable, User-Friendly Source Control System.
Go to file
Stefan Filip 65ea22225b manifest: add Durable variant for Links
Summary:
`Durable` nodes are inner nodes that come from storage. Their contents can be shared between multiple instances of Tree. They are lazily evaluated. Their children list will be read from storage only when it is accessed.

The inner structure of a durable link poses an interesting question related to handling failures: what do we do when we have a failure when reading from storage?
We can cache the failure or we don't cache it. Caching it is mostly fine if we had an error reading from local storage or when deserializing. It is not the best option if our storage is remote and we hit a network blip. On the other hand we would not want to always retry when there is a failure on remote storage, we'd want to have a least an exponential backoff on retries. Long story short is that caching the failure is a reasonable place to start from.

The lazy-init crate is useful for modeling the lazy initialization model that we have for durable node links. See docs at https://docs.rs/lazy-init/0.3.0/lazy_init/

Reviewed By: quark-zju

Differential Revision: D14142928

fbshipit-source-id: 077f708b38e2ace772f30b3392445326ce17f47c
2019-02-21 12:01:28 -08:00
contrib chg: make it incompatible with upstream chg server 2019-02-08 16:12:53 -08:00
distutils_rust chg: learn to build a static lib 2018-11-05 10:08:29 -08:00
doc gendoc: import extensions properly 2019-01-30 14:57:42 -08:00
edenscm stackpush: make specifying the original node optional 2019-02-21 10:01:19 -08:00
exec hg: rename scratch to mkscratch and include in the hg build 2019-02-14 17:28:14 -08:00
i18n codemod: import from the edenscm package 2019-01-29 17:25:32 -08:00
lib manifest: add Durable variant for Links 2019-02-21 12:01:28 -08:00
newdoc codemod: import from the edenscm package 2019-01-29 17:25:32 -08:00
slides slides: add indexedlog slide 2018-08-13 15:06:58 -07:00
tests mononoke: mononoke -> hg sync job 2019-02-21 05:46:40 -08:00
.editorconfig move scm/hg/.clang-format to scm/hg/mercurial/ 2018-05-25 14:35:51 -07:00
.flake8 codemod: join the auto-formatter party 2018-05-25 22:17:29 -07:00
.gitignore ignore: stop using "{}" patterns 2019-02-06 13:02:59 -08:00
.hgsigs Added signature for changeset f51ae48a3fd9 2017-12-01 13:49:47 -06:00
.jshintrc hgweb: add .jshintrc with some basic rules 2017-11-22 22:18:06 +08:00
CONTRIBUTING contributing: add new file with a pointer to the wiki 2016-10-08 10:39:00 -04:00
CONTRIBUTORS Add note to CONTRIBUTORS file 2007-11-07 21:10:30 -06:00
COPYING COPYING: refresh with current address from fsf.org 2011-06-02 11:17:02 -05:00
gen_version.py generate __version__.py during the buck build 2018-06-25 15:52:25 -07:00
hg codemod: move Python packages to edenscm 2019-01-28 18:35:41 -08:00
hgeditor spelling: trivial spell checking 2015-10-17 00:58:46 +02:00
hgweb.cgi codemod: import from the edenscm package 2019-01-29 17:25:32 -08:00
Makefile Makefile: fix "make clean" 2019-02-13 13:57:07 -08:00
README.rst doc: rename README to README.rst 2017-09-26 08:37:17 +02:00
setup.py hg: rename scratch to mkscratch and include in the hg build 2019-02-14 17:28:14 -08: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.