package SVN::Web::Checkout; use strict; use SVN::Core; use SVN::Repos; use SVN::Fs; sub new { my $class = shift; my $self = bless {}, $class; %$self = @_; return $self; } sub run { my $self = shift; my $pool = SVN::Pool->new_default_sub; my $fs = $self->{repos}->fs; my $rev = $self->{cgi}->param('rev') || $fs->youngest_rev; my $root = $fs->revision_root ($rev); die "not a file" unless $root->is_file ($self->{path}); my $file = $root->file_contents ($self->{path}); local $/; return {mimetype => $root->node_prop ($self->{path}, 'svn:mime-type') ||'text/plain', body => <$file>}; } 1;