A Scalable, User-Friendly Source Control System.
Go to file
Adam Simpkins 4ff77abfa6 speed up hg revert on large directories
Summary:
When called with any matcher parameters, `hg revert` would first walk both the
working directory and the commit in question to find all files that match the
pattern.  Only after it found all matching files did it check to see which
ones actually need updating.

This made revert performance `O(matched files)` rather than
`O(files needing revert)`.  This makes operations like
`hg revert large_directory` quite expensive, especially when only a handful of
files need to be updated.

This should help address the performance of `hg revert .`, which previously
was much slower than `hg revert --all`.  Previously it enumerated every file
in the repository twice (once in the working directory and once in the current
commit) before checking which ones needed reverting.  This should also help
fix the performance of `hg revert <directory>` in Eden as well.

Reviewed By: quark-zju

Differential Revision: D8217972

fbshipit-source-id: c18e72c8a5ed0b4c3a5ed69e79f6a88d3ea04a9f
2018-05-31 17:30:32 -07:00
.cargo build: vendor in Rust dependencies 2018-01-09 17:48:32 -08:00
contrib Upgrade to 18.5b1 2018-05-30 02:23:58 -07:00
distutils_rust codemod: join the auto-formatter party 2018-05-25 22:17:29 -07:00
doc Upgrade to 18.5b1 2018-05-30 02:23:58 -07:00
exec/scm_daemon code fixes to support Rust < 1.26 2018-05-24 12:19:55 -07:00
hgdemandimport codemod: join the auto-formatter party 2018-05-25 22:17:29 -07:00
hgext treemanifest: avoid ondemand conversions on the tree server 2018-05-31 14:54:57 -07:00
hgext3rd codemod: join the auto-formatter party 2018-05-25 22:17:29 -07:00
hgsubversion flake8: resolve some F checks 2018-04-13 21:51:09 -07:00
i18n Upgrade to 18.5b1 2018-05-30 02:23:58 -07:00
lib improve cdatapack fanout table calculation 2018-05-30 18:54:19 -07:00
lz4revlog lz4revlog: internalize extension and test 2018-01-03 07:15:33 -08:00
mercurial speed up hg revert on large directories 2018-05-31 17:30:32 -07:00
tests speed up hg revert on large directories 2018-05-31 17:30:32 -07: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 cleanup: remove Cargo.lock from check-in 2018-04-21 03:42:58 -07:00
.hg-vendored-crates build: vendor in Rust dependencies 2018-01-09 17:48:32 -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
.watchmanconfig watchman: add an empty .watchmanconfig 2018-04-13 21:50:54 -07: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
hg chg: use a separate entry point 2018-05-08 17:02:22 -07:00
hgeditor spelling: trivial spell checking 2015-10-17 00:58:46 +02:00
hgweb.cgi urls: bulk-change primary website URLs 2015-09-30 15:43:49 -05:00
Makefile make: use homebrew python path when available 2018-04-27 11:19:28 -07:00
README.rst doc: rename README to README.rst 2017-09-26 08:37:17 +02:00
setup.py Upgrade to 18.5b1 2018-05-30 02:23:58 -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.