X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FGitalist.pm;h=276e386c2ea6ca34abd7e49eedc5de9f3e472cce;hb=1e19ad67eb3b16fa57999f8160d20c98c67b857f;hp=677469ac8365d7825437a510dc8c83c1ad50eaed;hpb=ba5065fa512551ee2a685917d65290a78ed6ee7f;p=catagits%2FGitalist.git diff --git a/lib/Gitalist.pm b/lib/Gitalist.pm index 677469a..276e386 100644 --- a/lib/Gitalist.pm +++ b/lib/Gitalist.pm @@ -14,21 +14,28 @@ use Catalyst qw/ SubRequest /; -our $VERSION = '0.001005'; +our $VERSION = '0.003006'; $VERSION = eval $VERSION; __PACKAGE__->config( name => 'Gitalist', default_view => 'Default', default_model => 'CollectionOfRepos', + use_request_uri_for_path => 1, + disable_component_resolution_regex_fallback => 1, ); __PACKAGE__->setup(); after prepare_path => sub { my ($ctx) = @_; + my $path = $ctx->req->uri->path; if ($ctx->req->param('a')) { - $ctx->request->uri->path('/legacy' . $ctx->request->uri->path); + $ctx->req->uri->path("/legacy$path"); + } + + if($path =~ s/[.]json$// && $ctx->req->content_type eq 'application/json') { + $ctx->req->uri->path($path); } }; @@ -39,61 +46,58 @@ around uri_for => sub { return $uri; }; -around uri_for_action => sub { - my ($orig, $c) = (shift, shift); - my $uri = $c->$orig(@_); - $$uri =~ s[/fragment\b][] if defined $uri; - return $uri; -}; - sub uri_with { my ($self, @args) = @_; my $uri = $self->request->uri_with(@args); # Wow this awful. $uri =~ s[/fragment\b][]; - return $uri; + return $uri; } 1; __END__ +=encoding UTF-8 + =head1 NAME Gitalist - A modern git web viewer =head1 SYNOPSIS - script/gitalist_server.pl --repo_dir /home/me/code/git + perl script/gitalist_server.pl --repo_dir /home/me/code/git =head1 INSTALL As Gitalist follows the usual Perl module format the usual approach -for installation should work e.g. +for installation should work, e.g.: - perl Makefile.PL - make - make test - make install + perl Makefile.PL + make + make test + make install or - cpan -i Gitalist + cpan -i Gitalist -You can also check gitalist out from git and run it, in this case you'll additionally -need the author modules, but no configuration will be needed as it will default to looking +You can also L +and run it, in this case you'll additionally need the author modules, +but no configuration will be needed as it will default to looking for repositories the directory above the checkout. =head1 DESCRIPTION -Gitalist is a web frontend for git repositories based on gitweb.cgi -and backed by Catalyst. +Gitalist is a web frontend for git repositories based on +L and backed by +L. =head2 History -This project started off as an attempt to port gitweb.cgi to a +This project started off as an attempt to port I to a Catalyst app in a piecemeal fashion. As it turns out, thanks largely -to Florian Ragwitz's earlier effort, it was easier to use gitweb.cgi +to Florian Ragwitz's earlier effort, it was easier to use I as a template for building a new Catalyst application. =head1 GETTING GITALIST @@ -108,9 +112,33 @@ The canonical repository for the master branch is: git://git.shadowcat.co.uk/catagits/Gitalist.git -Gitalist is also mirrored to github, and a number of people have active forks +Gitalist is also mirrored to GitHub at L, +and a number of people have active forks with branches and/or new features in the master branch. +=head1 BOOTSTRAPPING + +As of C<0.002001> Gitalist can now be bootstrapped to run out of its +own directory by installing its prerequisites locally with the help of +L. So instead of installing the prerequisites to the +system path with CPAN they are installed under the Gitalist directory. + +To do this clone Gitalist from the L or grab a snapshot from broquaint's GitHub repository: + + https://github.com/broquaint/Gitalist/downloads + +With the source acquired and unpacked run the following from within the +Gitalist directory: + + perl script/bootstrap.pl + +This will install the necessary modules for the build process which in +turn installs the prerequisites locally. + +B The relevant bootstrap scripts aren't available in the CPAN dist +as the bootstrap scripts should not be installed. + =head1 INITIAL CONFIGURATION Gitalist is configured using L. The supplied sample @@ -125,7 +153,7 @@ directory to one directory higher than the Gitalist repository. This means that if you check Gitalist out next to your other git checkouts, then starting the demo server needs no parameters at all: - Gitalist [master]$ ./script/gitalist_server.pl + Gitalist [master]$ perl script/gitalist_server.pl You can connect to your server at http://localhost:3000 =head2 FOR CPAN INSTALLS @@ -139,7 +167,8 @@ by running: cp `perl -Ilib -MGitalist -e'print Gitalist->path_to("gitalist.conf")'` gitalist.conf -You can then edit this confg, adding a repo_dir path and customising other settings as desired. +You can then edit this configuration, adding a C path and customising +other settings as desired. You can then start the Gitalist demo server by setting C<< GITALIST_CONFIG >>. For example: @@ -162,19 +191,135 @@ to run it in a more production facing environment than using the single threaded server. The recommended deployment method for Gitalist is FastCGI, although Gitalist can also be run -under mod_perl or as pure perl with L. +under L or as pure Perl with L. Assuming that you have installed Gitalist's dependencies into a L, and you are running from a git checkout, adding a trivial FCGI script as C