That's right, kids. 'svn ls -R' calls RA->get_dir() on *every* directory in the
tree, builds a single Mega-hash in memory, then sends back this massive thing to
the client to print at the very end. It makes the whole operation seem very
slow to the user, and we shouldn't be holding whole trees in memory like that.
It's the way 'svn status' used to be. The True Solution is to make
svn_client_ls() streamily invoke a callback, just like svn_client_status() does.
This might be an svn 2.0 change. For svn 1.1, we could write a new public API
that is a 'streamy' version of svn_client_ls().
Less ambitiously, we could at least make the current svn_client_ls() use a
scratchpool for recursion... oy!