git-commit-vandalism/gitweb
Jakub Narebski bfe2191f79 gitweb: SHA-1 in commit log message links to "object" view
Instead of checking if explicit SHA-1 in commit log message is sha1 of
commit and making link to "commit" view, make [fragment of] explicit
SHA-1 in commit log message link to "object" view.  While at it allow
to hyperlink also shortened SHA-1, from 8 characters up to full SHA-1,
instead of requiring full 40 characters of SHA-1.

This makes the following changes:

 * SHA-1 of objects which no longer exists, for example in commit
   cherry-picked from no longer existing temporary branch, or revert
   of commit in rebased branch, are no longer marked as such by not
   being made into hyperlink (and not having default hyperlink view:
   being underlined among others).  On the other hand it makes gitweb
   to not write error messages when object is not found to web serwer
   log; it also moves cost of getting type and SHA-1 validation to
   when link is clicked, and not only viewed.

 * SHA-1 of other objects: blobs, trees, tags are also hyperlinked
   and lead to appropriate view (although in the case of tags it is
   more natural to just use tag name).

 * You can put shortened SHA-1 of commit in the commit message, and it
   would be hyperlinked; it would be checked on clicking if abbrev is
   unique.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-12-12 00:55:26 -08:00
..
test Merge git://git.kernel.org/pub/scm/git/gitweb 2006-06-10 11:20:59 -07:00
git-favicon.png gitweb: Add GIT favicon, assuming image/png type 2006-09-04 15:33:04 -07:00
git-logo.png gitweb: use out-of-line GIT logo. 2006-08-01 15:55:19 -07:00
gitweb.css gitweb: New improved formatting of chunk header in diff 2006-11-21 14:35:40 -08:00
gitweb.perl gitweb: SHA-1 in commit log message links to "object" view 2006-12-12 00:55:26 -08:00
README Merge branch 'mw/pathinfo' 2006-10-18 22:09:11 -07:00

GIT web Interface
=================

The one working on:
  http://www.kernel.org/git/

From the git version 1.4.0 gitweb is bundled with git.


How to configure gitweb for your local system
---------------------------------------------

You can specify the following configuration variables when building GIT:
 * GITWEB_SITENAME
   Shown in the title of all generated pages, defaults to the servers name.
 * GITWEB_PROJECTROOT
   The root directory for all projects shown by gitweb.
 * GITWEB_LIST
   points to a directory to scan for projects (defaults to project root)
   or to a file for explicit listing of projects.
 * GITWEB_HOMETEXT
   points to an .html file which is included on the gitweb project
   overview page.
 * GITWEB_CSS
   Points to the location where you put gitweb.css on your web server.
 * GITWEB_LOGO
   Points to the location where you put git-logo.png on your web server.
 * GITWEB_CONFIG
   This file will be loaded using 'require' and can be used to override any
   of the options above as well as some other options - see the top of
   'gitweb.cgi' for their full list and description.  If the environment
   $GITWEB_CONFIG is set when gitweb.cgi is executed the file in the
   environment variable will be loaded instead of the file
   specified when gitweb.cgi was created.


Runtime gitweb configuration
----------------------------

You can adjust gitweb behaviour using the file specified in `GITWEB_CONFIG`
(defaults to 'gitweb_config.perl' in the same directory as the CGI).
See the top of 'gitweb.cgi' for the list of variables and some description.
The most notable thing that is not configurable at compile time are the
optional features, stored in the '%features' variable. You can find further
description on how to reconfigure the default features setting in your
`GITWEB_CONFIG` or per-project in `project.git/config` inside 'gitweb.cgi'.


Webserver configuration
-----------------------

If you want to have one URL for both gitweb and your http://
repositories, you can configure apache like this:

<VirtualHost www:80>
    ServerName git.domain.org
    DocumentRoot /pub/git
    RewriteEngine on
    RewriteRule ^/(.*\.git/(?!/?(info|objects|refs)).*)?$ /cgi-bin/gitweb.cgi%{REQUEST_URI}  [L,PT]
    SetEnv	GITWEB_CONFIG	/etc/gitweb.conf
</VirtualHost>

The above configuration expects your public repositories to live under
/pub/git and will serve them as http://git.domain.org/dir-under-pub-git,
both as cloneable GIT URL and as browseable gitweb interface.
If you then start your git-daemon with --base-path=/pub/git --export-all
then you can even use the git:// URL with exactly the same path.

Setting the environment variable GITWEB_CONFIG will tell gitweb to use
the named file (i.e. in this example /etc/gitweb.conf) as a
configuration for gitweb.  Perl variables defined in here will
override the defaults given at the head of the gitweb.perl (or
gitweb.cgi).  Look at the comments in that file for information on
which variables and what they mean.


Originally written by:
  Kay Sievers <kay.sievers@vrfy.org>

Any comment/question/concern to:
  Git mailing list <git@vger.kernel.org>