Skip to content

broquaint/Gitalist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NAME
    Gitalist - A modern git web viewer

SYNOPSIS
        perl script/gitalist_server.pl --repo_dir /home/me/code/git

INSTALL
    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.

DESCRIPTION
    Gitalist is a web frontend for git repositories based on gitweb.cgi
    <https://git.wiki.kernel.org/index.php/Gitweb> and backed by Catalyst.

  History
    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.

GETTING GITALIST
    You can install Gitalist from CPAN in the usual way:

        cpan -i Gitalist

    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.

BOOTSTRAPPING
    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.

    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.

INITIAL CONFIGURATION
    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.

  WHEN CHECKING GITALIST OUT OF GIT
    Gitalist from git includes a minimal "gitalist_local.conf", which sets
    the repository 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]$ perl script/gitalist_server.pl
        You can connect to your server at http://localhost:3000

  FOR CPAN INSTALLS
    Gitalist can be supplied with a config file by setting the
    "GITALIST_CONFIG" environment variable to point to a configuration file.

    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.

    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=/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.

RUNNING
    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 <https://perl.apache.org/> 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):

        #!/bin/sh
        exec /home/t0m/public_html/Gitalist/script/gitalist_fastcgi.pl

    This example can be seen live here:

        http://example.gitalist.com

  Plack
    If you would like to run Gitalist under Plack then one need only make
    use of plackup and the ".psgi" found under "scripts/":

        plackup script/gitalist_app.psgi

CONFIGURATION
    The Gitalist config is loaded with Catalyst::Plugin::ConfigLoader and
    the available config options are:

    no_gravatars
        If true don't display gravatars. May be desirable if you are worried
        about leaking repo names via the browser referer headers.

  Model::CollectionOfRepos
    repo_dir
        A directory containing the directories to show.

    repos
        A list of directories containing repositories to show.

    search_recursively
        A boolean indicating whether to always search recursively for
        repositories within "repo_dir".

    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 "gitweb"'s "projects.list".

    export_ok
        If provided every must contain a file of the same name to be
        visible. This is similar to "gitweb"'s functionality.

    class
        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.

    args
        Any additional arguments to be passed into the Model constructor,
        only of use when used in conjunction with "class" (see above).

  paging
    log The number of commits to show in the summary, shortlog and longlog
        views.

  FASTCGI
    Running Gitalist in FastCGI mode requires a webserver with FastCGI
    support (such as apache with mod_fcgi
    <http://www.fastcgi.com/drupal/node/3> or mod_fcgid
    <https://httpd.apache.org/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).

    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 <https://httpd.apache.org/docs/mod/mod_rewrite.html> or
    equivalent.

    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).

  Apache config
    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.

    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

CONTRIBUTING
    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.

SUPPORT
    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.

SEE ALSO
    Gitalist::Controller::Root

    Git::Gitalist::Repository

    Catalyst

AUTHORS AND COPYRIGHT
      Catalyst application:
        © 2009 Venda Ltd and Dan Brook <[email protected]>
        © 2009, Tom Doran <[email protected]>
        © 2009, Zac Stevens <[email protected]>

      Original gitweb.cgi from which this was derived:
        © 2005-2006, Kay Sievers <[email protected]>
        © 2005, Christian Gierke

      Model based on http://github.com/rafl/gitweb
        © 2008, Florian Ragwitz

LICENSE
    Licensed under GNU GPL v2