329 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			329 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
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 5.8
 | 
						|
 - Perl modules: CGI, Encode, Fcntl, File::Find, File::Basename.
 | 
						|
 - web server
 | 
						|
 | 
						|
The following optional Perl modules are required for extra features
 | 
						|
 - 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 the GITWEB_CONFIG_SYSTEM system-wide configuration file is
 | 
						|
  only used for instances that lack per-instance configuration file.
 | 
						|
  You can use GITWEB_CONFIG_COMMON common system-wide configuration
 | 
						|
  file (normally /etc/gitweb-common.conf) to keep common default
 | 
						|
  settings that apply to all instances.  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>
 |