A Scalable, User-Friendly Source Control System.
Go to file
Yuya Nishihara 37d980f070 revset: make sort() do dumb multi-pass sorting for multiple keys (issue5218)
Our invert() function was too clever to not take length into account. I could
fix the problem by appending '\xff' as a terminator (opposite to '\0'), but
it turned out to be slower than simple multi-pass sorting.

New implementation is pretty straightforward, which just calls sort() from the
last key. We can do that since Python sort() is guaranteed to be stable. It
doesn't sound nice to call sort() multiple times, but actually it is faster.
That's probably because we have fewer Python codes in hot loop, and can avoid
heavy string and list manipulation.

  revset #0: sort(0:10000, 'branch')
  0) 0.412753
  1) 0.393254

  revset #1: sort(0:10000, '-branch')
  0) 0.455377
  1) 0.389191  85%

  revset #2: sort(0:10000, 'date')
  0) 0.408082
  1) 0.376332  92%

  revset #3: sort(0:10000, '-date')
  0) 0.406910
  1) 0.380498  93%

  revset #4: sort(0:10000, 'desc branch user date rev')
  0) 0.542996
  1) 0.486397  89%

  revset #5: sort(0:10000, '-desc -branch -user -date -rev')
  0) 0.965032
  1) 0.518426  53%
2016-04-23 16:09:30 +09:00
contrib builddeb: create source archive for ubuntu 2016-04-16 17:06:11 -07:00
doc py3: make hgmanpage use absolute_import 2016-04-17 00:23:05 +05:30
hgext patchbomb: use single quotes around command hint 2016-04-14 15:15:49 +00:00
hgext3rd extensions: also search for extension in the 'hgext3rd' package 2016-03-11 10:30:08 +00:00
i18n merge with stable 2016-03-02 16:44:56 -06:00
mercurial revset: make sort() do dumb multi-pass sorting for multiple keys (issue5218) 2016-04-23 16:09:30 +09:00
tests revset: make sort() do dumb multi-pass sorting for multiple keys (issue5218) 2016-04-23 16:09:30 +09:00
.editorconfig mercurial: add editorconfig 2016-04-05 18:10:33 +01:00
.hgignore setup: create a module for the modulepolicy 2016-03-09 15:47:01 +00:00
.hgsigs Added signature for changeset b892d98c6d4c 2016-04-16 18:09:42 -05: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: add support for HGUNICODEPEDANTRY environment variable 2014-06-23 09:33:07 -04: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: add rule for building an ubuntu ppa 2016-04-16 13:02:13 -07:00
README urls: bulk-change primary website URLs 2015-09-30 15:43:49 -05:00
setup.py setup: add missing hgext.fsmonitor 2016-03-22 16:08:02 -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.