Edgewall Software

Ticket #6654 (new defect)

Opened 10 months ago

Last modified 10 months ago

Changset view is slow when using sub repository path

Reported by: foom@… Owned by: cboos
Priority: high Milestone: 0.13
Component: version control Version:
Severity: normal Keywords:
Cc:

Description

When viewing a changeset restricted to a subpath, when that path hasn't changed for many revisions, the changeset viewer gets extremely slow.

This is using svn 1.3.2 with fsfs repository containing about 160krevs, Trac 0.11dev-r6396.

The reason is changeset.py:424: next_rev = repos.next_rev(chgset.rev, path)

Then looking into svn_fs.py's implementation of next_rev, you can see that it will iterate through every single revision in the repository after the starting revision, one by one, looking for the next revision number which contains a change for this path.

So, for a subpath which hasn't been changed for 50k revisions, this takes just about forever. And all that, just to show a little link in the corner named "next change".

I'm not sure if next_rev can be made faster somehow, as that would obviously be the best solution. But if not, perhaps the actual revision behind the "next change" link should only be computed when you actually click on it.

Attachments

Change History

Changed 10 months ago by cboos

  • owner changed from jonas to cboos
  • component changed from general to version control
  • milestone set to 0.12

Very true.

A speedup could be obtained by using the cache.

An alternative would be to defer the computation of the next change, as you suggested (see also #2053).

Changed 10 months ago by cboos

Also, a quick hack would be in order for 0.11 for not even computing that value when the changeset view is requested from the annotate view (as we don't display the links in this case).

Changed 10 months ago by cboos

  • priority changed from normal to high

Add/Change #6654 (Changset view is slow when using sub repository path)

Author



Change Properties
<Author field>
Action
as new
as The resolution will be set. Next status will be 'closed'
to The owner will change from cboos. Next status will be 'new'
The owner will change from cboos to anonymous. Next status will be 'assigned'
 
Note: See TracTickets for help on using tickets.