NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.
All the Perl that's Practical to Extract and Report
Stories, comments, journals, and other submissions on use Perl; are Copyright 1998-2006, their respective owners.
Bah (Score:1)
Just for the sake of saying so, It is possible to browse using file, svn, AND http in http://search.cpan.org/~claco/Catalyst-Model-SVN-0.05/ [cpan.org]
That's what powers http://handelframework.com/source/ [handelframework.com]
It wasn't fun, and it wasn't pretty, but it does work. My biggest beef is the fetching content/logs on a tab/branch url. I can't just ask for it by url, since it's a copy; you have to stroll through the logs til
Re: (Score:1)
Do you see much use of the http:/// [http] access? I've done some benchmarking comparing SVN::Repos (file:/// only) with SVN::Ra (file:/// and svn://). Carrying out 11 runs each of SVN::Web's test suite, SVN::Ra takes about 15% longer to run the tests than SVN::Repos.
Re: (Score:1)
The SVN Perl bindings are not so readable. Trolling through C source docs/doxygen (when it works) isn't my idea of usable pod w/ examples.
I was under the impression that Ra, or at least it's perl bindings couldn't do all forms of connections (svn, file, http). I'm sure htt
Re:Bah (Score:1)
That has recently (like, last week) improved, as a big commit was made to Subversion to expand on the Perl documentation and provide more examples.
But yes, I've often had to fallback to writing a short hack to exercise a particular API function and use Data::Dumper on the result to divine what's being returned.
SVN::Repos connects directly to the repository -- no URL scheme, you have to give it a path. So it's fastest.
SVN::Ra can do file:// and svn://. In my tests it fails trying to do http:/// [http] -- I think this is because the SVN::Ra layer (as opposed to the underlying C API) always tries to fetch directory properties, which isn't always supported with http://./ [.]
It's connection orientied -- open a repository, perform many operations against it, close it. So it's slower than ::Repos (because of the intervening URL layer), but only 15% slower.
SVN::Client splits some of the ::Ra operations out in two different operations. Which is why it works against http:/// [http] accessable repositories. But SVN::Client isn't connection oriented as far as I can tell -- every operation you carry out using its API means that, under the hood, it has to re-open the repo you're interested in, get the data, and disconnect.
I don't do that much in SVN::Web -- but I do do it when browsing a repository directory -- I have to make one call to SVN::Client::ls() to get the directory entries, and then I need to make n calls (where n is the number of files in the directory) to retrieve each file's MIME type, so that I can pass that info to the template, so the template can choose different icons to display for the files.
This is slow.
I might be able to work around it, but that needs more investigation.
Yeah, that's a nice feature. SVN::Web can do that now for svn:// accessible repos.
I'll keep banging away at SVN::Client and see if I can come up with something that works and is fast.
Reply to This
Parent