X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FGitalist.pm;h=7991e69a6c540289cf5c2c9689611471349fdc68;hb=b1d3c94f8221df682c0046e31e3bed45ca375fde;hp=6c1a581df7d170de44b0c2a07ea867c769234838;hpb=3a7cd273ccfed9de7a069c3d26fbc0f684594257;p=catagits%2FGitalist.git diff --git a/lib/Gitalist.pm b/lib/Gitalist.pm index 6c1a581..7991e69 100644 --- a/lib/Gitalist.pm +++ b/lib/Gitalist.pm @@ -1,7 +1,7 @@ package Gitalist; use Moose; BEGIN { require 5.008006; } -use Catalyst::Runtime 5.80; +use Catalyst::Runtime 5.90006; use namespace::autoclean; extends 'Catalyst'; @@ -14,7 +14,7 @@ use Catalyst qw/ SubRequest /; -our $VERSION = '0.002007'; +our $VERSION = '0.003006'; $VERSION = eval $VERSION; __PACKAGE__->config( @@ -29,8 +29,13 @@ __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); } }; @@ -41,19 +46,12 @@ 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; @@ -206,6 +204,84 @@ This example can be seen live here: http://example.gitalist.com +=head2 Plack + +If you would like to run Gitalist under L then one need only +make use of L and the +C<.psgi> found under C: + + plackup script/gitalist_app.psgi + +=head1 CONFIGURATION + +The Gitalist config is loaded with L +and the available config options are: + +=over + +=item no_gravatars + +If true don't display gravatars. May be desirable if you are worried about +leaking repo names via the browser referer headers. + +=back + +=head2 Model::CollectionOfRepos + +=over + +=item repo_dir + +A directory containing the directories to show. + +=item repos + +A list of directories containing repositories to show. + +=item search_recursively + +A boolean indicating whether to always search recursively for +repositories within C. + +=item whitelist + +Path a file containing a list of repositories that can be shown. Each +line in the file will represent the name of a repo to show e.g + + Gitalist + some-bare-repo.git + +This is compatible with C's C. + +=item export_ok + +If provided every must contain a file of the same name to be +visible. This is similar to C's functionality. + +=item class + +If you want a different way of surfacing repositories you can use your +own model (i.e something that composes +L) and specify the class name with +this config option. + +=item args + +Any additional arguments to be passed into the Model constructor, only +of use when used in conjunction with C (see above). + +=back + +=head2 paging + +=over + +=item log + +The number of commits to show in the summary, shortlog and longlog views. + +=back + =head2 FASTCGI Running Gitalist in FastCGI mode requires a webserver with FastCGI @@ -246,10 +322,16 @@ If you find the need to do some troubleshooting, you can call C and/or add export C to the top of your F file (just below the shebang line). -Also, note that Apache will refuse C<%2F> in Gitalist URLs -unless configured otherwise. Make sure C -is in your F file in order for this to run smoothly. +=head2 Apache config + +Apache will refuse C<%2F> in Gitalist URLs unless configured otherwise. Make +sure C is in your F file in order for +this to run smoothly. + +To have the static content served statically by Apache, instead of +Gitalist, then add something like following line to your F: + Alias /static /usr/local/share/perl/5.10.1/Gitalist/root/static =head1 CONTRIBUTING