Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 02 Jan 2013 02:02:41 +0100] rev 18246
clfilter: add impactable filter
The `mutable` filter still have some chance to get invalidated. This will happen
when:
- you garbage collect hidden changeset,
- public phase is moved backward,
- something is changed in the filtering (this could be fixed)
So we introduce an even more stable filtering set: everything with a revision
number egal or higher than the first mutable changeset is filtered.
The only official use of this filter is for branchcache.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 02 Jan 2013 01:57:46 +0100] rev 18245
clfilter: add mutable filtering
It filters all mutable changesets, leaving only public changeset unfiltered.
This filtering set is expected to be much more stable that the previous one as
public changeset are unlikely to disapear.
The only official use of this filter is for branchcache.
Mads Kiilerich <mads@kiilerich.com> [Mon, 07 Jan 2013 02:14:41 +0100] rev 18244
run-tests.py: fix handling of symlink to the right python
Before: a symlink for python in BINDIR was sometimes created, but it was never
updated when a different Python was used and it was never removed. An invalid
python could thus be left around and used when testing with --local.
Now: the symlink is removed when wrong and created when necessary.
The mechanism for finding the right name (python or python.exe) also had to be
simplified and made more explicit.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 07 Jan 2013 19:24:36 +0100] rev 18243
log: use "hidden" filtering instead of manual check at display time
When log is not given the --hidden option, hidden revision are not shown. We
move the implementation from manual checking at display time to changelog
filtering.
This is the first official usage of the hidden filtering.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 07 Jan 2013 19:24:06 +0100] rev 18242
clfilter: introduces a hidden filter
This filter exclude all hidden revision. We plan to use this filter to hide
revision instead of manually checking contents of the hidden revisions set.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 04 Jan 2013 19:24:32 +0100] rev 18241
perftest: allow selection of volatile set to benchmark
This helps when you focus on a subset of the volatile chain.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 04 Jan 2013 19:23:26 +0100] rev 18240
perftest: add a command to benchmark construction of volatile cache
Obsolescence and filtering related caches are critical. Having a handy way to
check them is valuable.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 04 Jan 2013 19:22:40 +0100] rev 18239
perftest: add an option to invalidate volatile cache
Some revsets are sensitive to such initialization. Being able to
test the impact is great.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 04 Jan 2013 19:22:15 +0100] rev 18238
perftest: document the perfrevset command
I'll add an argument to it.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 04 Jan 2013 19:20:51 +0100] rev 18237
perftest: migrate to new style command declaration
Declaring synopsis and argument on the function site is much clearer.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 04 Jan 2013 19:18:12 +0100] rev 18236
perftest: drop duplicated codes
The `perfnodelookup` lookup commands is duplicated. We drop the first version,
overwritten by the seconds.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 04 Jan 2013 13:48:07 +0100] rev 18235
cmdutil: make options argument optional
There is not reason to force passing of an empty options list.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 07 Jan 2013 17:23:25 +0100] rev 18234
branchmap: allow to use cache of subset
Filtered repository are *subset* of unfiltered repository. This means that a
filtered branchmap could be use to compute the unfiltered version.
And filtered version happen to be subset of each other:
- "all() - unserved()" is a subset of "all() - hidden()"
- "all() - hidden()" is a subset of "all()"
This means that branchmap with "unfiltered" filter can be used as a base for
"hidden" branchmap that itself could be used as a base for unfiltered
branchmap.
unserved < hidden < None
This changeset implements this mechanism. If the on disk branchcache is not valid
we use the branchcache of the nearest subset as base instead of computing it from
scratch. Such fallback can be cascaded multiple time is necessary.
Note that both "hidden" and "unserved" set are a bit volatile. We will add more
stable filtering in next changesets.
This changeset enables collaboration between no filtering and "unserved"
filtering. Fixing performance regression introduced by
47f00b0de337
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 07 Jan 2013 17:16:24 +0100] rev 18233
repoview: add a subset table
This will be used by branchmap collaboration. See inline documentation for more
details
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 02 Jan 2013 01:40:42 +0100] rev 18232
branchmap: add a copy method
If we want branchcache of different filter to collaborate, they need a simple
way to copy each other. This will ensure that each filtered have no side effect
on other filter level cache.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 02 Jan 2013 01:40:06 +0100] rev 18231
clfilter: use empty frozenset intead of empty tuple
This will allows set operation needed for cache collaboration.
Mads Kiilerich <mads@kiilerich.com> [Mon, 07 Jan 2013 02:00:43 +0100] rev 18230
run-tests.py: don't use console for stdin when running in debug mode
Tests would wait for input instead of using non-interactive mode.
Mads Kiilerich <mads@kiilerich.com> [Mon, 07 Jan 2013 02:00:43 +0100] rev 18229
tests: make hghave and run-tests exit on unknown feature requirements
Mads Kiilerich <mads@kiilerich.com> [Mon, 07 Jan 2013 02:00:43 +0100] rev 18228
test-largefiles.t: fix wrong '#if hgweb' - it should be '#if serve'
A bug introduced in
0c1d10351869 did that a part of the test never was run.
Mads Kiilerich <mads@kiilerich.com> [Mon, 07 Jan 2013 02:00:29 +0100] rev 18227
dispatch: show empty filename in OSError aborts
Mercurial would sometimes exit with:
abort: No such file or directory
where str of the actual OSError exception was the more helpful:
[Errno 2] No such file or directory: ''
The exception will now always show the filename and quote it:
abort: No such file or directory: ''
Mads Kiilerich <mads@kiilerich.com> [Sun, 06 Jan 2013 04:04:44 +0100] rev 18226
test-dispatch.t: remove incorrect "cd $dir"
A line that should have been removed in
50fbe9063ff2.
Kevin Bullock <kbullock@ringworld.org> [Fri, 04 Jan 2013 13:03:44 -0600] rev 18225
merge with crew-stable
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 04 Jan 2013 19:06:42 +0100] rev 18224
dispatch: handle empty `testedwith` value in extension
When extensions had an empty `testedwith` attribute the code tried to parse it
and failed. As a result the actual error were shallowed by a This crash.
We now treat empty strip as 'unknown'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 04 Jan 2013 19:05:20 +0100] rev 18223
destroyed: filter unknown before computing branchcache
Branchcache of filtered version need up to date phase data.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 02 Jan 2013 01:36:57 +0100] rev 18222
branchmap: disable fallback to unfiltered branchcache
Disables this simple optimisation to allow coming more powerfull approach: cache
collaboration.
Our goal is to have branchcache collaborate. This means that unfiltered
branchcache will fallback to some filtered branchcache if invalid. We can't have
the filtered branchcache to use the unfiltered one. That would loop.
Idan Kamara <idankk86@gmail.com> [Fri, 21 Dec 2012 17:19:52 +0100] rev 18221
localrepo: filter unknown nodes from the phasecache on destroyed
When commit is followed by strip (qrefresh), phasecache contains nodes that were
removed from the changelog. Since phasecache is filecached with .hg/store/phaseroots
which doesn't change as a result of stripping, we have to filter it manually.
If we don't write it immediately, the next time it is read from disk the nodes
will be filtered again. That's what happened before, but there's no reason not
to write it immediately.
The change in test-keyword.t is caused by the above.
Idan Kamara <idankk86@gmail.com> [Fri, 04 Jan 2013 06:11:29 +0100] rev 18220
phases: make _filterunknown a member function of phasecache
We'd like the ability to call filterunknown on an existing phasecache
instance after nodes are destroyed.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 04 Jan 2013 01:37:38 +0100] rev 18219
localrepo: drop `_cacheabletip` method
It iss dead code now.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 04 Jan 2013 01:25:55 +0100] rev 18218
branchmap: drop `_cacheabletip` usage in `updatecache`
Nobody overwrite the `_cacheabletip` any more. We always update the cache for
the whole repo and write it to disk (or at list try to). The `updatecache` code
is simplied to remove the double phase logic associated with _cacheabletip.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 28 Dec 2012 03:42:21 +0100] rev 18217
mq: drop `_cacheabletip` usage
Strip have dedicated work around to solve the same problem, strip is even a
fraction faster without that thanks to simpler update process of the branchcache.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 28 Dec 2012 02:34:32 +0100] rev 18216
bundlerepo: drop use of `_cacheabletip`
Now that bundlerepo use a read only VFS, we do not worry about what part of the
branchmap is written back to disk. Nothing is written at all.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 28 Dec 2012 02:32:47 +0100] rev 18215
bundlerepo: enforce reading from core repo only
We do not want anything computed with the bundle overlay to be written back in
the repo. Such write will likely contains invalid data.
The short terms goal of this change is to drop use of `_cacheabletip` in bundle
repo.