Hi,
I am thinking about speeding up the blame command. I would like to hear
others' opinions on my ideas.
I experimented a little and found that downloading the whole file contents
for each revision where the file was changed takes some time, which is to
be expected. So I think modifying the algorithm so that it downloads text
deltas instead would speed things up a lot. I looked around in
libsvn_client and I have drawn the following conclusions:
- we can't use svn_client_diff for this, since it would be to easy:-)
Seriously, it downloads the file in the first revision for each
invocation, so we wouldn't win anything.
- do_update() in the RA library gives us the information we need. It gives
a diff between two revisions.
- we need to create a custom delta editor for this functionality. Since we
are just interested in a single file, most of the "methods" will be
no-ops,
but apply_text_delta will need to handle the delta and create the new
temporary file for the new revision. Maybe we also need to whach out for
changes in the svn:mime-type property to prevent blame on binary files?
- then we use the above in the loop of the blame command that currently
download each fulltext.
Please note that I am relatively new to the svn codebase, so my
terminology above may look a bit strange. However, I'd like to know if I
am on the right track and if this is a good way to improve the speed of
the blame command. I think this task shouldn't be too hard for a beginner
like me:-)
Regards,
//Peter
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Apr 24 22:57:53 2004