A Scalable, User-Friendly Source Control System.
Go to file
Gregory Szorc 312f42b6e4 hgweb: tweak zlib chunking behavior
When doing streaming compression with zlib, zlib appears to emit chunks
with data after ~20-30kb on average is available. In other words, most
calls to compress() return an empty string. On the mozilla-unified repo,
only 48,433 of 921,167 (5.26%) of calls to compress() returned data.
In other words, we were sending hundreds of thousands of empty chunks
via a generator where they touched who knows how many frames (my guess
is millions). Filtering out the empty chunks from the generator
cuts down on overhead.

In addition, we were previously feeding 8kb chunks into zlib
compression. Since this function tends to emit *compressed* data after
20-30kb is available, it would take several calls before data was
produced. We increase the amount of data fed in at a time to 32kb.
This reduces the number of calls to compress() from 921,167 to
115,146. It also reduces the number of output chunks from 48,433 to
31,377. This does increase the average output chunk size by a little.
But I don't think this will matter in most scenarios.

The combination of these 2 changes appears to shave ~6s CPU time
or ~3% from a server serving the mozilla-unified repo.
2016-08-14 21:29:46 -07:00
contrib merge with stable 2016-08-15 12:26:02 -04:00
doc doc: remove double imports of inspect from hgmanpage.py 2016-05-14 14:37:25 +09:00
hgext merge with stable 2016-08-15 12:26:02 -04:00
hgext3rd extensions: also search for extension in the 'hgext3rd' package 2016-03-11 10:30:08 +00:00
i18n i18n: use inspect.getsourcelines() to obtain lineno from func or class 2016-07-27 21:53:14 +09:00
mercurial hgweb: tweak zlib chunking behavior 2016-08-14 21:29:46 -07:00
tests test-gpg: run migration of v1 secret keys beforehand 2016-08-14 17:07:05 +09:00
.editorconfig mercurial: add editorconfig 2016-04-05 18:10:33 +01:00
.hgignore make: turn ubuntu docker into template 2016-04-26 23:33:17 -07:00
.hgsigs Added signature for changeset f19241339f58 2016-08-01 12:37:25 -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 hg: disable demandimport for py3 2016-05-11 23:24:41 +00: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 osx: stamp the hg version into the version field in the pkg 2016-08-12 17:51:48 -04:00
README urls: bulk-change primary website URLs 2015-09-30 15:43:49 -05:00
setup_osutil_cffi.py osutil: add darwin-only version of os.listdir using cffi 2016-07-11 11:05:08 +02:00
setup.py mpatch: write a cffi version of mpatch.patches 2016-07-25 15:10:52 +02: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.