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