Fixed typos picked up by abraxxa.
[catagits/Gitalist.git] / lib / Gitalist.pm
1 package Gitalist;
2 use Moose;
3 BEGIN { require 5.008006; }
4 use Catalyst::Runtime 5.80;
5 use namespace::autoclean;
6
7 extends 'Catalyst';
8
9 use Catalyst qw/
10                 ConfigLoader
11                 Unicode::Encoding
12                 Static::Simple
13                 StackTrace
14                 SubRequest
15 /;
16
17 our $VERSION = '0.000005';
18 $VERSION = eval $VERSION;
19
20 __PACKAGE__->config(
21     name => 'Gitalist',
22     default_view => 'Default',
23     default_model => 'CollectionOfRepos',
24 );
25
26 __PACKAGE__->setup();
27
28 after prepare_path => sub {
29     my ($ctx) = @_;
30     if ($ctx->req->param('a')) {
31         $ctx->request->uri->path('/legacy' . $ctx->request->uri->path);
32     }
33 };
34
35 around uri_for => sub {
36   my ($orig, $c) = (shift, shift);
37   my $uri = $c->$orig(@_);
38   $$uri =~ tr[&][;] if defined $uri;
39   return $uri;
40 };
41
42 1;
43
44 __END__
45
46 =head1 NAME
47
48 Gitalist - A modern git web viewer
49
50 =head1 SYNOPSIS
51
52     script/gitalist_server.pl --repo_dir /home/me/code/git
53
54 =head1 INSTALL
55
56 As Gitalist follows the usual Perl module format the usual approach
57 for installation should work e.g.
58
59   perl Makefile.PL
60   make
61   make test
62   make install
63
64 or
65
66   cpan -i Gitalist
67
68 You can also check gitalist out from git and run it, in this case you'll additionally
69 need the author modules, but no configuration will be needed as it will default to looking
70 for repositories the directory above the checkout.
71
72 =head1 DESCRIPTION
73
74 Gitalist is a web frontend for git repositories based on gitweb.cgi
75 and backed by Catalyst.
76
77 =head2 History
78
79 This project started off as an attempt to port gitweb.cgi to a
80 Catalyst app in a piecemeal fashion. As it turns out, thanks largely
81 to Florian Ragwitz's earlier effort, it was easier to use gitweb.cgi
82 as a template for building a new Catalyst application.
83
84 =head1 GETTING GITALIST
85
86 You can install Gitalist from CPAN in the usual way:
87
88     cpan -i Gitalist
89
90 Alternatively, you can get Gitalist using git.
91
92 The canonical repository for the master branch is:
93
94     git://git.shadowcat.co.uk/catagits/Gitalist.git
95
96 Gitalist is also mirrored to github, and a number of people have active forks
97 with branches and/or new features in the master branch.
98
99 =head1 INITIAL CONFIGURATION
100
101 Gitalist is configured using L<Catalyst::Plugin::Configloader>. The supplied sample
102 configuration is in L<Config::General> format, however it is possible to configure
103 Gitalist using other config file formats (such as YAML) if you prefer.
104
105 =head2 WHEN CHECKING GITALIST OUT OF GIT
106
107 Gitalist from git includes a minimal C<gitalist_local.conf>, which sets the repository
108 directory to one directory higher than the Gitalist repository.
109
110 This means that if you check Gitalist out next to your other git checkouts, then starting
111 the demo server needs no parameters at all:
112
113     Gitalist [master]$ ./script/gitalist_server.pl
114     You can connect to your server at http://localhost:3000
115
116 =head2 FOR CPAN INSTALLS
117
118 Gitalist can be supplied with a config file by setting the C<< GITALIST_CONFIG >>
119 environment variable to point to a configuration file.
120
121 If you install Gitalist from CPAN, a default configuration is installed along with gitalist,
122 which is complete except for a repository directory. You can get a copy of this configuration
123 by running:
124
125   cp `perl -Ilib -MGitalist -e'print Gitalist->path_to("gitalist.conf")'` gitalist.conf
126
127 You can then edit this confg, adding a repos_dir path and customising other settings as desired.
128
129 You can then start the Gitalist demo server by setting C<< GITALIST_CONFIG >>. For example:
130
131     GITALIST_CONFIG=/usr/local/etc/gitalist.conf gitalist_server.pl
132
133 Alternatively, if you only want to set a repository directory and are otherwise happy with
134 the default configuration, then you can set the C<< GITALIST_REPO_DIR >> environment
135 variable, or pass the C<< --repos_dir >> flag to any of the scripts.
136
137     GITALIST_REPO_DIR=/home/myuser/code/git gitalist_server.pl
138     gitalist_server.pl --repos_dir home/myuser/code/git
139
140 The C<< GITALIST_REPO_DIR >> environment variable will override the repository directory set
141 in configuration, and will itself be overridden by he C<< --repos_dir >> flag.
142
143 =head1 RUNNING
144
145 Once you have followed the instructions above to install and configure Gitalist, you may want
146 to run it in a more production facing environment than using the single threaded developement
147 server.
148
149 The recommended deployment method for Gitalist is FastCGI, although Gitalist can also be run
150 under mod_perl or as pure perl with L<Catalyst::Engine::PreFork>.
151
152 Assuming that you have installed Gitalist's dependencies into a L<local::lib>, and you
153 are running from a git checkout, adding a trivial FCGI script as C<script/gitalist.fcgi>
154 (this file is specifically in C<.gitignore> so you can have your own copy):
155
156     #!/bin/sh
157     export PERL5LIB=/home/t0m/public_html/Gitalist/lib:/home/t0m/perl5/lib/perl5:$PERL5LIB
158     exec /home/t0m/public_html/Gitalist/script/gitalist_fastcgi.pl
159
160 This example can be seen live here:
161
162     http://goatse.co.uk/~bobtfish/Gitalist/script/gitalist.fcgi/
163
164 =head1 CONTRIBUTING
165
166 Patches are welcome, please feel free to fork on github and send pull requests, send patches
167 from git format-patch to the bug tracker, or host your own copy of gitalist somewhere and
168 ask us to pull from it.
169
170 =head1 SUPPORT
171
172 Gitalist has an active irc community in C<#gitalist> on irc.perl.org, please feel free to stop
173 by and ask questions, report bugs or installation issues or generally for a chat about where
174 we plan to go with the project.
175
176 =head1 SEE ALSO
177
178 L<Gitalist::Controller::Root>
179
180 L<Gitalist::Git::Repository>
181
182 L<Catalyst>
183
184 =head1 AUTHORS AND COPYRIGHT
185
186   Catalyst application:
187     (C) 2009 Venda Ltd and Dan Brook <broq@cpan.org>
188     (C) 2009, Tom Doran <bobtfish@bobtfish.net>
189     (C) 2009, Zac Stevens <zts@cryptocracy.com>
190
191   Original gitweb.cgi from which this was derived:
192     (C) 2005-2006, Kay Sievers <kay.sievers@vrfy.org>
193     (C) 2005, Christian Gierke
194
195   Model based on http://github.com/rafl/gitweb
196     (C) 2008, Florian Ragwitz
197
198 =head1 LICENSE
199
200 Licensed under GNU GPL v2
201
202 =cut