|
Size: 2126
Comment:
|
Size: 2517
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 3: | Line 3: |
| '''CGit''' is a minimal, lightweight web interface for git repositories. It is a CGI script that, if combined with a caching web server, can be run very efficiently at scale. | '''CGit''' is a minimal, lightweight web interface for git repositories. Naturally, the upstream team uses [[https://git.zx2c4.com/cgit/|a CGit instance]] for development of CGit. |
| Line 13: | Line 15: |
| Most [[Linux]] and [[BSD]] distributions offer a `cgit` package. |
|
| Line 17: | Line 21: |
| == Setup == | == Configuration == |
| Line 19: | Line 23: |
| === NGINX with FastCGI === | CGit itself is configured with a `cgitrc(5)` file. |
| Line 21: | Line 25: |
| A basic NGINX configuration would look as: | === FastCGI === CGit is a [[Protocols/CGI|CGI]] program and depends on a FastCGI server. For a simple setup, consider [[NGINX/FastCGI#Spawn-fcgi|NGINX, fcgiwrap, and spawn-fcgi]]. The `nginx(8)` server configuration would look like: |
| Line 26: | Line 37: |
| server_name git.my-domain.com; root /path/to/executable/directory |
server_name git.example.com; root /var/www; try_files $uri @cgit; |
| Line 29: | Line 41: |
| try_files $uri @cgit; | |
| Line 40: | Line 51: |
| Line 42: | Line 52: |
---- |
|
| Line 47: | Line 55: |
| == Configuration == | === HTTP(S) Cloning === |
| Line 49: | Line 57: |
| === Clone URLs === First, enable HTTP cloning in your `cgitrc`. |
Enable HTTP cloning within CGit. |
| Line 57: | Line 63: |
| Second, insert a space-delimited list of URLs to each repository configuration. SSH clone instructions can be included, though be aware-a ''port'' cannot be specified with a ''relative path''. The maximal options are one of `user@ip:port/absolute/path/to/my-repo.git` and `user@ip:relative/path/to/my-repo.git`. | Configure each repository with a space-delimited list of URLs. |
| Line 65: | Line 71: |
| SSH clone instructions can be included, but ports are incompatible with relative paths. In other words, `[email protected]:port/absolute/path/to/repo.git` and `[email protected]:relative/path/to/repo.git` ''are'' valid but `[email protected]:8022relative/path/to/repo.git` is ''not''. |
|
| Line 69: | Line 77: |
| CGit is typically packaged with an official stylesheet used by upstream. The default `cgitrc` file sets the stylesheet using: | CGit is typically packaged with an official stylesheet used by upstream. The default `cgitrc(5)` file sets the stylesheet using: |
| Line 96: | Line 104: |
| ---- == See also == [[https://man.archlinux.org/man/community/cgit/cgitrc.5.en|cgitrc(5)]] |
CGit
CGit is a minimal, lightweight web interface for git repositories.
Naturally, the upstream team uses a CGit instance for development of CGit.
Contents
Installation
Most Linux and BSD distributions offer a cgit package.
Configuration
CGit itself is configured with a cgitrc(5) file.
FastCGI
CGit is a CGI program and depends on a FastCGI server.
For a simple setup, consider NGINX, fcgiwrap, and spawn-fcgi. The nginx(8) server configuration would look like:
server {
listen 80;
server_name git.example.com;
root /var/www;
try_files $uri @cgit;
location @cgit {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/cgit.cgi;
fastcgi_param PATH_INFO $uri;
fastcgi_param QUERY_STRING $args;
fastcgi_param HTTP_HOST $server_name;
fastcgi_pass unix:/run/fcgiwrap.sock;
}
}
HTTP(S) Cloning
Enable HTTP cloning within CGit.
enable-http-clone=1
Configure each repository with a space-delimited list of URLs.
repo.name=my-repo repo.path=my-repo.git repo.clone-url=https://git.my-server.com/my-repo [email protected]/my-repo.git
SSH clone instructions can be included, but ports are incompatible with relative paths. In other words, [email protected]:port/absolute/path/to/repo.git and [email protected]:relative/path/to/repo.git are valid but [email protected]:8022relative/path/to/repo.git is not.
Custom CSS
CGit is typically packaged with an official stylesheet used by upstream. The default cgitrc(5) file sets the stylesheet using:
css=/cgit.css
Note that this is a URL, not a filesystem path.
To include an HTML file into the head of the generated web page, use the head-include option in cgitrc.
head-include=/path/to/my/head.html
Custom Headers and Footers
To include an HTML file into the body of the generated web page, use one of the header or footer options in cgitrc.
header=/path/to/my/header.html footer=/path/to/my/footer.html
This is most commonly used to insert a logo, contact and copyright information, or domain navigation.
