##// END OF EJS Templates
changegroup: store old heads as a set...
changegroup: store old heads as a set Previously, the "oldheads" variable was a list. On a repository at Mozilla with 46,492 heads, profiling revealed that list membership testing was dominating execution time of applying small changegroups. This patch converts the list of old heads to a set. This makes membership testing significantly faster. On the aforementioned repository with 46,492 heads: $ hg unbundle <file with 1 changeset> before: 18.535s wall after: 1.303s Consumers of this variable only check for truthiness (`if oldheads`), length (`len(oldheads)`), and (most importantly) item membership (`h not in oldheads` - which occurs twice). So, the change to a set should be safe and suitable for stable. The practical effect of this change is that changegroup application and related operations (like `hg push`) no longer exhibit an O(n^2) CPU explosion as the number of heads grows.
Gregory Szorc -
r31587:ed5b2587 4.1.2 stable
Show More
Name Size Modified Last Commit Author
/ doc
Makefile Loading ...
README Loading ...
check-seclevel.py Loading ...
docchecker Loading ...
gendoc.py Loading ...
hgmanpage.py Loading ...
runrst Loading ...
style.css Loading ...

Mercurial's documentation is kept in reStructuredText format, which is
a simple plain text format that's easy to read and edit:

http://docutils.sourceforge.net/rst.html

It's also convertible to a variety of other formats including standard
UNIX man page format and HTML. You'll need to install Docutils:

http://docutils.sourceforge.net/

Use the Makefile in this directory to generate the man and HTML pages.