Wed, 18 Jan 2012 17:23:54 +0100 phases: mechanism to allow extension to alter initial computation of phase
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 18 Jan 2012 17:23:54 +0100] rev 15922
phases: mechanism to allow extension to alter initial computation of phase This commit add a whennodata list where extension can register a callback to be called if no phase related data are found in the repository. The goal is to ensure the existing extension that move phase data in 2.1 can compute consistent phase boundary for existing repo.
Wed, 18 Jan 2012 17:11:27 +0100 qclone: add a few comment and blank line
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 18 Jan 2012 17:11:27 +0100] rev 15921
qclone: add a few comment and blank line This help readability.
Wed, 18 Jan 2012 17:06:59 +0100 mq: turn changeset draft on qfinish (except if qparent is secret)
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 18 Jan 2012 17:06:59 +0100] rev 15920
mq: turn changeset draft on qfinish (except if qparent is secret) As mq automatically sets changesets as secret, it should make them draft when he is done with it. We do not move them automatically to draft when we detect that something else have also set them as secret through their parents.
Wed, 18 Jan 2012 16:52:26 +0100 config: have a way to backup and restore value in config
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 18 Jan 2012 16:52:26 +0100] rev 15919
config: have a way to backup and restore value in config This is introduce to allow temporary overwriting of a config value while being able to reinstall the old value once done. The main advantage over using ``config`` and ``setconfig`` is that backup and restore will properly restore the lack of any config. Restoring the fact that there was no value is important to allow config user to keep using meaniful default value. A more naive approach will result in the following scenario:: Before: config(section, item, my_default) --> my_default temporal overwrite old = config(section, item) … setconfig(section, item, old) After config(section, item, my_default) --> None The first user of this feature should be mq to overwriting minimal phase of future commit.
Tue, 17 Jan 2012 11:08:23 +0100 graft: add test to check the phase of new changesets
Alain Leufroy <alain.leufroy@logilab.fr> [Tue, 17 Jan 2012 11:08:23 +0100] rev 15918
graft: add test to check the phase of new changesets Graft actually do not keep the phase of the source changesets: no need to change the graft code and add test to check this behaviour.
Tue, 17 Jan 2012 09:12:14 +0100 rebase: fix phases movement
Alain Leufroy <alain.leufroyATgmailMYDOTcom> [Tue, 17 Jan 2012 09:12:14 +0100] rev 15917
rebase: fix phases movement Rebase now try to keep the phases of source changesets.
Wed, 18 Jan 2012 11:33:14 +0100 largefiles: cache new largefiles for new heads when pulling
Na'Tosha Bard <natosha@unity3d.com> [Wed, 18 Jan 2012 11:33:14 +0100] rev 15916
largefiles: cache new largefiles for new heads when pulling When the user pulls from a remote repository that is not his default repo, it is quite likely that he will pull a new head. This means that if he tries to merge or rebase with the other head, he will run into a problem becuase largefiles has no way of tracking where the remote repository for this other head is, so it cannot download the largefiles from this other remote repository. It will attempt to download them from its default remote repository, which will not yet contain the largefiles. This patch solves this problem by caching any new largefiles for all heads directly into the system cache at the time of the pull, so they are available later. This behavior is actually more in line with Mercurial's distributed nature, because pulling already implies we have a connection to the remote server, but merging or rebasing does not.
Wed, 18 Jan 2012 14:33:19 +0100 largefiles: remove unused lfutil.readhash()
Patrick Mezard <pmezard@gmail.com> [Wed, 18 Jan 2012 14:33:19 +0100] rev 15915
largefiles: remove unused lfutil.readhash()
Wed, 18 Jan 2012 14:19:43 +0100 largefiles: check if largefile could be found when archiving (issue3193)
Na'Tosha Bard <natosha@unity3d.com> [Wed, 18 Jan 2012 14:19:43 +0100] rev 15914
largefiles: check if largefile could be found when archiving (issue3193)
Wed, 18 Jan 2012 13:41:03 +0100 largefiles: refactor lfutil.findfiles to be more logical
Na'Tosha Bard <natosha@unity3d.com> [Wed, 18 Jan 2012 13:41:03 +0100] rev 15913
largefiles: refactor lfutil.findfiles to be more logical
Tue, 17 Jan 2012 19:10:59 -0500 forget: fix subrepo recursion for explicit path handling
David M. Carr <david@carrclan.us> [Tue, 17 Jan 2012 19:10:59 -0500] rev 15912
forget: fix subrepo recursion for explicit path handling When support for handling explicit paths in subrepos was added to the forget command (95174c381525), subrepo recursion wasn't taken into account. This change fixes that by pulling the majority of the logic of commands.forget into cmdutil.forget, which can then be called from both there and subrepo.forget.
Tue, 17 Jan 2012 19:10:58 -0500 add: fix subrepo recursion for explicit path handling
David M. Carr <david@carrclan.us> [Tue, 17 Jan 2012 19:10:58 -0500] rev 15911
add: fix subrepo recursion for explicit path handling When support for handling explicit paths in subrepos was added to the add command (9e99d2bbb1b1), subrepo recursion wasn't taken into account. This change adds an explicitonly argument to cmdutil.add to allow controlling which levels of recursion should include only explicit paths versus all matched paths.
Tue, 17 Jan 2012 19:10:54 -0500 tests: add subrepo recursion tests for add/forget with explicit paths
David M. Carr <david@carrclan.us> [Tue, 17 Jan 2012 19:10:54 -0500] rev 15910
tests: add subrepo recursion tests for add/forget with explicit paths When support for handling add/forget of explicit paths within subrepos was added (9e99d2bbb1b1/95174c381525), nested subrepos weren't handled properly. This change adds test coverage to expose the broken behavior, which will be fixed in later patches.
Wed, 18 Jan 2012 15:07:15 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 18 Jan 2012 15:07:15 -0600] rev 15909
merge with stable
Wed, 18 Jan 2012 14:56:52 -0600 bookmarks: backout locking change in 12dea4d998ec
Matt Mackall <mpm@selenic.com> [Wed, 18 Jan 2012 14:56:52 -0600] rev 15908
bookmarks: backout locking change in 12dea4d998ec Repo lock only applies to data in .hg/store/
Tue, 17 Jan 2012 20:23:23 +0100 changeset_printer: display changeset phase on debug level
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 17 Jan 2012 20:23:23 +0100] rev 15907
changeset_printer: display changeset phase on debug level Backward compatibility make it hard to display it on higher level
Tue, 17 Jan 2012 20:43:41 +0100 phase: report phase movement
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 17 Jan 2012 20:43:41 +0100] rev 15906
phase: report phase movement When used in "set" mode, the phase command now display the number of changeset who changed phase.
Mon, 16 Jan 2012 19:45:35 +0100 largefiles: correctly handle newly added largefile on other side of merge
Na'Tosha Bard <natosha@unity3d.com> [Mon, 16 Jan 2012 19:45:35 +0100] rev 15905
largefiles: correctly handle newly added largefile on other side of merge
Tue, 17 Jan 2012 02:55:55 +0100 rebase: write series file without removed mq patches
Mads Kiilerich <mads@kiilerich.com> [Tue, 17 Jan 2012 02:55:55 +0100] rev 15904
rebase: write series file without removed mq patches Rebase will remove empty changesets and will also completely remove the mq patch file for rebased empty patches. Starting with b28004513977 (1.9) it would preserve guards by writing the old series file back. That would however also reintroduce removed patch files in the series file and the inconsistency would make qpop + qpush fail. This patch backs out most of b28004513977 and makes sure guards are preserved without reintroducing removed patches.
Tue, 17 Jan 2012 17:48:59 -0600 revset: roots needs to be computed on full set
Matt Mackall <mpm@selenic.com> [Tue, 17 Jan 2012 17:48:59 -0600] rev 15903
revset: roots needs to be computed on full set
Wed, 18 Jan 2012 16:46:15 +0100 phases: use nodemap to check for missing nodes
Sune Foldager <cryo@cyanite.org> [Wed, 18 Jan 2012 16:46:15 +0100] rev 15902
phases: use nodemap to check for missing nodes
Wed, 18 Jan 2012 14:50:17 +0100 repair: move phases code after invalidation code
Henrik Stuart <henrik.stuart@edlund.dk> [Wed, 18 Jan 2012 14:50:17 +0100] rev 15901
repair: move phases code after invalidation code
Tue, 17 Jan 2012 11:29:32 +0100 largefiles: remove empty directories upon update (issue3202) stable
Patrick Mezard <pmezard@gmail.com> [Tue, 17 Jan 2012 11:29:32 +0100] rev 15900
largefiles: remove empty directories upon update (issue3202)
Mon, 16 Jan 2012 01:21:30 -0600 revset: optimize roots and children
Matt Mackall <mpm@selenic.com> [Mon, 16 Jan 2012 01:21:30 -0600] rev 15899
revset: optimize roots and children
Mon, 16 Jan 2012 01:21:22 -0600 revset: optimize building large lists in formatrevspec
Matt Mackall <mpm@selenic.com> [Mon, 16 Jan 2012 01:21:22 -0600] rev 15898
revset: optimize building large lists in formatrevspec The large or-expressions we used to build required a substantial amount of subset filtering in orset() which was inefficient. Instead we build a single string which we process in one go with a special internal predicate.
Thu, 08 Dec 2011 16:28:18 +0100 hg-ssh: use shlex for shell-like parsing of SSH_ORIGINAL_COMMAND
Mads Kiilerich <mads@kiilerich.com> [Thu, 08 Dec 2011 16:28:18 +0100] rev 15897
hg-ssh: use shlex for shell-like parsing of SSH_ORIGINAL_COMMAND The Mercurial ssh protocol is defined as if it was ssh-ing to a shell account on an ordinary ssh server, and where hg was available in $PATH and it executed the command "hg -R REPOPATH serve --stdio". The Mercurial ssh client can in most cases just pass REPOPATH to the shell, but if it contains unsafe characters the client will have to quote it so the shell will pass the right -R value to hg. Correct quoting of repopaths was introduced in d8fa35c28335 and tweaked in 86fc364ca5f8. hg-ssh doesn't create the command via a shell and used a simple parser instead. It worked fine for simple paths without any quoting, but if any kind of quoting was used it failed to parse the command like the shell would do it. This makes hg-ssh behave more like a normal shell with hg in the path would do.
Sun, 15 Jan 2012 13:50:12 -0700 hooks: prioritize run order of hooks
Matt Zuba <matt.zuba@goodwillaz.org> [Sun, 15 Jan 2012 13:50:12 -0700] rev 15896
hooks: prioritize run order of hooks As of Mercurial 1.3, hooks are sorted in the order they are read into Mercurial. There are many instances when someone may want the hooks sorted in a specific order; this patch allows prioritizing hooks, while maintaining the existing enumeration for hooks without a priority.
Sun, 15 Jan 2012 18:00:01 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 15 Jan 2012 18:00:01 -0600] rev 15895
merge with stable
Wed, 11 Jan 2012 15:53:42 -0500 merge: report all files in _checkunknown
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Wed, 11 Jan 2012 15:53:42 -0500] rev 15894
merge: report all files in _checkunknown When doing hg up, if there is a file conflict with untracked files, currently only the first such conflict is reported. With this patch, all of them are listed. With this patch error message is now reported as a: untracked file differs b: untracked file differs abort: untracked files in working directory conflict with files in requested revision instead of abort: untracked file in working directory differs from file in requested revision: 'a' This is a follow up to an old attempt to do this here: http://selenic.com/pipermail/mercurial-devel/2011-August/033625.html
Fri, 13 Jan 2012 22:16:01 +0100 discovery: fix prepush documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 13 Jan 2012 22:16:01 +0100] rev 15893
discovery: fix prepush documentation The prepush documentation claim that when we refuse to push, the second element of the returng tuple is an "outgoing" integer. value should be 0 when no outgoing changeset and 1 otherwise. In pratice if there are no outgoing changeset, "outgoing" value is alway 1 and util.Abort is raised on other error. the stable branch also include this error so it wasn't introduced by a recent refactoring.
Fri, 13 Jan 2012 02:04:16 +0100 phases: simplify phase exchange and movement over pushkey
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 13 Jan 2012 02:04:16 +0100] rev 15892
phases: simplify phase exchange and movement over pushkey The code now only exchange draft root and only care about movement related to public//draft boundary. There is multiple reason to simplify this code: * Secret are never discovered anymore * We decided to not support more the three existing phase Removing phase index from pushkey (if ever decided) will be made in another commit.
Fri, 13 Jan 2012 01:42:47 +0100 phases: move phase according what was pushed not only what was added added
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 13 Jan 2012 01:42:47 +0100] rev 15891
phases: move phase according what was pushed not only what was added added This fix the lack phase movement when a locally secret changeset without added children was pushed to the repository. In such case, this changeset would be present in the bundle source, but not in the ``added`` variable.
Fri, 13 Jan 2012 01:29:03 +0100 revlog: make addgroup returns a list of node contained in the added source
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 13 Jan 2012 01:29:03 +0100] rev 15890
revlog: make addgroup returns a list of node contained in the added source This list will contains any node see in the source, not only the added one. This is intended to allow phase to be move according what was pushed by client not only what was added.
Thu, 12 Jan 2012 01:25:57 +0100 phases: make secret changeset undiscoverable in all case
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 12 Jan 2012 01:25:57 +0100] rev 15889
phases: make secret changeset undiscoverable in all case This apply the redefined stronger semantic of secret. Secret changeset can still leak in various way. Those leak will need to be fixed individualy
Wed, 11 Jan 2012 17:26:27 +0100 phases: exclude secret when doing a local clone
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 11 Jan 2012 17:26:27 +0100] rev 15888
phases: exclude secret when doing a local clone This is achieved by denying copy clone when any secret changeset exist.
Fri, 13 Jan 2012 02:30:43 +0100 bookmarks: primarily use repo lock, not wlock
Mads Kiilerich <mads@kiilerich.com> [Fri, 13 Jan 2012 02:30:43 +0100] rev 15887
bookmarks: primarily use repo lock, not wlock Bookmarks are repository data, not working directory data. Only the current bookmark is working directory data. Some lock shuffling is required to avoid lockout between the initial mock lock and locking of the localrepo instance that is created after copying.
Fri, 13 Jan 2012 02:29:38 +0100 localrepo: update branchcache in a more reliable way
Mads Kiilerich <mads@kiilerich.com> [Fri, 13 Jan 2012 02:29:38 +0100] rev 15886
localrepo: update branchcache in a more reliable way test-mq-cache.t did apparently look at stale cache content. Testing with different locking mechanism happened to update the cache more frequently and thus caused a test failure.
Fri, 13 Jan 2012 01:19:08 +0100 tests: make qnew in test-mq-caches.t stable
Mads Kiilerich <mads@kiilerich.com> [Fri, 13 Jan 2012 01:19:08 +0100] rev 15885
tests: make qnew in test-mq-caches.t stable The unstable hashes did for other reasons not show up in the test output.
Fri, 13 Jan 2012 01:19:08 +0100 localrepo: remove spurious updatebranchcache return value
Mads Kiilerich <mads@kiilerich.com> [Fri, 13 Jan 2012 01:19:08 +0100] rev 15884
localrepo: remove spurious updatebranchcache return value - it was left over from the refactoring in d01e28657429.
Wed, 11 Jan 2012 02:29:56 +0100 mq: only save dirty files once when savedirty is called multiple times
Mads Kiilerich <mads@kiilerich.com> [Wed, 11 Jan 2012 02:29:56 +0100] rev 15883
mq: only save dirty files once when savedirty is called multiple times
Wed, 11 Jan 2012 02:29:56 +0100 mq: remove early wlock release in qnew
Mads Kiilerich <mads@kiilerich.com> [Wed, 11 Jan 2012 02:29:56 +0100] rev 15882
mq: remove early wlock release in qnew It seems like something that missed the refactoring in 97b734fb9c6f.
Wed, 11 Jan 2012 02:29:55 +0100 mq: use .invalidate to cancel dirty mq state when cancelling transaction
Mads Kiilerich <mads@kiilerich.com> [Wed, 11 Jan 2012 02:29:55 +0100] rev 15881
mq: use .invalidate to cancel dirty mq state when cancelling transaction Before the code optimistically relied on savedirty not being called a cancelled transaction. If it was called it could save incorrect data. Instead we now start using the invalidate method introduced in b169ba60eebe.
Wed, 11 Jan 2012 02:29:55 +0100 mq: make qsave implementation more explicit
Mads Kiilerich <mads@kiilerich.com> [Wed, 11 Jan 2012 02:29:55 +0100] rev 15880
mq: make qsave implementation more explicit It wasn't obvious from the code how qsave mocked around with .hg/patches and .hg/patches.? and what was going on. This makes it more explicit so it will survive future refactorings.
Wed, 11 Jan 2012 02:28:36 +0100 mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com> [Wed, 11 Jan 2012 02:28:36 +0100] rev 15879
mq: consistently use boolean values for dirty flags
Wed, 11 Jan 2012 02:28:12 +0100 mq: minor cleanup
Mads Kiilerich <mads@kiilerich.com> [Wed, 11 Jan 2012 02:28:12 +0100] rev 15878
mq: minor cleanup
Fri, 13 Jan 2012 01:19:07 +0100 tag: lock before tagging
Mads Kiilerich <mads@kiilerich.com> [Fri, 13 Jan 2012 01:19:07 +0100] rev 15877
tag: lock before tagging
Fri, 13 Jan 2012 01:19:07 +0100 tests: lock before creating transaction in test-filelog
Mads Kiilerich <mads@kiilerich.com> [Fri, 13 Jan 2012 01:19:07 +0100] rev 15876
tests: lock before creating transaction in test-filelog
Fri, 13 Jan 2012 01:19:07 +0100 debugbuilddag: lock repo before starting transaction
Mads Kiilerich <mads@kiilerich.com> [Fri, 13 Jan 2012 01:19:07 +0100] rev 15875
debugbuilddag: lock repo before starting transaction
Fri, 13 Jan 2012 01:19:07 +0100 rebase: take locks in the right order
Mads Kiilerich <mads@kiilerich.com> [Fri, 13 Jan 2012 01:19:07 +0100] rev 15874
rebase: take locks in the right order repo.lock was taken before repo.wlock - that could in principle cause a deadlock.
Wed, 11 Jan 2012 01:56:05 +0100 tests: keep track of all check-code.py warnings
Mads Kiilerich <mads@kiilerich.com> [Wed, 11 Jan 2012 01:56:05 +0100] rev 15873
tests: keep track of all check-code.py warnings
Sun, 15 Jan 2012 13:39:09 +0100 filectx: typo in comment stable
Christian Ebert <blacktrash@gmx.net> [Sun, 15 Jan 2012 13:39:09 +0100] rev 15872
filectx: typo in comment
Sun, 15 Jan 2012 13:37:33 +0100 keyword: update filectx.cmp monkeypatch to handle '\1\n' at start of file stable
Christian Ebert <blacktrash@gmx.net> [Sun, 15 Jan 2012 13:37:33 +0100] rev 15871
keyword: update filectx.cmp monkeypatch to handle '\1\n' at start of file Analogous to 012b285cf643.
Wed, 11 Jan 2012 16:54:29 +0000 bugzilla: make XMLRPC interface support http and https access stable
Jim Hague <jim.hague@acm.org> [Wed, 11 Jan 2012 16:54:29 +0000] rev 15870
bugzilla: make XMLRPC interface support http and https access Inadvertently support is currently only for https. For some reason I thought xmlrpclib.SafeTransport did http and https, but it is https only. So create http and https XMLRPC transports that retain cookies. Decide which to use by inspecting the Bugzilla URL.
Fri, 13 Jan 2012 11:29:53 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Fri, 13 Jan 2012 11:29:53 -0600] rev 15869
merge with stable
Fri, 13 Jan 2012 11:29:40 -0600 merge with i18n
Matt Mackall <mpm@selenic.com> [Fri, 13 Jan 2012 11:29:40 -0600] rev 15868
merge with i18n
Thu, 12 Jan 2012 17:50:48 +0700 i18n-ru: editorial for 'abort' and 'pipe'
Andrei Polushin <polushin@gmail.com> [Thu, 12 Jan 2012 17:50:48 +0700] rev 15867
i18n-ru: editorial for 'abort' and 'pipe'
Thu, 12 Jan 2012 02:12:00 +0700 i18n-ru: editorial for 'diff'
Andrei Polushin <polushin@gmail.com> [Thu, 12 Jan 2012 02:12:00 +0700] rev 15866
i18n-ru: editorial for 'diff' * * * i18n-ru: editorial for 'diff'
Thu, 12 Jan 2012 02:02:11 +0700 i18n-ru: editorial for 'guard'
Andrei Polushin <polushin@gmail.com> [Thu, 12 Jan 2012 02:02:11 +0700] rev 15865
i18n-ru: editorial for 'guard'
Wed, 11 Jan 2012 04:32:48 +0700 i18n-ru: vocabulary edited, minor corrections in translations.
Andrei Polushin <polushin@gmail.com> [Wed, 11 Jan 2012 04:32:48 +0700] rev 15864
i18n-ru: vocabulary edited, minor corrections in translations.
Wed, 11 Jan 2012 04:12:11 +0700 i18n-ru: using correct abbreviated units for megabytes.
Andrei Polushin <polushin@gmail.com> [Wed, 11 Jan 2012 04:12:11 +0700] rev 15863
i18n-ru: using correct abbreviated units for megabytes. See http://ru.wikipedia.org/wiki/МБ
Wed, 11 Jan 2012 18:14:55 +0100 help: fix column alignment in "hg help" output
Olav Reinert <seroton10@gmail.com> [Wed, 11 Jan 2012 18:14:55 +0100] rev 15862
help: fix column alignment in "hg help" output The output of "hg help" is changed to ensure that the column containing descriptions of commands, extensions, and other topics is correctly alignmened.
Wed, 11 Jan 2012 18:08:25 +0100 minirst: simplify and standardize field list formatting
Olav Reinert <seroton10@gmail.com> [Wed, 11 Jan 2012 18:08:25 +0100] rev 15861
minirst: simplify and standardize field list formatting The default width of field lists is changed from 12 to 14 to align minirst with the rst2html tool. Shrinking the width of the left column to fit the content is removed, to keep formatting simple and uniform.
Wed, 11 Jan 2012 16:53:51 +0100 largefiles: correctly download new largefiles when merging
Na'Tosha Bard <natosha@unity3d.com> [Wed, 11 Jan 2012 16:53:51 +0100] rev 15860
largefiles: correctly download new largefiles when merging There is a bug in the merge process where, if a new largefile is introduced in a merge and the user does not have that largefile in his repo's local store nor in his system cache, the working copy will retain the old largefile. Upon the commit of the merge, the standin is re-written to contain the hash of the old largefile, and the lfdirstate retains a "Modified" status for the file. The end result is that the largefile can show up in the merge commit as "Modified", but the standin has no diff. This is wrong in two ways: 1) Such a "wedged" history with a nonsense change in a commit should not be possible 2) It effectively reverts a largefile to an old version when doing a merge This is caused by the fact that the updatelfiles() command always checks the current largefile's hash against the hash stored in the current node's standin. This is correct behavior in every case except for a merge. When merging, we must assume that the standin in the working copy contains the correct hash, because the original hg.merge() has already updated it for us. This patch fixes the issue by patching the repo object to carry a "_ismerging" attribute, that the updatelfiles() command checks for. When this attribute is found, it checks against the working copy's standin, rather than the standin in the current node.
Wed, 11 Jan 2012 15:38:31 +0100 tests: add htmlcov option
Markus Zapke-Gründemann <info@keimlink.de> [Wed, 11 Jan 2012 15:38:31 +0100] rev 15859
tests: add htmlcov option
(0) -10000 -3000 -1000 -300 -100 -64 +64 +100 +300 +1000 +3000 +10000 +30000 tip