Gitalist - A modern git web viewer
perl script/gitalist_server.pl --repo_dir /home/me/code/git
As Gitalist follows the usual Perl module format the usual approach for installation should work, e.g.:
perl Makefile.PL make make test make install
or
cpan -i Gitalist
You can also check Gitalist out from its git repository 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.
Gitalist is a web frontend for git repositories based on gitweb.cgi and backed by Catalyst.
This project started off as an attempt to port gitweb.cgi 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 as a template for building a new Catalyst application.
You can install Gitalist from CPAN in the usual way:
Alternatively, you can get Gitalist using git.
The canonical repository for the master branch is:
git://git.shadowcat.co.uk/catagits/Gitalist.git
Gitalist is also mirrored to GitHub at https://github.com/broquaint/Gitalist, and a number of people have active forks with branches and/or new features in the master branch.
As of 0.002001 Gitalist can now be bootstrapped to run out of its own directory by installing its prerequisites locally with the help of local::lib. So instead of installing the prerequisites to the system path with CPAN they are installed under the Gitalist directory.
0.002001
To do this clone Gitalist from the Shadowcat repository mentioned above 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.
NB: The relevant bootstrap scripts aren't available in the CPAN dist as the bootstrap scripts should not be installed.
Gitalist is configured using Catalyst::Plugin::Configloader. The supplied sample configuration is in Config::General format, however it is possible to configure Gitalist using other config file formats (such as YAML) if you prefer.
Gitalist from git includes a minimal gitalist_local.conf, which sets the repository directory to one directory higher than the Gitalist repository.
gitalist_local.conf
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]$ perl script/gitalist_server.pl You can connect to your server at http://localhost:3000
Gitalist can be supplied with a config file by setting the GITALIST_CONFIG environment variable to point to a configuration file.
GITALIST_CONFIG
If you install Gitalist from CPAN, a default configuration is installed along with gitalist, which is complete except for a repository directory. You can get a copy of this configuration by running:
cp `perl -Ilib -MGitalist -e'print Gitalist->path_to("gitalist.conf")'` gitalist.conf
You can then edit this configuration, adding a repo_dir path and customising other settings as desired.
repo_dir
You can then start the Gitalist demo server by setting 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 GITALIST_REPO_DIR environment variable, or pass the --repo_dir flag to any of the scripts.
GITALIST_REPO_DIR
--repo_dir
GITALIST_REPO_DIR=/home/myuser/code/git gitalist_server.pl gitalist_server.pl --repo_dir home/myuser/code/git
The GITALIST_REPO_DIR environment variable will override the repository directory set in configuration, and will itself be overridden by he --repo_dir flag.
Once you have followed the instructions above to install and configure Gitalist, you may want to run it in a more production facing environment than using the single threaded developement server.
The recommended deployment method for Gitalist is FastCGI, although Gitalist can also be run under mod_perl or as pure Perl with Catalyst::Engine::PreFork.
Assuming that you have installed Gitalist's dependencies into a local::lib, and you are running from a git checkout, adding a trivial FCGI script as script/gitalist.fcgi (this file is specifically in .gitignore so you can have your own copy):
script/gitalist.fcgi
.gitignore
#!/bin/sh exec /home/t0m/public_html/Gitalist/script/gitalist_fastcgi.pl
This example can be seen live here:
http://example.gitalist.com
If you would like to run Gitalist under Plack then one need only make use of plackup and the .psgi found under scripts/:
.psgi
scripts/
plackup script/gitalist_app.psgi
The Gitalist config is loaded with Catalyst::Plugin::ConfigLoader and the available config options are:
If true don't display gravatars. May be desirable if you are worried about leaking repo names via the browser referer headers.
A directory containing the directories to show.
A list of directories containing repositories to show.
A boolean indicating whether to always search recursively for repositories within repo_dir.
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 gitweb's projects.list.
gitweb
projects.list
If provided every must contain a file of the same name to be visible. This is similar to gitweb's functionality.
If you want a different way of surfacing repositories you can use your own model (i.e something that composes Gitalist::Git::CollectionOfRepositories) and specify the class name with this config option.
Any additional arguments to be passed into the Model constructor, only of use when used in conjunction with class (see above).
class
The number of commits to show in the summary, shortlog and longlog views.
Running Gitalist in FastCGI mode requires a webserver with FastCGI support (such as apache with mod_fcgi or mod_fcgid). Below is a sample configuration using Apache2 with mod_fcgid in a dynamic configuration (as opposed to static or standalone mode). More information on these modes and their configuration can be found at "Standalone server mode" in Catalyst::Engine::FastCGI.
In Apache's mime.conf, add AddHandler fcgid-script .fcgi (or AddHandler fastcgi-script .fcgi for mod_fcgi).
AddHandler fcgid-script .fcgi
AddHandler fastcgi-script .fcgi
And a quick VirtualHost configuration:
<VirtualHost *:80> ServerName gitalist.yourdomain.com DocumentRoot /path/to/gitalist.fcgi <Directory "/path/to/gitalist.fcgi"> AllowOverride all Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> # Tell Apache this is a FastCGI application <Files gitalist.fcgi> #change the below to fastcgi-script if using mod_fcgi SetHandler fcgid-script </Files> </VirtualHost>
Now to access your Gitalist instance, you'll go to gitalist.yourdomain.com/gitalist.fcgi/ (do not forget that trailing /). If you'd like a different URL, of course, you'll likely want to use mod_rewrite or equivalent.
gitalist.yourdomain.com/gitalist.fcgi/
/
If you find the need to do some troubleshooting, you can call http://url_to_gitalist.fcgi?dump_info=1 and/or add export GITALIST_DEBUG=1 to the top of your gitalist.fcgi file (just below the shebang line).
http://url_to_gitalist.fcgi?dump_info=1
GITALIST_DEBUG=1
Apache will refuse %2F in Gitalist URLs unless configured otherwise. Make sure AllowEncodedSlashes On is in your httpd.conf file in order for this to run smoothly.
%2F
AllowEncodedSlashes On
To have the static content served statically by Apache, instead of Gitalist, then add something like following line to your httpd.conf:
Alias /static /usr/local/share/perl/5.10.1/Gitalist/root/static
Patches are welcome, please feel free to fork on github and send pull requests, send patches from git format-patch to the bug tracker, or host your own copy of gitalist somewhere and ask us to pull from it.
Gitalist has an active irc community in #gitalist on irc.perl.org, please feel free to stop by and ask questions, report bugs or installation issues or generally for a chat about where we plan to go with the project.
#gitalist
Gitalist::Controller::Root
Git::Gitalist::Repository
Catalyst
Catalyst application: © 2009 Venda Ltd and Dan Brook <broq@cpan.org> © 2009, Tom Doran <bobtfish@bobtfish.net> © 2009, Zac Stevens <zts@cryptocracy.com> Original gitweb.cgi from which this was derived: © 2005-2006, Kay Sievers <kay.sievers@vrfy.org> © 2005, Christian Gierke Model based on http://github.com/rafl/gitweb © 2008, Florian Ragwitz
Licensed under GNU GPL v2
To install Gitalist, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Gitalist
CPAN shell
perl -MCPAN -e shell install Gitalist
For more information on module installation, please visit the detailed CPAN module installation guide.