X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FGitalist.pm;h=276e386c2ea6ca34abd7e49eedc5de9f3e472cce;hb=1e19ad67eb3b16fa57999f8160d20c98c67b857f;hp=85068360919e09146432a2eead1291979f9472e8;hpb=319537bfa8c17c2310a1f3b79a55adbeef5c539d;p=catagits%2FGitalist.git diff --git a/lib/Gitalist.pm b/lib/Gitalist.pm index 8506836..276e386 100644 --- a/lib/Gitalist.pm +++ b/lib/Gitalist.pm @@ -14,21 +14,28 @@ use Catalyst qw/ SubRequest /; -our $VERSION = '0.000005'; +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,46 +46,58 @@ around uri_for => sub { return $uri; }; +sub uri_with { + my ($self, @args) = @_; + my $uri = $self->request->uri_with(@args); + # Wow this awful. + $uri =~ s[/fragment\b][]; + 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 @@ -91,11 +110,35 @@ Alternatively, you can get Gitalist using git. The canonical repository for the master branch is: - it://git.shadowcat.co.uk/catagits/Gitalist.git + 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 @@ -110,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 @@ -124,21 +167,22 @@ by running: cp `perl -Ilib -MGitalist -e'print Gitalist->path_to("gitalist.conf")'` gitalist.conf -You can then edit this confg, adding a repos_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: GITALIST_CONFIG=/usr/local/etc/gitalist.conf gitalist_server.pl Alternatively, if you only want to set a repository directory and are otherwise happy with -the default configuration, then you can set the C<< GITALIST_REPOS_DIR >> environment -variable, or pass the C<< --repos_dir >> flag to any of the scripts. +the default configuration, then you can set the C<< GITALIST_REPO_DIR >> environment +variable, or pass the C<< --repo_dir >> flag to any of the scripts. - GITALIST_REPOS_DIR=/home/myuser/code/git gitalist_server.pl - gitalist_server.pl --repos_dir home/myuser/code/git + GITALIST_REPO_DIR=/home/myuser/code/git gitalist_server.pl + gitalist_server.pl --repo_dir home/myuser/code/git -The C<< GITALIST_REPOS_DIR >> environment variable will override the repository directory set -in configuration, and will itself be overridden by he C<< --repos_dir >> flag. +The C<< GITALIST_REPO_DIR >> environment variable will override the repository directory set +in configuration, and will itself be overridden by he C<< --repo_dir >> flag. =head1 RUNNING @@ -147,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