Gitweb

Gitweb is the default web interface that comes with Git.

Gitweb actually supports FCGI natively, so you do not need to wrap it as a CGI script.

Installation

To install gitweb you first have to install git and a webserver. Now, if you want to quickly test it, see the help of git instaweb. Otherwise, if you want a comprehensive setup, keep reading.

For this example we use apache but you can also use nginx, lighttpd or others.

For all the examples below, you need to install the perl-cgi package. (FS#45431)

Configuration

Apache

Create /etc/httpd/conf/extra/gitweb.conf

gitweb.conf
Alias /gitweb "/usr/share/gitweb"
<Directory "/usr/share/gitweb">
    DirectoryIndex gitweb.cgi
    Options ExecCGI
    Require all granted
    <Files gitweb.cgi>
    SetHandler cgi-script
    </Files>
    SetEnv  GITWEB_CONFIG  /etc/gitweb.conf
</Directory>

Add the following line to the end of /etc/httpd/conf/httpd.conf

# gitweb configuration
Include conf/extra/gitweb.conf

If Apache refuses to display gitweb, but prints the plain source code of the perl script instead, it is very likely that has not been loaded by Apache.

In order to resolve this issue, add the following line to /etc/httpd/conf/httpd.conf

LoadModule cgi_module modules/mod_cgi.so

Lighttpd

Add the following to :

server.modules += ( "mod_alias", "mod_cgi", "mod_redirect", "mod_setenv" )
url.redirect += ( "^/gitweb$" => "/gitweb/" )
alias.url += ( "/gitweb/" => "/usr/share/gitweb/" )
$HTTP["url"] =~ "^/gitweb/" {
       setenv.add-environment = (
               "GITWEB_CONFIG" => "/etc/gitweb.conf",
               "PATH" => env.PATH
       )
       cgi.assign = ( ".cgi" => "" )
       server.indexfiles = ( "gitweb.cgi" )
}

You may also need to add ".css" => "text/css" to the line for GitWeb to display properly.

Nginx

Append this location to your nginx configuration (you might want to change the location):

If you follow Nginx#CGI implementation, try replacing include fastcgi_params; with .

Finally, install and start/enable .

Gitweb config

Next we need to make a gitweb configuration file. Open (or create if it does not exist) the file and place this in it:

To enable "blame" view (showing the author of each line in a source file), add the following line:

$feature{'blame'}{'default'} = [1];

Now the the configuration is done, restart your webserver.

Syntax highlighting

To enable syntax highlighting with Gitweb, you have to first install the package:

When highlight has been installed, simply add this line to your :

$feature{'highlight'}{'default'} = [1];

Save the file and highlighting should now be enabled.

Adding repositories

To add a repository go to your repository folder, make your repository like so:

mkdir my_repository.git
git init --bare my_repository.git/
cd my_repository.git/
touch git-daemon-export-ok
echo "Short project's description" > description

Next open the config file and add this:

[gitweb]
owner = Your Name

This will fill in the "Owner" field in gitweb. It is not required.

This assumes that you want to have this repository as "central" repository storage where you push your commits to so the git-daemon-export-ok and --bare are here to have minimal overhead and to allow the git daemon to be used on it.

That is all for making a repository. You can now see it on your http://localhost/gitweb (assuming everything went fine). You do not need to restart apache for new repositories since the gitweb cgi script simply reads your repository folder.

gollark: Yes.
gollark: ++remind 15h implementatoa0sdj
gollark: We should generalize.
gollark: This is a special case and thus bad.
gollark: https://cdn.discordapp.com/attachments/733347369847881838/735972569726976070/tpugobrrr.png#center

See also

This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.