all repos — cgit @ b9025b5c7872917dbd46f889354036886b46ed1a

a hyperfast web frontend for git written in c

README (view raw)

 1
 2                       cgit - cgi for git
 3
 4
 5This is an attempt to create a fast web interface for the git scm, using a
 6builtin cache to decrease server io-pressure.
 7
 8
 9Installation
10
11Building cgit involves building a proper version of git. How to do this
12depends on how you obtained the cgit sources:
13
14a) If you're working in a cloned cgit repository, you first need to
15initialize and update the git submodule:
16
17  $ git submodule init     # register the git submodule in .git/config
18  $ $EDITOR .git/config    # if you want to specify a different url for git
19  $ git submodule update   # clone/fetch and checkout correct git version
20
21b) If you're building from a cgit tarball, you can download a proper git
22version like this:
23
24  $ make get-git
25
26
27When either a) or b) has been performed, you can build and install cgit like
28this:
29
30  $ make
31  $ sudo make install
32
33This will install cgit.cgi and cgit.css into "/var/www/htdocs/cgit". You can
34configure this location (and a few other things) by providing a "cgit.conf"
35file (see the Makefile for details).
36
37
38Dependencies:
39  -git 1.7.4
40  -zip lib
41  -crypto lib
42  -openssl lib
43
44
45Apache configuration
46
47A new Directory-section must probably be added for cgit, possibly something
48like this:
49
50  <Directory "/var/www/htdocs/cgit/">
51      AllowOverride None
52      Options +ExecCGI
53      Order allow,deny
54      Allow from all
55  </Directory>
56
57
58Runtime configuration
59
60The file /etc/cgitrc is read by cgit before handling a request. In addition
61to runtime parameters, this file also contains a list of the repositories
62displayed by cgit.
63
64A template cgitrc is shipped with the sources, and all parameters and default
65values are documented in this file.
66
67
68The cache
69
70When cgit is invoked it looks for a cachefile matching the request and
71returns it to the client. If no such cachefile exist (or if it has expired),
72the content for the request is written into the proper cachefile before the
73file is returned.
74
75If the cachefile has expired but cgit is unable to obtain a lock for it, the
76stale cachefile is returned to the client. This is done to favour page
77throughput over page freshness.
78
79The generated content contains the complete response to the client, including
80the http-headers "Modified" and "Expires".
81
82
83The missing features
84
85* Submodule links in the directory listing page have a fixed format per
86  repository. This should probably be extended to a generic map between
87  submodule path and url.
88
89* The log-page should have more/better search options (author, committer,
90  pickaxe, paths) and possibly support arbitrary revision specifiers.
91
92* A set of test-scripts is required before cgit-1.0 can be released.
93
94Patches/bugreports/suggestions/comments are always welcome, please feel free
95to contact the author: hjemli@gmail.com