You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
332 lines
15 KiB
332 lines
15 KiB
GIT web Interface (gitweb) Installation |
|
======================================= |
|
|
|
First you have to generate gitweb.cgi from gitweb.perl using |
|
"make gitweb", then "make install-gitweb" appropriate files |
|
(gitweb.cgi, gitweb.js, gitweb.css, git-logo.png and git-favicon.png) |
|
to their destination. For example if git was (or is) installed with |
|
/usr prefix and gitwebdir is /var/www/cgi-bin, you can do |
|
|
|
$ make prefix=/usr gitweb ;# as yourself |
|
# make gitwebdir=/var/www/cgi-bin install-gitweb ;# as root |
|
|
|
Alternatively you can use autoconf generated ./configure script to |
|
set up path to git binaries (via config.mak.autogen), so you can write |
|
instead |
|
|
|
$ make configure ;# as yourself |
|
$ ./configure --prefix=/usr ;# as yourself |
|
$ make gitweb ;# as yourself |
|
# make gitwebdir=/var/www/cgi-bin \ |
|
install-gitweb ;# as root |
|
|
|
The above example assumes that your web server is configured to run |
|
[executable] files in /var/www/cgi-bin/ as server scripts (as CGI |
|
scripts). |
|
|
|
|
|
Requirements |
|
------------ |
|
|
|
- Core git tools |
|
- Perl |
|
- Perl modules: CGI, Encode, Fcntl, File::Find, File::Basename. |
|
- web server |
|
|
|
The following optional Perl modules are required for extra features |
|
- Digest::MD5 - for gravatar support |
|
- CGI::Fast and FCGI - for running gitweb as FastCGI script |
|
- HTML::TagCloud - for fancy tag cloud in project list view |
|
- HTTP::Date or Time::ParseDate - to support If-Modified-Since for feeds |
|
|
|
|
|
Build time configuration |
|
------------------------ |
|
|
|
See also "How to configure gitweb for your local system" section below. |
|
|
|
- There are many configuration variables which affect building of |
|
gitweb.cgi; see "default configuration for gitweb" section in main |
|
(top dir) Makefile, and instructions for building gitweb target. |
|
|
|
One of the most important is where to find the git wrapper binary. Gitweb |
|
tries to find the git wrapper at $(bindir)/git, so you have to set $bindir |
|
when building gitweb.cgi, or $prefix from which $bindir is derived. If |
|
you build and install gitweb together with the rest of the git suite, |
|
there should be no problems. Otherwise, if git was for example |
|
installed from a binary package, you have to set $prefix (or $bindir) |
|
accordingly. |
|
|
|
- Another important issue is where are git repositories you want to make |
|
available to gitweb. By default gitweb searches for repositories under |
|
/pub/git; if you want to have projects somewhere else, like /home/git, |
|
use GITWEB_PROJECTROOT build configuration variable. |
|
|
|
By default all git repositories under projectroot are visible and |
|
available to gitweb. The list of projects is generated by default by |
|
scanning the projectroot directory for git repositories. This can be |
|
changed (configured) as described in "Gitweb repositories" section |
|
below. |
|
|
|
Note that gitweb deals directly with the object database, and does not |
|
need a working directory; the name of the project is the name of its |
|
repository object database, usually projectname.git for bare |
|
repositories. If you want to provide gitweb access to non-bare (live) |
|
repositories, you can make projectname.git a symbolic link under |
|
projectroot linking to projectname/.git (but it is just |
|
a suggestion). |
|
|
|
- You can control where gitweb tries to find its main CSS style file, |
|
its JavaScript file, its favicon and logo with the GITWEB_CSS, GITWEB_JS |
|
GITWEB_FAVICON and GITWEB_LOGO build configuration variables. By default |
|
gitweb tries to find them in the same directory as gitweb.cgi script. |
|
|
|
- You can optionally generate minified versions of gitweb.js and gitweb.css |
|
by defining the JSMIN and CSSMIN build configuration variables. By default |
|
the non-minified versions will be used. NOTE: if you enable this option, |
|
substitute gitweb.min.js and gitweb.min.css for all uses of gitweb.js and |
|
gitweb.css in the help files. |
|
|
|
|
|
How to configure gitweb for your local system |
|
--------------------------------------------- |
|
|
|
You can specify the following configuration variables when building GIT: |
|
|
|
* GIT_BINDIR |
|
Points where to find the git executable. You should set it up to |
|
the place where the git binary was installed (usually /usr/bin) if you |
|
don't install git from sources together with gitweb. [Default: $(bindir)] |
|
* GITWEB_SITENAME |
|
Shown in the title of all generated pages, defaults to the server name |
|
(SERVER_NAME CGI environment variable) if not set. [No default] |
|
* GITWEB_PROJECTROOT |
|
The root directory for all projects shown by gitweb. Must be set |
|
correctly for gitweb to find repositories to display. See also |
|
"Gitweb repositories" in the INSTALL file for gitweb. [Default: /pub/git] |
|
* GITWEB_PROJECT_MAXDEPTH |
|
The filesystem traversing limit for getting the project list; the number |
|
is taken as depth relative to the projectroot. It is used when |
|
GITWEB_LIST is a directory (or is not set; then project root is used). |
|
This is meant to speed up project listing on large work trees by limiting |
|
search depth. [Default: 2007] |
|
* GITWEB_LIST |
|
Points to a directory to scan for projects (defaults to project root |
|
if not set / if empty) or to a file with explicit listing of projects |
|
(together with projects' ownership). See "Generating projects list |
|
using gitweb" in INSTALL file for gitweb to find out how to generate |
|
such file from scan of a directory. [No default, which means use root |
|
directory for projects] |
|
* GITWEB_EXPORT_OK |
|
Show repository only if this file exists (in repository). Only |
|
effective if this variable evaluates to true. [No default / Not set] |
|
* GITWEB_STRICT_EXPORT |
|
Only allow viewing of repositories also shown on the overview page. |
|
This for example makes GITWEB_EXPORT_OK to decide if repository is |
|
available and not only if it is shown. If GITWEB_LIST points to |
|
file with list of project, only those repositories listed would be |
|
available for gitweb. [No default] |
|
* GITWEB_HOMETEXT |
|
Points to an .html file which is included on the gitweb project |
|
overview page ('projects_list' view), if it exists. Relative to |
|
gitweb.cgi script. [Default: indextext.html] |
|
* GITWEB_SITE_HTML_HEAD_STRING |
|
html snippet to include in the <head> section of each page. [No default] |
|
* GITWEB_SITE_HEADER |
|
Filename of html text to include at top of each page. Relative to |
|
gitweb.cgi script. [No default] |
|
* GITWEB_SITE_FOOTER |
|
Filename of html text to include at bottom of each page. Relative to |
|
gitweb.cgi script. [No default] |
|
* GITWEB_HOME_LINK_STR |
|
String of the home link on top of all pages, leading to $home_link |
|
(usually main gitweb page, which means projects list). Used as first |
|
part of gitweb view "breadcrumb trail": <home> / <project> / <view>. |
|
[Default: projects] |
|
* GITWEB_SITENAME |
|
Name of your site or organization to appear in page titles. Set it |
|
to something descriptive for clearer bookmarks etc. If not set |
|
(if empty) gitweb uses "$SERVER_NAME Git", or "Untitled Git" if |
|
SERVER_NAME CGI environment variable is not set (e.g. if running |
|
gitweb as standalone script). [No default] |
|
* GITWEB_BASE_URL |
|
Git base URLs used for URL to where fetch project from, i.e. full |
|
URL is "$git_base_url/$project". Shown on projects summary page. |
|
Repository URL for project can be also configured per repository; this |
|
takes precedence over URLs composed from base URL and a project name. |
|
Note that you can setup multiple base URLs (for example one for |
|
git:// protocol access, another for http:// access) from the gitweb |
|
config file. [No default] |
|
* GITWEB_CSS |
|
Points to the location where you put gitweb.css on your web server |
|
(or to be more generic, the URI of gitweb stylesheet). Relative to the |
|
base URI of gitweb. Note that you can setup multiple stylesheets from |
|
the gitweb config file. [Default: static/gitweb.css (or |
|
static/gitweb.min.css if the CSSMIN variable is defined / CSS minifier |
|
is used)] |
|
* GITWEB_JS |
|
Points to the location where you put gitweb.js on your web server |
|
(or to be more generic URI of JavaScript code used by gitweb). |
|
Relative to base URI of gitweb. [Default: static/gitweb.js (or |
|
static/gitweb.min.js if JSMIN build variable is defined / JavaScript |
|
minifier is used)] |
|
* CSSMIN, JSMIN |
|
Invocation of a CSS minifier or a JavaScript minifier, respectively, |
|
working as a filter (source on standard input, minified result on |
|
standard output). If set, it is used to generate a minified version of |
|
'static/gitweb.css' or 'static/gitweb.js', respectively. *Note* that |
|
minified files would have *.min.css and *.min.js extension, which is |
|
important if you also set GITWEB_CSS and/or GITWEB_JS. [No default] |
|
* GITWEB_LOGO |
|
Points to the location where you put git-logo.png on your web server |
|
(or to be more generic URI of logo, 72x27 size, displayed in top right |
|
corner of each gitweb page, and used as logo for Atom feed). Relative |
|
to base URI of gitweb. [Default: static/git-logo.png] |
|
* GITWEB_FAVICON |
|
Points to the location where you put git-favicon.png on your web server |
|
(or to be more generic URI of favicon, assumed to be image/png type; |
|
web browsers that support favicons (website icons) may display them |
|
in the browser's URL bar and next to site name in bookmarks). Relative |
|
to base URI of gitweb. [Default: static/git-favicon.png] |
|
* GITWEB_CONFIG |
|
This Perl file will be loaded using 'do' and can be used to override any |
|
of the options above as well as some other options -- see the "Runtime |
|
gitweb configuration" section below, and top of 'gitweb.cgi' for their |
|
full list and description. If the environment variable GITWEB_CONFIG |
|
is set when gitweb.cgi is executed, then the file specified in the |
|
environment variable will be loaded instead of the file specified |
|
when gitweb.cgi was created. [Default: gitweb_config.perl] |
|
* GITWEB_CONFIG_SYSTEM |
|
This Perl file will be loaded using 'do' as a fallback if GITWEB_CONFIG |
|
does not exist. If the environment variable GITWEB_CONFIG_SYSTEM is set |
|
when gitweb.cgi is executed, then the file specified in the environment |
|
variable will be loaded instead of the file specified when gitweb.cgi was |
|
created. [Default: /etc/gitweb.conf] |
|
* HIGHLIGHT_BIN |
|
Path to the highlight executable to use (must be the one from |
|
http://www.andre-simon.de due to assumptions about parameters and output). |
|
Useful if highlight is not installed on your webserver's PATH. |
|
[Default: highlight] |
|
|
|
Build example |
|
~~~~~~~~~~~~~ |
|
|
|
- To install gitweb to /var/www/cgi-bin/gitweb/, when git wrapper |
|
is installed at /usr/local/bin/git, the repositories (projects) |
|
we want to display are under /home/local/scm, and you do not use |
|
minifiers, you can do |
|
|
|
make GITWEB_PROJECTROOT="/home/local/scm" \ |
|
GITWEB_JS="gitweb/static/gitweb.js" \ |
|
GITWEB_CSS="gitweb/static/gitweb.css" \ |
|
GITWEB_LOGO="gitweb/static/git-logo.png" \ |
|
GITWEB_FAVICON="gitweb/static/git-favicon.png" \ |
|
bindir=/usr/local/bin \ |
|
gitweb |
|
|
|
make gitwebdir=/var/www/cgi-bin/gitweb install-gitweb |
|
|
|
|
|
Gitweb config file |
|
------------------ |
|
|
|
See also "Runtime gitweb configuration" section in README file |
|
for gitweb (in gitweb/README), and gitweb.conf(5) manpage. |
|
|
|
- You can configure gitweb further using the per-instance gitweb configuration file; |
|
by default this is a file named gitweb_config.perl in the same place as |
|
gitweb.cgi script. You can control the default place for the config file |
|
using the GITWEB_CONFIG build configuration variable, and you can set it |
|
using the GITWEB_CONFIG environment variable. If this file does not |
|
exist, gitweb looks for a system-wide configuration file, normally |
|
/etc/gitweb.conf. You can change the default using the |
|
GITWEB_CONFIG_SYSTEM build configuration variable, and override it |
|
through the GITWEB_CONFIG_SYSTEM environment variable. |
|
|
|
Note that if per-instance configuration file exists, then system-wide |
|
configuration is _not used at all_. This is quite untypical and suprising |
|
behavior. On the other hand changing current behavior would break backwards |
|
compatibility and can lead to unexpected changes in gitweb behavior. |
|
Therefore gitweb also looks for common system-wide configuration file, |
|
normally /etc/gitweb-common.conf (set during build time using build time |
|
configuration variable GITWEB_CONFIG_COMMON, set it at runtime using |
|
environment variable with the same name). Settings from per-instance or |
|
system-wide configuration file override those from common system-wide |
|
configuration file. |
|
|
|
- The gitweb config file is a fragment of perl code. You can set variables |
|
using "our $variable = value"; text from "#" character until the end |
|
of a line is ignored. See perlsyn(1) for details. |
|
|
|
See the top of gitweb.perl file for examples of customizable options. |
|
|
|
Config file example |
|
~~~~~~~~~~~~~~~~~~~ |
|
|
|
To enable blame, pickaxe search, and snapshot support, while allowing |
|
individual projects to turn them off, put the following in your |
|
GITWEB_CONFIG file: |
|
|
|
$feature{'blame'}{'default'} = [1]; |
|
$feature{'blame'}{'override'} = 1; |
|
|
|
$feature{'pickaxe'}{'default'} = [1]; |
|
$feature{'pickaxe'}{'override'} = 1; |
|
|
|
$feature{'snapshot'}{'default'} = ['zip', 'tgz']; |
|
$feature{'snapshot'}{'override'} = 1; |
|
|
|
If you allow overriding for the snapshot feature, you can specify which |
|
snapshot formats are globally disabled. You can also add any command line |
|
options you want (such as setting the compression level). For instance, |
|
you can disable Zip compressed snapshots and set GZip to run at level 6 by |
|
adding the following lines to your $GITWEB_CONFIG: |
|
|
|
$known_snapshot_formats{'zip'}{'disabled'} = 1; |
|
$known_snapshot_formats{'tgz'}{'compressor'} = ['gzip','-6']; |
|
|
|
|
|
Gitweb repositories |
|
------------------- |
|
|
|
By default gitweb shows all git repositories under single common repository |
|
root on a local filesystem; see description of GITWEB_PROJECTROOT build-time |
|
configuration variable above (and also of GITWEB_LIST). |
|
|
|
More advanced usage, like limiting access or visibility of repositories and |
|
managing multiple roots are described on gitweb manpage. |
|
|
|
|
|
Example web server configuration |
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
|
|
See also "Webserver configuration" and "Advanced web server setup" sections |
|
in gitweb(1) manpage. |
|
|
|
|
|
- Apache2, gitweb installed as CGI script, |
|
under /var/www/cgi-bin/ |
|
|
|
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" |
|
|
|
<Directory "/var/www/cgi-bin"> |
|
Options Indexes FollowSymlinks ExecCGI |
|
AllowOverride None |
|
Order allow,deny |
|
Allow from all |
|
</Directory> |
|
|
|
- Apache2, gitweb installed as mod_perl legacy script, |
|
under /var/www/perl/ |
|
|
|
Alias /perl "/var/www/perl" |
|
|
|
<Directory "/var/www/perl"> |
|
SetHandler perl-script |
|
PerlResponseHandler ModPerl::Registry |
|
PerlOptions +ParseHeaders |
|
Options Indexes FollowSymlinks +ExecCGI |
|
AllowOverride None |
|
Order allow,deny |
|
Allow from all |
|
</Directory>
|
|
|