Sat, 14 Apr 2012 01:41:03 +0200 revset: speedup matching() by first matching fields that take less time to
Angel Ezquerra <angel.ezquerra@gmail.com> [Sat, 14 Apr 2012 01:41:03 +0200] rev 16446
revset: speedup matching() by first matching fields that take less time to match This patch sorts the fields that are passed to the matching function so that it always starts by matching those fields that take less time to match. Not all fields take the same amount of time to match. I've done several measurements running the following command: hg --time log -r "matching(1, field)" on the mercurial repository, and where 'field' was each one of the fields accepted by match. In order to avoid the print overhead (which could be different for different fields, given the different number of matches) I used a modified version of the matching() function which always returns no matches. These tests showed that different fields take wildly different amounts of time to match. Particulary the substate field takes up to 25 seconds to match on my machine, compared to the 0.3 seconds that takes to match the phase field or the 2 seconds (approx) that takes to match most fields. With this patch, matching both the phase and the substate of a revision takes the same amount of time as matching the phase. The field match order introduced by this patch is as follows: phase, parents, user, date, branch, summary, files, description, substate An extra nice thing about this patch is that it makes the match time stable.
Fri, 13 Apr 2012 13:46:49 +0200 revset: speedup matching() by stopping the match early if a field does not match
Angel Ezquerra <angel.ezquerra@gmail.com> [Fri, 13 Apr 2012 13:46:49 +0200] rev 16445
revset: speedup matching() by stopping the match early if a field does not match Rather than getting all the fields that are being matches from every revision and then comparing them to those of the target revision, compare each field one by one and stop the match as soon as there is a match failure. This can greatly reduce the match time when matching multiple fields. The impact on match time when matching a single field seems negligible (according to my measurements).
Fri, 13 Apr 2012 13:35:45 +0200 revset: make matching keyword not match summary when matching for description
Angel Ezquerra <angel.ezquerra@gmail.com> [Fri, 13 Apr 2012 13:35:45 +0200] rev 16444
revset: make matching keyword not match summary when matching for description
Thu, 22 Mar 2012 21:12:15 +0100 fileset: add "subrepo" fileset symbol
Angel Ezquerra <angel.ezquerra@gmail.com> [Thu, 22 Mar 2012 21:12:15 +0100] rev 16443
fileset: add "subrepo" fileset symbol This new fileset symbol returns a list of subrepos whose paths match a given pattern. If the argument has no pattern type set, an exact match is performed. If no argument is passed, return a list of all subrepos.
Sun, 15 Apr 2012 23:47:46 -0700 plan9: finalize documentation for next release
Steven Stallion <sstallion@gmail.com> [Sun, 15 Apr 2012 23:47:46 -0700] rev 16442
plan9: finalize documentation for next release
Mon, 16 Apr 2012 10:56:37 +0200 localrepo: do not complain about missing journal files
Alain Leufroy <alain.leufroy@logilab.fr> [Mon, 16 Apr 2012 10:56:37 +0200] rev 16441
localrepo: do not complain about missing journal files
Mon, 16 Apr 2012 10:33:18 +0200 repair: fix missing import
Alain Leufroy <alain.leufroy@logilab.fr> [Mon, 16 Apr 2012 10:33:18 +0200] rev 16440
repair: fix missing import introduced by: b5c0c7d0f83fe56240ce7a919581f1cbff4f5ee5
Mon, 16 Apr 2012 17:03:39 +0200 largefiles: fix cat for largefiles (issue3352)
Na'Tosha Bard <natosha@unity3d.com> [Mon, 16 Apr 2012 17:03:39 +0200] rev 16439
largefiles: fix cat for largefiles (issue3352) This is a fix to largefiles so that 'hg cat' will work correctly when a largefile is specified. As per discussion on Issue 3352: 1) The file will be printed regardless if it is binary or large. 2) The file is downloaded if it is not readily available (not found in the system cache), so that it can be printed. If the download fails, then we abort.
Mon, 16 Apr 2012 08:50:40 -0700 pure: quiesce build warnings
Steven Stallion <sstallion@gmail.com> [Mon, 16 Apr 2012 08:50:40 -0700] rev 16438
pure: quiesce build warnings The following patch fixes the following warning when building pure: package init file 'mercurial/pure/__init__.py' not found (or not a regular file)
Mon, 16 Apr 2012 11:26:00 -0500 util.h: replace ntohl/htonl with get/putbe32
Matt Mackall <mpm@selenic.com> [Mon, 16 Apr 2012 11:26:00 -0500] rev 16437
util.h: replace ntohl/htonl with get/putbe32
Fri, 13 Apr 2012 10:08:08 +0200 scmutil: fix systemrcpath regression introduced in f5dd179bfa4a
Wolfgang Treutterer <Wolfgang.Treutterer@ipp.mpg.de> [Fri, 13 Apr 2012 10:08:08 +0200] rev 16436
scmutil: fix systemrcpath regression introduced in f5dd179bfa4a Changeset f5dd179bfa4a introduced a 'root' path component to look for hgrc files, which is used both as an absolute path and a path relative to the <install-root>. The latter one was broken since 'root' was set to an absolute location and the subsequent os.path.join discarded the <install-root> path prefix.
Fri, 13 Apr 2012 10:14:59 +0200 revlog: fix partial revision() docstring (from d7d64b89a65c)
Patrick Mezard <patrick@mezard.eu> [Fri, 13 Apr 2012 10:14:59 +0200] rev 16435
revlog: fix partial revision() docstring (from d7d64b89a65c)
Sat, 14 Apr 2012 11:27:11 +0200 graphlog: fix --follow FILE and relative paths
Patrick Mezard <patrick@mezard.eu> [Sat, 14 Apr 2012 11:27:11 +0200] rev 16434
graphlog: fix --follow FILE and relative paths The situation is complicated because filelog() revset uses a match object in relpath mode while follow() revset interprets the filename as a manifest entry.
Sat, 14 Apr 2012 11:16:57 +0200 graphlog: reduce duplication in --follow code
Patrick Mezard <patrick@mezard.eu> [Sat, 14 Apr 2012 11:16:57 +0200] rev 16433
graphlog: reduce duplication in --follow code
Sat, 14 Apr 2012 10:44:13 +0200 graphlog: add all log options to glog command
Patrick Mezard <patrick@mezard.eu> [Sat, 14 Apr 2012 10:44:13 +0200] rev 16432
graphlog: add all log options to glog command glog and log -G should be equivalent.
Sat, 14 Apr 2012 10:30:38 +0200 graphlog: implement --hidden
Patrick Mezard <patrick@mezard.eu> [Sat, 14 Apr 2012 10:30:38 +0200] rev 16431
graphlog: implement --hidden
Wed, 28 Mar 2012 11:42:17 +0200 revert: add support for reverting subrepos without --no-backup and/or --all
Angel Ezquerra <angel.ezquerra@gmail.com> [Wed, 28 Mar 2012 11:42:17 +0200] rev 16430
revert: add support for reverting subrepos without --no-backup and/or --all When a subrepo is reverted but --no-backup is not set, call revert on the subrepo that is being reverted prior to updating it to the revision specified in the parent repo's .hgsubstate file. The --all flag is passed down to the subrepo when it is being reverted. If the --all flag is not set, all files that are modified on the subrepo will be reverted.
Wed, 28 Mar 2012 11:42:17 +0200 revert: add support for reverting subrepos
Angel Ezquerra <angel.ezquerra@gmail.com> [Wed, 28 Mar 2012 11:42:17 +0200] rev 16429
revert: add support for reverting subrepos Reverting a subrepo is done by updating it to the revision that is selected on the parent repo .hgsubstate file. * ISSUES/TODO: - reverting added and removed subrepos is not supported yet. - reverting subrepos is only supported if the --no-backup flag is used (this limitation will be removed on another patch). - The behavior of the --all flag has been changed. It now reverts subrepos as well. Note that this may lead to data loss if the user has a dirty subrepo.
Sat, 14 Apr 2012 01:39:35 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Sat, 14 Apr 2012 01:39:35 -0500] rev 16428
merge with stable
Fri, 13 Apr 2012 11:01:07 -0700 commands: move bundle type validation earlier
Bryan O'Sullivan <bryano@fb.com> [Fri, 13 Apr 2012 11:01:07 -0700] rev 16427
commands: move bundle type validation earlier Checking the bundle type late in the command's execution can mean that we do work for a long time before complaining about incorrect user input and aborting. Guess how I discovered this.
Fri, 13 Apr 2012 22:55:46 -0500 changegroupsubset: optimize function lookup in prune
Matt Mackall <mpm@selenic.com> [Fri, 13 Apr 2012 22:55:46 -0500] rev 16426
changegroupsubset: optimize function lookup in prune
Fri, 13 Apr 2012 22:55:46 -0500 changegroup: optimize gennodelist
Matt Mackall <mpm@selenic.com> [Fri, 13 Apr 2012 22:55:46 -0500] rev 16425
changegroup: optimize gennodelist
Fri, 13 Apr 2012 22:55:46 -0500 revlog: drop some unneeded rev.node calls in revdiff
Matt Mackall <mpm@selenic.com> [Fri, 13 Apr 2012 22:55:46 -0500] rev 16424
revlog: drop some unneeded rev.node calls in revdiff
Thu, 12 Apr 2012 20:26:33 -0700 revlog: avoid an expensive string copy
Bryan O'Sullivan <bryano@fb.com> [Thu, 12 Apr 2012 20:26:33 -0700] rev 16423
revlog: avoid an expensive string copy This showed up in a statprof profile of "hg svn rebuildmeta", which is read-intensive on the changelog. This two-line patch improved the performance of that command by 10%.
Fri, 13 Apr 2012 22:55:46 -0500 changegroupsubset: avoid setdefault in inner loop
Matt Mackall <mpm@selenic.com> [Fri, 13 Apr 2012 22:55:46 -0500] rev 16422
changegroupsubset: avoid setdefault in inner loop
Fri, 13 Apr 2012 22:55:40 -0500 changegroupsubset: drop repeated len() calls
Matt Mackall <mpm@selenic.com> [Fri, 13 Apr 2012 22:55:40 -0500] rev 16421
changegroupsubset: drop repeated len() calls
Fri, 13 Apr 2012 22:27:29 -0500 changegroup: reduce progress overhead
Matt Mackall <mpm@selenic.com> [Fri, 13 Apr 2012 22:27:29 -0500] rev 16420
changegroup: reduce progress overhead
Fri, 13 Apr 2012 22:23:45 -0500 changegroupsubset: renest inner loop
Matt Mackall <mpm@selenic.com> [Fri, 13 Apr 2012 22:23:45 -0500] rev 16419
changegroupsubset: renest inner loop The mdata list should generally be shorter than changedfiles
Fri, 13 Apr 2012 21:35:48 -0500 revlog: increase readahead size
Matt Mackall <mpm@selenic.com> [Fri, 13 Apr 2012 21:35:48 -0500] rev 16418
revlog: increase readahead size
Fri, 13 Apr 2012 15:32:49 -0500 revset: avoid demandimport bug
Matt Mackall <mpm@selenic.com> [Fri, 13 Apr 2012 15:32:49 -0500] rev 16417
revset: avoid demandimport bug Apparently the "import x as xy" doesn't manage to update xy in the current scope's dictionary after load, which causes nodemod.nullrev to do a huge amount of demandload magic in the inner loop.
Fri, 13 Apr 2012 15:07:13 +0200 mq: replace hasattr() with util.safehasattr(), update check-code.py stable
Patrick Mezard <patrick@mezard.eu> [Fri, 13 Apr 2012 15:07:13 +0200] rev 16416
mq: replace hasattr() with util.safehasattr(), update check-code.py
Thu, 12 Apr 2012 20:52:39 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 12 Apr 2012 20:52:39 -0500] rev 16415
merge with stable
Thu, 12 Apr 2012 14:05:59 -0700 parsers: use base-16 trie for faster node->rev mapping
Bryan O'Sullivan <bryano@fb.com> [Thu, 12 Apr 2012 14:05:59 -0700] rev 16414
parsers: use base-16 trie for faster node->rev mapping This greatly speeds up node->rev lookups, with results that are often user-perceptible: for instance, "hg --time log" of the node associated with rev 1000 on a linux-2.6 repo improves from 0.3 seconds to 0.03. I have not found any instances of slowdowns. The new perfnodelookup command in contrib/perf.py demonstrates the speedup more dramatically, since it performs no I/O. For a single lookup, the new code is about 40x faster. These changes also prepare the ground for the possibility of further improving the performance of prefix-based node lookups.
Thu, 12 Apr 2012 20:22:18 -0500 check-code: avoid false-positive on ++
Matt Mackall <mpm@selenic.com> [Thu, 12 Apr 2012 20:22:18 -0500] rev 16413
check-code: avoid false-positive on ++
Wed, 11 Apr 2012 11:37:13 +0200 graphlog: cleanup before code move
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Apr 2012 11:37:13 +0200] rev 16412
graphlog: cleanup before code move - Avoid revset module aliasing - Mark makefilematcher() private
Wed, 11 Apr 2012 11:32:00 +0200 graphlog: correctly handle calls in subdirectories
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Apr 2012 11:32:00 +0200] rev 16411
graphlog: correctly handle calls in subdirectories
Wed, 11 Apr 2012 11:29:12 +0200 context: revert workingctx.ancestors() followfirst option
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Apr 2012 11:29:12 +0200] rev 16410
context: revert workingctx.ancestors() followfirst option It was introduced by mistake in 352053e6cd8e.
Wed, 11 Apr 2012 11:25:34 +0200 graphlog: fix --follow-first --rev combinations
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Apr 2012 11:25:34 +0200] rev 16409
graphlog: fix --follow-first --rev combinations This solves a similar problem than the previous --follow/--rev patch. This time we need changelog.ancestors()/descendants() filtering on first parent. Duplicating the code looked better than introducing keyword arguments. Besides, the ancestors() version was already implemented in follow() revset.
Wed, 11 Apr 2012 11:22:40 +0200 graphlog: fix --follow --rev combinations
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Apr 2012 11:22:40 +0200] rev 16408
graphlog: fix --follow --rev combinations The previous behaviour of --follow was really a subset of what is really happening in log command: - If --rev is not passed, default to '.:0' - Resolve --rev into a revision list "revs" - Set the starting revision to revs[0] - If revs[1] > revs[0] keep descendants(revs[0]) in revs, otherwise keep ancestors.
Wed, 11 Apr 2012 11:17:26 +0200 graphlog: support changeset identifiers in --branch
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Apr 2012 11:17:26 +0200] rev 16407
graphlog: support changeset identifiers in --branch
Wed, 11 Apr 2012 11:14:07 +0200 graphlog: pass changesets to revset.match() in changelog order
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Apr 2012 11:14:07 +0200] rev 16406
graphlog: pass changesets to revset.match() in changelog order Running: $ time hg debugrevspec 'user(mpm)' | wc on Mercurial repository takes 1.0s with a regular version and 1.8s if commands.debugrevspec() is patched to pass revisions to revset.match() from tip to 0. Depending on what we expect from the revset API and caller wisdom, we might want to push this change in revset.match() later.
Wed, 11 Apr 2012 11:07:30 +0200 graphlog: refactor revset() to return revisions
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Apr 2012 11:07:30 +0200] rev 16405
graphlog: refactor revset() to return revisions When --follow and --rev are passed, --follow actual behaviour depends on the input revision sequence defined by --rev. If --rev is not passed, the default revision sequence depends on the presence of --follow. It means the revision sequence generation is part of log logic and must be wrapped. The issue described above is fixed in following patches.
Thu, 12 Apr 2012 15:21:54 -0700 store: speed up read and write of large fncache files
Bryan O'Sullivan <bryano@fb.com> [Thu, 12 Apr 2012 15:21:54 -0700] rev 16404
store: speed up read and write of large fncache files In my tests of an fncache containing 300,000 entries, this improves read time from 567ms to 307, and write time from 1328ms to 533. These numbers aren't so great, since the fncache file is only 17MB in size, but they're an improvement.
Thu, 12 Apr 2012 15:21:52 -0700 perf: time fncache read and write performance
Bryan O'Sullivan <bryano@fb.com> [Thu, 12 Apr 2012 15:21:52 -0700] rev 16403
perf: time fncache read and write performance
Sun, 01 Apr 2012 14:12:14 +0200 revset: add "matching" keyword
Angel Ezquerra <angel.ezquerra@gmail.com> [Sun, 01 Apr 2012 14:12:14 +0200] rev 16402
revset: add "matching" keyword This keyword can be used to find revisions that "match" one or more fields of a given set of revisions. A revision matches another if all the selected fields (description, author, branch, date, files, phase, parents, substate, user, summary and/or metadata) match the corresponding values of those fields on the source revision. By default this keyword looks for revisions that whose metadata match (description, author and date) making it ideal to look for duplicate revisions. matching takes 2 arguments (the second being optional): 1.- rev: a revset represeting a _single_ revision (e.g. tip, ., p1(.), etc) 2.- [field(s) to match]: an optional string containing the field or fields (separated by spaces) to match. Valid fields are most regular context fields and some special fields: * regular fields: - description, author, branch, date, files, phase, parents, substate, user. Note that author and user are synonyms. * special fields: summary, metadata. - summary: matches the first line of the description. - metatadata: It is equivalent to matching 'description user date' (i.e. it matches the main metadata fields). Examples: 1.- Look for revisions with the same metadata (author, description and date) as the 11th revision: hg log -r "matching(11)" 2.- Look for revisions with the same description as the 11th revision: hg log -r "matching(11, description)" 3.- Look for revisions with the same 'summary' (i.e. same first line on their description) as the 11th revision: hg log -r "matching(11, summary)" 4.- Look for revisions with the same author as the current revision: hg log -r "matching(., author)" You could use 'user' rather than 'author' to get the same result. 5.- Look for revisions with the same description _AND_ author as the tip of the repository: hg log -r "matching(tip, 'author description')" 6.- Look for revisions touching the same files as the parent of the tip of the repository hg log -r "matching(p1(tip), files)" 7.- Look for revisions whose subrepos are on the same state as the tip of the repository or its parent hg log -r "matching(p1(tip):tip, substate)" 8.- Look for revisions whose author and subrepo states both match those of any of the revisions on the stable branch: hg log -r "matching(branch(stable), 'author substate')"
Tue, 10 Apr 2012 23:40:20 -0700 plan9: add execute permissions to 9diff
Steven Stallion <sstallion@gmail.com> [Tue, 10 Apr 2012 23:40:20 -0700] rev 16401
plan9: add execute permissions to 9diff
Tue, 10 Apr 2012 23:24:12 -0700 transplant: permit merge changesets via --parent
Steven Stallion <sstallion@gmail.com> [Tue, 10 Apr 2012 23:24:12 -0700] rev 16400
transplant: permit merge changesets via --parent This change permits the transplant extension to operate on merge changesets by way of --parent. This is particularly useful for workflows which cherrypick branch merges rather than each commit within a branch.
Thu, 12 Apr 2012 20:22:18 -0500 help: fix indentation on cacert (issue3350)
Matt Mackall <mpm@selenic.com> [Thu, 12 Apr 2012 20:22:18 -0500] rev 16399
help: fix indentation on cacert (issue3350) The parser doesn't really handle nesting, so reorder so the nested bit is last.
Thu, 12 Apr 2012 20:22:18 -0500 stream_in: avoid debug calls when debug is disabled
Matt Mackall <mpm@selenic.com> [Thu, 12 Apr 2012 20:22:18 -0500] rev 16398
stream_in: avoid debug calls when debug is disabled
Thu, 12 Apr 2012 20:22:18 -0500 util: create bytecount array just once
Matt Mackall <mpm@selenic.com> [Thu, 12 Apr 2012 20:22:18 -0500] rev 16397
util: create bytecount array just once This avoids tons of gettext calls on workloads that call bytecount a lot.
Sun, 08 Apr 2012 11:14:56 +0200 revset: avoid set duplication in roots() stable
Patrick Mezard <patrick@mezard.eu> [Sun, 08 Apr 2012 11:14:56 +0200] rev 16396
revset: avoid set duplication in roots()
Sun, 08 Apr 2012 11:13:06 +0200 revset: retrieve a bit less parents in roots() stable
Patrick Mezard <patrick@mezard.eu> [Sun, 08 Apr 2012 11:13:06 +0200] rev 16395
revset: retrieve a bit less parents in roots()
Sun, 08 Apr 2012 11:11:30 +0200 revset: do not ignore input revisions in roots() stable
Patrick Mezard <patrick@mezard.eu> [Sun, 08 Apr 2012 11:11:30 +0200] rev 16394
revset: do not ignore input revisions in roots() 0329d3b12d8e is also partially reverted to use the 'narrow' parameter again and make less changesets parents lookups.
Tue, 10 Apr 2012 16:53:29 -0500 util.h: more Python 2.4 fixes
Matt Mackall <mpm@selenic.com> [Tue, 10 Apr 2012 16:53:29 -0500] rev 16393
util.h: more Python 2.4 fixes
Mon, 09 Apr 2012 13:48:45 -0700 dispatch: add support for statprof as a profiler
Bryan O'Sullivan <bryano@fb.com> [Mon, 09 Apr 2012 13:48:45 -0700] rev 16392
dispatch: add support for statprof as a profiler This can be selected using the config variable profiling.type or the environment variable HGPROF ("ls" for the default, "stat" for statprof). The only tuneable is the frequency, profiling.freq, which defaults to 1000 Hz. If statprof is not available, a warning is printed.
Mon, 09 Apr 2012 14:36:16 -0700 ui: optionally quiesce ssl verification warnings on python 2.5
Steven Stallion <sstallion@gmail.com> [Mon, 09 Apr 2012 14:36:16 -0700] rev 16391
ui: optionally quiesce ssl verification warnings on python 2.5 Some platforms, notably Plan 9 from Bell Labs are stuck on older releases of Python. Due to restrictions in the platform, it is not possible to backport the SSL library to the existing Python port. This patch permits the UI to quiesce SSL verification warnings by adding a configuration entry named reportoldssl to ui.
(0) -10000 -3000 -1000 -300 -100 -56 +56 +100 +300 +1000 +3000 +10000 +30000 tip