Bryan O'Sullivan <bryano@fb.com> [Wed, 09 Jan 2013 13:16:54 -0800] rev 18285
hghave: introduce a test (unused) for cvs >= 1.12
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 06 Jan 2013 04:50:14 +0100] rev 18284
discovery: drop the visibleheads function
It has no users left. (Using filtering explicitly is easier.)
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 06 Jan 2013 04:48:22 +0100] rev 18283
clfilter: remove the last usage of `visibleheads`
We can just inline the filtering now that all server code uses
changelog filtering directly.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 05 Jan 2013 18:57:09 +0100] rev 18282
discovery: drop the visiblebranchmap function
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 06 Jan 2013 04:36:30 +0100] rev 18281
clfilter: drop extra filtering in wireprotocol
The repository used by wireprotocol is already filtered. We no
longer need to call special functions.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 06 Jan 2013 04:37:33 +0100] rev 18280
clfilter: filter "unserved" on all wireprotocol command calls
This ensures that unserved changesets are not exposed through the
wire protocol.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 06 Jan 2013 04:28:52 +0100] rev 18279
clfilter: drop extra filtering in localpeer
The repository used by localpeer is already filtered. We no longer
need to call a special function.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 06 Jan 2013 04:41:11 +0100] rev 18278
clfilter: make localpeer use a repo with "unserved" filter
This changeset installs a broad filter on most repos used for
serving. This removes the need to use the `visiblehead`/`visiblebranchmap`
functions, and ensures that changesets we should not serve are in
fact never served.
We do not use filtering on hgweb yet, as there is still a number
of issues to solve there.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 04 Jan 2013 03:16:08 +0100] rev 18277
performance: speedup computation of extinct revisions
In their current state, revset calls can be very costly, as we test
predicates on the entire repository.
This change drops revset calls in favor of direct testing of the phase
of changesets.
Performance test on my Mercurial checkout
- 19857 total changesets,
- 1584 obsolete changesets,
- 13310 obsolescence markers.
Before:
! extinct
! wall 0.015124
After:
! extinct
! wall 0.009424
Performance test on a Mozilla central checkout:
- 117293 total changesets,
- 1 obsolete changeset,
- 1 obsolescence marker.
Before:
! extinct
! wall 0.032844
After:
! extinct
! wall 0.000066
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 04 Jan 2013 03:15:44 +0100] rev 18276
performance: speedup computation of suspended revisions
In their current state, revset calls can be very costly, as we test
predicates on the entire repository.
This change drops a revset call in favor of direct testing of the
phase of changesets.
Performance test on my Mercurial checkout
- 19857 total changesets,
- 1584 obsolete changesets,
- 13310 obsolescence markers.
Before:
! suspended
! wall 0.014319
After:
! suspended
! wall 0.009559
Performance test on a Mozilla central checkout:
- 117293 total changesets,
- 1 obsolete changeset,
- 1 obsolescence marker.
Before:
! suspended
! wall 0.033373
After:
! suspended
! wall 0.000053
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 04 Jan 2013 03:15:21 +0100] rev 18275
performance: speedup computation of unstable revisions
In their current state, revset calls can be very costly, as we test
predicates on the entire repository.
This change drops revset call in favor of direct testing of the
phase of changesets.
Performance test on my Mercurial checkout
- 19857 total changesets,
- 1584 obsolete changesets,
- 13310 obsolescence markers.
Before:
! unstable
! wall 0.017366
After this changes:
! unstable
! wall 0.008093
Performance test on a Mozilla central checkout:
- 117293 total changesets,
- 1 obsolete changeset,
- 1 obsolescence marker.
Before:
! unstable
! wall 0.045190
After:
! unstable
! wall 0.000032
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 07 Jan 2013 15:50:25 +0100] rev 18274
performance: speedup computation of mutable revisions
In their current state, revset calls can be very costly, as we test
predicates on the entire repository. The "mutable" filter is used
during branch cache loading operation. We need to make it fast.
This change drops revset calls in favor of direct testing of the
phase of a changeset.
Performance test on my Mercurial checkout
- 19857 total changesets,
- 1646 mutable revision
Before:
! mutable
! wall 0.032405
After:
! mutable
! wall 0.001469
Performance test on a Mozilla central checkout:
- 117293 total changesets,
- 1 mutable changeset,
Before:
! mutable
! wall 0.188636
After:
! mutable
! wall 0.000022
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 04 Jan 2013 20:19:05 +0100] rev 18273
performance: speedup computation of unserved revisions
In their current state, revset calls can be very costly, as we test
predicates on the entire repository. The "unserved" filter is used
in multiple applications, and in particular in some branch cache
loading operations. We need to make it fast.
This change drops revset calls in favor of direct testing of the
phase of a changeset.
Performance test on my Mercurial checkout
- 19857 total changesets,
- 1584 obsolete changesets,
- 13310 obsolescence markers.
Before:
! unserved
! wall 0.030477
After:
! unserved
! wall 0.011844
Performance test on a Mozilla central checkout:
- 117293 total changesets,
- 1 obsolete changeset,
- 1 obsolescence marker.
Before:
! unserved
! wall 0.111259
After:
! unserved
! wall 0.000084
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 04 Jan 2013 05:44:01 +0100] rev 18272
performance: speedup computation of hidden revisions
In their current state, revset calls can be very costlys, as we
test predicates on the entire repository. The hidden filter is very
widely used, and needs to be very fast.
This change drops revset calls in favor of direct revision manipulation.
Performance test on my Mercurial checkout
- 19857 total changesets,
- 1584 obsolete changesets,
- 13310 obsolescence markers.
Before:
! hidden
! wall 0.077553
After this changes:
! hidden
! wall 0.011230
Performance test on a Mozilla central checkout:
- 117293 total changesets,
- 1 obsolete changeset,
- 1 obsolescence marker.
Before:
! hidden
! wall 0.389472
After:
! hidden
! wall 0.000079
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 04 Jan 2013 03:14:54 +0100] rev 18271
performance: speedup computation of obsolete revisions
In their current state, revset calls can be very costly as we test
predicates on the entire repository. As obsolete computation is used
by the "hidden" filter, it needs to be very fast.
This changet drops the revset call in favor of direct testing of
the phase of a changeset.
Performance test on my Mercurial checkout
- 19857 total changesets,
- 1584 obsolete changesets,
- 13310 obsolescence markers.
Before:
! obsolete
! wall 0.047041
After:
! obsolete
! wall 0.004590
Performance test on a Mozilla central checkout:
- 117293 total changesets,
- 1 obsolete changeset,
- 1 obsolescence marker.
Before:
! obsolete
! wall 0.001539
After:
! obsolete
! wall 0.000017
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 24 Dec 2012 12:00:08 +0100] rev 18270
clfilter: drop unnecessary explicit filtering on histedit
Hidden changeset filtering is now done at repo level. The orphaned
children computation will not include any (unless you add --hidden).
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 04 Dec 2012 14:58:19 +0100] rev 18269
clfilter: drop unnecessary explicit filtering on rebase
Hidden changeset filtering is now done at repo level. The rebaseset
computation will not include any (unless you add --hidden).
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 08 Jan 2013 20:02:53 +0100] rev 18268
clfilter: ensure that hidden filtering is working on all commands
Now that hidden changeset are filtered for all commands, we test
the behavior of `heads` and `summary` regarding hidden changeset.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 08 Jan 2013 20:37:37 +0100] rev 18267
clfilter: enforce hidden changeset globally
The dispatch code now enables filtering of "hidden" changesets globally. The
filter is installed before command and extension invocation. The `--hidden`
switch is now global and disables this filtering for any command.
Code in log dedicated to changeset exclusion is removed as this global filtering
has the same effect.
Denis Laxalde <denis@laxalde.org> [Tue, 08 Jan 2013 21:16:39 +0100] rev 18266
record: use patch.diffopts to account for user diffopts
This allows user defined diff options (e.g. showfunc) to be accounted for
when using record. A test has been updated accordingly.
Bryan O'Sullivan <bos@serpentine.com> [Tue, 08 Jan 2013 16:26:52 -0800] rev 18265
convert: fix most test-check-code-hg violations in cvsps code
Bryan O'Sullivan <bryano@fb.com> [Tue, 08 Jan 2013 16:16:29 -0800] rev 18264
tests: update hgweb tests to include breadcrumbs
Angel Ezquerra <angel.ezquerra@gmail.com> [Thu, 03 Jan 2013 17:35:58 +0100] rev 18263
subrepo: add subrepo property to SubrepoAbort exceptions
This new property contains the path of the subrepo that generated the exception.
This information can then be used by GUI tools such as TortoiseHg.
Bryan O'Sullivan <bos@serpentine.com> [Tue, 08 Jan 2013 15:43:48 -0800] rev 18262
tests: update test-convert-cvs*.t
The preceding commit caused their outputs to change.
Frank Kingswood <frank@kingswood-consulting.co.uk> [Tue, 08 Jan 2013 20:11:20 +0000] rev 18261
cvsps: use commitids (when present) to detect changesets
Simplify core logic by no longer attempting to work around missing
class attributes. Instead always generate the attributes and ignore
the cache if the attributes are missing
Angel Ezquerra <angel.ezquerra at gmail.com> [Fri, 21 Dec 2012 02:41:07 +0100] rev 18260
hgweb, spartan: link from manifest title to changeset page
Angel Ezquerra <angel.ezquerra at gmail.com> [Fri, 21 Dec 2012 02:40:12 +0100] rev 18259
hgweb, spartan: add "URL breadcrumbs"
This change adds a "URL breadcrumb" to the "title" of the pages on the spartan
template. By title I mean the first line that is shown right below the page
selection row, which shows the name of the page that is being viewed, along with
some additional information.
In doing so it standarizes those "titles" which now follow the pattern:
URL breadcumb / page details
Angel Ezquerra <angel.ezquerra at gmail.com> [Wed, 28 Nov 2012 20:21:26 +0100] rev 18258
hgweb: add a "URL breadcrumb" to the index and repository pages
The purpose of this change is to make it much easier to navigate up the
repository tree when the hg web server is used to serve more than one
repository.
A "URL breadcrumb" is a path where each of the path items can be clicked to go
to the corresponding path page.
This lets you go up the folder hierarchy very quickly. For example, when showing
the list of repositories in http://myserver/myteams/myprojects, the following
"breadcrumb" will be shown:
Mercurial > myteams > myprojects
Clicking on "myprojects" reloads the page. Clicking on "myteams" goes up one
folder. Clicking on the leftmost "Mercurial" goes to the server root.
This "breadcrumb" also appears on all repository pages. For example on the
summary page of the repository at http://myserver/myteams/myprojects/myrepo the
following will be shown:
Mercurial > myteams > myprojects > myrepo / summary
This change has been applied to all templates that already had a link to the
main repository page (i.e. gitweb, monoblue, paper and coal) plus to the index
page of the spartan template.
In order to make the breadcumb links stand out the some of the template styles
have been customized.
Mads Kiilerich <mads@kiilerich.com> [Tue, 08 Jan 2013 04:15:46 +0100] rev 18257
merge: never do premerge on symlinks
Simplemerge is not symlink aware and will never do the right thing on symlinks.
Mads Kiilerich <mads@kiilerich.com> [Tue, 08 Jan 2013 04:15:41 +0100] rev 18256
merge: make internal merge fail cleanly on symlinks
Simplemerge is not symlink aware and will never do the the right thing on
symlinks. It would read the symlink as a file and abort with 'No such file or
directory' on dangling symlinks.
Instead, internal:merge now simply fails to merge symlinks.
Mads Kiilerich <mads at kiilerich.com> [Sun, 16 Dec 2012 20:50:57 +0100] rev 18255
debugpushkey: list keys sorted
Mads Kiilerich <mads at kiilerich.com> [Wed, 12 Dec 2012 02:38:14 +0100] rev 18254
debugdiscovery: report heads in sorted order
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 03 Jan 2013 18:52:59 +0100] rev 18253
hidden: drop of the repo.hiddenrevs property
It does not have any user left
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 03 Jan 2013 18:51:16 +0100] rev 18252
context: retrieve hidden from filteredrevs
This prepare the dropping of the repo.hiddenrevs property
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 03 Jan 2013 18:48:14 +0100] rev 18251
revset: retrieve hidden from filteredrevs
This prepare the dropping of the `repo.hiddenrevs` property
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 08 Jan 2013 17:31:00 +0100] rev 18250
hidden: use both parents of working directory
If we are merging with and extinct revision, this extinct revision should not be
hidden.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 08 Jan 2013 14:16:49 +0100] rev 18249
hidden: drop cache on hiddenrevs property
The `filteredrevs` function already have a cache mechanism. And this cache in
invalidated at the same time than the current property cache. So we drop the
cache on the property.
The property itself is going to be dropped soon.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 08 Jan 2013 14:10:29 +0100] rev 18248
hidden: move computation in filter function
There is not good reason for this computation to be handle in a different way
from the other. We are moving the computation of hidden revs in the filter
function. In later changesets, code that access to `repo.hiddenrevs` will be
updated and the property dropped.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 08 Jan 2013 12:41:51 +0100] rev 18247
branchcache: add note about cache invalidation to test-keyword.t
[Should've been included in aff706b3a21c.]
--Kevin Bullock <kbullock@ringworld.org>
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.