X-Git-Url: https://git.cameronkatri.com/cgit.git/blobdiff_plain/dcef257d4fdbb2e0ff645bf0524cfca652e65ff0..7f08e03941c40a56fb1b5b3df62aa819fb2d6554:/README diff --git a/README b/README index 010dd5c..5a7bdf8 100644 --- a/README +++ b/README @@ -2,34 +2,84 @@ cgit - cgi for git -This is an attempt to create a fast web interface for the git scm, using a -frontside cache to decrease server io-pressure. +This is an attempt to create a fast web interface for the git scm, using a +builtin cache to decrease server io-pressure. -When cgit is invoked, it looks for a cached page matching the request. If no -such cachefile exist (or it has expired), it is (re)generated. Finally, the -cachefile is returned to the client. -If the cachefile has expired, but cgit is unable to lock the cachefile, the -client will get the stale cachefile after all. This is done to favour page +Installation + +Building cgit involves building a proper version of git. How to do this +depends on how you obtained the cgit sources: + +a) If you're working in a cloned cgit repository, you first need to +initialize and update the git submodule: + + $ git submodule init # register the git submodule in .git/config + $ $EDITOR .git/config # if you want to specify a different url for git + $ git submodule update # clone/fetch and checkout correct git version + +b) If you're building from a cgit tarball, you can download a proper git +version like this: + + $ make get-git + + +When either a) or b) has been performed, you can build and install cgit like +this: + + $ make + $ sudo make install + +This will install cgit.cgi and cgit.css into "/var/www/htdocs/cgit". You can +configure this location (and a few other things) by providing a "cgit.conf" +file (see the Makefile for details). + + +Dependencies: + -git 1.7.4 + -zip lib + -crypto lib + -openssl lib + + +Apache configuration + +A new Directory-section must probably be added for cgit, possibly something +like this: + + + AllowOverride None + Options +ExecCGI + Order allow,deny + Allow from all + + + +Runtime configuration + +The file /etc/cgitrc is read by cgit before handling a request. In addition +to runtime parameters, this file may also contain a list of repositories +displayed by cgit (see cgitrc.5.txt for further details). + + +The cache + +When cgit is invoked it looks for a cachefile matching the request and +returns it to the client. If no such cachefile exist (or if it has expired), +the content for the request is written into the proper cachefile before the +file is returned. + +If the cachefile has expired but cgit is unable to obtain a lock for it, the +stale cachefile is returned to the client. This is done to favour page throughput over page freshness. -Also, when a cachefile is generated, a few cache-related http-headers are -created: "Modified" is set to current time(2), while "Expires" is set to -time(2) + * 60 (unless the TTL is negative, in which case it -is read as "60 * 60 * 24 * 365"). This is done to avoid repeated requests for -already visited pages. +The generated content contains the complete response to the client, including +the http-headers "Modified" and "Expires". -The following cache-related options can be set in /etc/cgitrc: - cache-root= root directory for cache files - cache-root-ttl= TTL for the repo listing page - cache-repo-ttl= TTL for repo summary pages - cache-dynamic-ttl= TTL for pages with symbolic references - cache-static-ttl= TTL for pages with sha1 references +Online presence -The cachefiles are split into different directories, based on the requested -repository and page: +* The cgit homepage is hosted by cgit at http://hjemli.net/git/cgit/about - Repo listing: /index.html - Repo summary: //index.html - Repo subpage: ///.html +* Patches, bugreports, discussions and support should go to the cgit + mailing list: cgit@hjemli.net