Stories
Slash Boxes
Comments
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

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.
  • I feel your pain. I think the SVN API, and its bindings are quite a bit much less than stellar or intuitive.

    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
    • 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]

      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.

      x SVN::Repos
      + SVN::Ra
      : = Mean
      M = Median
      +----------------------------------------------------------------

      • I've got nothing. I chose SVN::Client because it was the only one that had any decent pod. And I use Ra to get_latest_version from the repo since I couldn't find another way to do it using Client. And Ra totally baffles me to this day.

        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
        • by nik (3476) <nikc@cpan.org> on 2006.09.18 2:54 (#50166) Journal
          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. :-)

          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.

          I was under the impression that Ra, or at least it's perl bindings couldn't do all forms of connections (svn, file, http).

          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.

          I'm sure http repo access in Model::SVN is slow...but I just wanted it to be an option. With some good caching code, it means I could reference 3rd party svn stuffs in a single site, or get a decent browse from a repo where no other methods are available due to firewall issues.

          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.