git-commit-vandalism/gitweb
Jakub Narebski cd90e75ff4 gitweb: Even more support for PATH_INFO based URLs
Now the following types of path based URLs are supported:

* project              overview (summary) page of project
* project/branch       shortlog of branch
* project/branch:file  file in branch, blob_plain view
* project/branch:dir/  directory listing of dir in branch, tree view

The following shortcuts works (see explanation below):

* project/branch:      directory listing of branch, main tree view
* project/:file        file in HEAD (raw)
* project/:dir/        directory listing of dir in HEAD
* project/:            directory listing of project's HEAD

We use ':' as separator between branch (ref) name and file name
(pathname) because valid branch (ref) name cannot have ':' inside.
This limit applies to branch name only. This allow for hierarchical
branches e.g. topic branch 'topic/subtopic', separate remotes
tracking branches e.g. 'refs/remotes/origin/HEAD', and discriminate
between head (branch) and tag with the same name.

Empty branch should be interpreted as HEAD.

If pathname (the part after ':') ends with '/', we assume that pathname
is name of directory, and we want to show contents of said directory
using "tree" view. If pathname is empty, it is equivalent to '/' (top
directory).

If pathname (the part after ':') does not end with '/', we assume that
pathname is name of file, and we show contents of said file using
"blob_plain" view.

Pathname is stripped of leading '/', so we can use ':/' to separate
branch from pathname. The rationale behind support for PATH_INFO based
URLs was to support project web pages for small projects: just create
an html branch and then use an URL like
  http://nowhere.com/gitweb.cgi/project.git/html:/index.html
The ':/' syntax allow for working links between .html files served
in such way, e.g. <a href="main.html"> link inside "index.html"
would get
  http://nowhere.com/gitweb.cgi/project.git/html:/main.html.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-09-20 09:49:31 -07: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: Add author information to commitdiff view 2006-08-28 16:21:34 -07:00
gitweb.perl gitweb: Even more support for PATH_INFO based URLs 2006-09-20 09:49:31 -07:00
README gitweb: require $ENV{'GITWEB_CONFIG'} 2006-08-02 13:56:34 -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'.  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.

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

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