sapling/eden/scm
Jun Wu 219554305e clone: add a new clone function with less tech-debt
Summary:
The current `clone --shallow` command has some issues:
- It fetches *all* remote bookmarks, since selectivepull does not work with
  streamclone, then remove most remote bookmarks in a second transaction.
- It goes through remotenames, which is racy, and D20703268 does not fix the
  clone case. Possible cause of T65349853.
- Too many wrappers (ex. in remotefilelog, remotenames, fastdiscovery) wtih
  many configurations (ex. narrow-heads on/off) makes it hard to reason about.

Instead of bandaidding the clone function, this diff adds a new clone implementation
that aims to solve the issues:
- Use streamclone, but do not pull all remote names.
- Pull selectivepull names explicitly with a working "discovery" strategy
  (repo heads should be non-empty with narrow-heads on or off).
- Do clone in one transaction. Outside world won't see an incomplete state.
- Use `repo.pull` API, which is not subject to race conditions.
- Eventually, this might be the only supported "clone" after Mononoke becoming
  the single source of truth.

Note: the code path still goes through bookmarks.py and remotenames.py.
They will be cleaned up in upcoming diffs.

Reviewed By: DurhamG

Differential Revision: D21011401

fbshipit-source-id: d8751ac9bd643e9661e58c87b683be285f0dc925
2020-05-12 10:23:23 -07:00
..
contrib check-code: convert to Python 3 2020-05-07 09:07:50 -07:00
distutils_rust distutils_rust: retry mt.exe properly 2020-02-19 13:22:39 -08:00
doc py3: fix test-help.t 2020-04-09 18:25:54 -07:00
edenscm clone: add a new clone function with less tech-debt 2020-05-12 10:23:23 -07:00
edenscmnative Pass config object down to repack 2020-05-11 16:41:30 -07:00
exec configs: move fbrules to a Facebook only part of the crate 2020-05-01 13:17:21 -07:00
i18n check-code: convert to Python 3 2020-05-07 09:07:50 -07:00
lib Pass config object down to repack 2020-05-11 16:41:30 -07:00
newdoc newdoc: Add mutation and visibility documentation 2020-03-20 04:09:32 -07:00
pystubs changelog: expose rawheadrevs() API 2020-05-12 10:23:23 -07:00
slides Eliminate obsolete since-last-arc-diff flag 2020-04-14 09:09:12 -07:00
tests clone: add a new clone function with less tech-debt 2020-05-12 10:23:23 -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 py3: fix some type issues detected by pyre with some type stubs 2020-01-31 16:38:02 -08:00
COPYING Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
gen_version.py gen_version.py: run it with python3 2020-03-13 20:08:34 -07:00
hgeditor Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
Makefile build: have make local run on Centos8 2020-03-16 12:54:01 -07:00
README.rst Move fb-mercurial sources into an eden/scm subdirectory. 2019-11-13 16:04:48 -08:00
setup3.py check-code: convert to Python 3 2020-05-07 09:07:50 -07:00
setup.py setup.py: add converter.py to fbsource-thrift blacklist 2020-05-11 09:12:07 -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.