summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--Makefile64
-rw-r--r--cgit.css16
-rw-r--r--cgitrc.5.txt10
3 files changed, 77 insertions, 13 deletions
diff --git a/Makefile b/Makefile
index be1d796..fe4b10e 100644
--- a/Makefile
+++ b/Makefile
@@ -1,193 +1,243 @@
1CGIT_VERSION = v0.8.3.4 1CGIT_VERSION = v0.8.3.4
2CGIT_SCRIPT_NAME = cgit.cgi 2CGIT_SCRIPT_NAME = cgit.cgi
3CGIT_SCRIPT_PATH = /var/www/htdocs/cgit 3CGIT_SCRIPT_PATH = /var/www/htdocs/cgit
4CGIT_DATA_PATH = $(CGIT_SCRIPT_PATH) 4CGIT_DATA_PATH = $(CGIT_SCRIPT_PATH)
5CGIT_CONFIG = /etc/cgitrc 5CGIT_CONFIG = /etc/cgitrc
6CACHE_ROOT = /var/cache/cgit 6CACHE_ROOT = /var/cache/cgit
7prefix = /usr
8libdir = $(prefix)/lib
9filterdir = $(libdir)/cgit/filters
10docdir = $(prefix)/share/doc/cgit
11htmldir = $(docdir)
12pdfdir = $(docdir)
13mandir = $(prefix)/share/man
7SHA1_HEADER = <openssl/sha.h> 14SHA1_HEADER = <openssl/sha.h>
8GIT_VER = 1.7.3 15GIT_VER = 1.7.3
9GIT_URL = http://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.bz2 16GIT_URL = http://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.bz2
10INSTALL = install 17INSTALL = install
18MAN5_TXT = $(wildcard *.5.txt)
19MAN_TXT = $(MAN5_TXT)
20DOC_MAN5 = $(patsubst %.txt,%,$(MAN5_TXT))
21DOC_HTML = $(patsubst %.txt,%.html,$(MAN_TXT))
22DOC_PDF = $(patsubst %.txt,%.pdf,$(MAN_TXT))
11 23
12# Define NO_STRCASESTR if you don't have strcasestr. 24# Define NO_STRCASESTR if you don't have strcasestr.
13# 25#
14# Define NO_OPENSSL to disable linking with OpenSSL and use bundled SHA1 26# Define NO_OPENSSL to disable linking with OpenSSL and use bundled SHA1
15# implementation (slower). 27# implementation (slower).
16# 28#
17# Define NEEDS_LIBICONV if linking with libc is not enough (eg. Darwin). 29# Define NEEDS_LIBICONV if linking with libc is not enough (eg. Darwin).
18# 30#
19# Define NO_C99_FORMAT if your formatted IO functions (printf/scanf et.al.) 31# Define NO_C99_FORMAT if your formatted IO functions (printf/scanf et.al.)
20# do not support the 'size specifiers' introduced by C99, namely ll, hh, 32# do not support the 'size specifiers' introduced by C99, namely ll, hh,
21# j, z, t. (representing long long int, char, intmax_t, size_t, ptrdiff_t). 33# j, z, t. (representing long long int, char, intmax_t, size_t, ptrdiff_t).
22# some C compilers supported these specifiers prior to C99 as an extension. 34# some C compilers supported these specifiers prior to C99 as an extension.
23# 35#
24 36
25#-include config.mak 37#-include config.mak
26 38
27# 39#
28# Platform specific tweaks 40# Platform specific tweaks
29# 41#
30 42
31uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not') 43uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
32uname_O := $(shell sh -c 'uname -o 2>/dev/null || echo not') 44uname_O := $(shell sh -c 'uname -o 2>/dev/null || echo not')
33uname_R := $(shell sh -c 'uname -r 2>/dev/null || echo not') 45uname_R := $(shell sh -c 'uname -r 2>/dev/null || echo not')
34 46
35ifeq ($(uname_O),Cygwin) 47ifeq ($(uname_O),Cygwin)
36 NO_STRCASESTR = YesPlease 48 NO_STRCASESTR = YesPlease
37 NEEDS_LIBICONV = YesPlease 49 NEEDS_LIBICONV = YesPlease
38endif 50endif
39 51
40# 52#
41# Let the user override the above settings. 53# Let the user override the above settings.
42# 54#
43-include cgit.conf 55-include cgit.conf
44 56
45# 57#
46# Define a way to invoke make in subdirs quietly, shamelessly ripped 58# Define a way to invoke make in subdirs quietly, shamelessly ripped
47# from git.git 59# from git.git
48# 60#
49QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir 61QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir
50QUIET_SUBDIR1 = 62QUIET_SUBDIR1 =
51 63
52ifneq ($(findstring $(MAKEFLAGS),w),w) 64ifneq ($(findstring $(MAKEFLAGS),w),w)
53PRINT_DIR = --no-print-directory 65PRINT_DIR = --no-print-directory
54else # "make -w" 66else # "make -w"
55NO_SUBDIR = : 67NO_SUBDIR = :
56endif 68endif
57 69
58ifndef V 70ifndef V
59 QUIET_CC = @echo ' ' CC $@; 71 QUIET_CC = @echo ' ' CC $@;
60 QUIET_MM = @echo ' ' MM $@; 72 QUIET_MM = @echo ' ' MM $@;
61 QUIET_SUBDIR0 = +@subdir= 73 QUIET_SUBDIR0 = +@subdir=
62 QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \ 74 QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \
63 $(MAKE) $(PRINT_DIR) -C $$subdir 75 $(MAKE) $(PRINT_DIR) -C $$subdir
64endif 76endif
65 77
66# 78#
67# Define a pattern rule for automatic dependency building 79# Define a pattern rule for automatic dependency building
68# 80#
69%.d: %.c 81%.d: %.c
70 $(QUIET_MM)$(CC) $(CFLAGS) -MM -MP $< | sed -e 's/\($*\)\.o:/\1.o $@:/g' >$@ 82 $(QUIET_MM)$(CC) $(CFLAGS) -MM -MP $< | sed -e 's/\($*\)\.o:/\1.o $@:/g' >$@
71 83
72# 84#
73# Define a pattern rule for silent object building 85# Define a pattern rule for silent object building
74# 86#
75%.o: %.c 87%.o: %.c
76 $(QUIET_CC)$(CC) -o $*.o -c $(CFLAGS) $< 88 $(QUIET_CC)$(CC) -o $*.o -c $(CFLAGS) $<
77 89
78 90
79EXTLIBS = git/libgit.a git/xdiff/lib.a -lz -lpthread 91EXTLIBS = git/libgit.a git/xdiff/lib.a -lz -lpthread
80OBJECTS = 92OBJECTS =
81OBJECTS += cache.o 93OBJECTS += cache.o
82OBJECTS += cgit.o 94OBJECTS += cgit.o
83OBJECTS += cmd.o 95OBJECTS += cmd.o
84OBJECTS += configfile.o 96OBJECTS += configfile.o
85OBJECTS += html.o 97OBJECTS += html.o
86OBJECTS += parsing.o 98OBJECTS += parsing.o
87OBJECTS += scan-tree.o 99OBJECTS += scan-tree.o
88OBJECTS += shared.o 100OBJECTS += shared.o
89OBJECTS += ui-atom.o 101OBJECTS += ui-atom.o
90OBJECTS += ui-blob.o 102OBJECTS += ui-blob.o
91OBJECTS += ui-clone.o 103OBJECTS += ui-clone.o
92OBJECTS += ui-commit.o 104OBJECTS += ui-commit.o
93OBJECTS += ui-diff.o 105OBJECTS += ui-diff.o
94OBJECTS += ui-log.o 106OBJECTS += ui-log.o
95OBJECTS += ui-patch.o 107OBJECTS += ui-patch.o
96OBJECTS += ui-plain.o 108OBJECTS += ui-plain.o
97OBJECTS += ui-refs.o 109OBJECTS += ui-refs.o
98OBJECTS += ui-repolist.o 110OBJECTS += ui-repolist.o
99OBJECTS += ui-shared.o 111OBJECTS += ui-shared.o
100OBJECTS += ui-snapshot.o 112OBJECTS += ui-snapshot.o
101OBJECTS += ui-ssdiff.o 113OBJECTS += ui-ssdiff.o
102OBJECTS += ui-stats.o 114OBJECTS += ui-stats.o
103OBJECTS += ui-summary.o 115OBJECTS += ui-summary.o
104OBJECTS += ui-tag.o 116OBJECTS += ui-tag.o
105OBJECTS += ui-tree.o 117OBJECTS += ui-tree.o
106 118
107ifdef NEEDS_LIBICONV 119ifdef NEEDS_LIBICONV
108 EXTLIBS += -liconv 120 EXTLIBS += -liconv
109endif 121endif
110 122
111 123
112.PHONY: all libgit test install uninstall clean force-version get-git \ 124.PHONY: all libgit test install uninstall clean force-version get-git \
113 doc man-doc html-doc clean-doc 125 doc clean-doc install-doc install-man install-html install-pdf \
126 uninstall-doc uninstall-man uninstall-html uninstall-pdf
114 127
115all: cgit 128all: cgit
116 129
117VERSION: force-version 130VERSION: force-version
118 @./gen-version.sh "$(CGIT_VERSION)" 131 @./gen-version.sh "$(CGIT_VERSION)"
119-include VERSION 132-include VERSION
120 133
121 134
122CFLAGS += -g -Wall -Igit 135CFLAGS += -g -Wall -Igit
123CFLAGS += -DSHA1_HEADER='$(SHA1_HEADER)' 136CFLAGS += -DSHA1_HEADER='$(SHA1_HEADER)'
124CFLAGS += -DCGIT_VERSION='"$(CGIT_VERSION)"' 137CFLAGS += -DCGIT_VERSION='"$(CGIT_VERSION)"'
125CFLAGS += -DCGIT_CONFIG='"$(CGIT_CONFIG)"' 138CFLAGS += -DCGIT_CONFIG='"$(CGIT_CONFIG)"'
126CFLAGS += -DCGIT_SCRIPT_NAME='"$(CGIT_SCRIPT_NAME)"' 139CFLAGS += -DCGIT_SCRIPT_NAME='"$(CGIT_SCRIPT_NAME)"'
127CFLAGS += -DCGIT_CACHE_ROOT='"$(CACHE_ROOT)"' 140CFLAGS += -DCGIT_CACHE_ROOT='"$(CACHE_ROOT)"'
128 141
129GIT_OPTIONS = prefix=/usr 142GIT_OPTIONS = prefix=/usr
130 143
131ifdef NO_ICONV 144ifdef NO_ICONV
132 CFLAGS += -DNO_ICONV 145 CFLAGS += -DNO_ICONV
133endif 146endif
134ifdef NO_STRCASESTR 147ifdef NO_STRCASESTR
135 CFLAGS += -DNO_STRCASESTR 148 CFLAGS += -DNO_STRCASESTR
136endif 149endif
137ifdef NO_C99_FORMAT 150ifdef NO_C99_FORMAT
138 CFLAGS += -DNO_C99_FORMAT 151 CFLAGS += -DNO_C99_FORMAT
139endif 152endif
140ifdef NO_OPENSSL 153ifdef NO_OPENSSL
141 CFLAGS += -DNO_OPENSSL 154 CFLAGS += -DNO_OPENSSL
142 GIT_OPTIONS += NO_OPENSSL=1 155 GIT_OPTIONS += NO_OPENSSL=1
143else 156else
144 EXTLIBS += -lcrypto 157 EXTLIBS += -lcrypto
145endif 158endif
146 159
147cgit: $(OBJECTS) libgit 160cgit: $(OBJECTS) libgit
148 $(QUIET_CC)$(CC) $(CFLAGS) $(LDFLAGS) -o cgit $(OBJECTS) $(EXTLIBS) 161 $(QUIET_CC)$(CC) $(CFLAGS) $(LDFLAGS) -o cgit $(OBJECTS) $(EXTLIBS)
149 162
150cgit.o: VERSION 163cgit.o: VERSION
151 164
152ifneq "$(MAKECMDGOALS)" "clean" 165ifneq "$(MAKECMDGOALS)" "clean"
153 -include $(OBJECTS:.o=.d) 166 -include $(OBJECTS:.o=.d)
154endif 167endif
155 168
156libgit: 169libgit:
157 $(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) NO_CURL=1 $(GIT_OPTIONS) libgit.a 170 $(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) NO_CURL=1 $(GIT_OPTIONS) libgit.a
158 $(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) NO_CURL=1 $(GIT_OPTIONS) xdiff/lib.a 171 $(QUIET_SUBDIR0)git $(QUIET_SUBDIR1) NO_CURL=1 $(GIT_OPTIONS) xdiff/lib.a
159 172
160test: all 173test: all
161 $(QUIET_SUBDIR0)tests $(QUIET_SUBDIR1) all 174 $(QUIET_SUBDIR0)tests $(QUIET_SUBDIR1) all
162 175
163install: all 176install: all
164 $(INSTALL) -m 0755 -d $(DESTDIR)$(CGIT_SCRIPT_PATH) 177 $(INSTALL) -m 0755 -d $(DESTDIR)$(CGIT_SCRIPT_PATH)
165 $(INSTALL) -m 0755 cgit $(DESTDIR)$(CGIT_SCRIPT_PATH)/$(CGIT_SCRIPT_NAME) 178 $(INSTALL) -m 0755 cgit $(DESTDIR)$(CGIT_SCRIPT_PATH)/$(CGIT_SCRIPT_NAME)
166 $(INSTALL) -m 0755 -d $(DESTDIR)$(CGIT_DATA_PATH) 179 $(INSTALL) -m 0755 -d $(DESTDIR)$(CGIT_DATA_PATH)
167 $(INSTALL) -m 0644 cgit.css $(DESTDIR)$(CGIT_DATA_PATH)/cgit.css 180 $(INSTALL) -m 0644 cgit.css $(DESTDIR)$(CGIT_DATA_PATH)/cgit.css
168 $(INSTALL) -m 0644 cgit.png $(DESTDIR)$(CGIT_DATA_PATH)/cgit.png 181 $(INSTALL) -m 0644 cgit.png $(DESTDIR)$(CGIT_DATA_PATH)/cgit.png
182 $(INSTALL) -m 0755 -d $(DESTDIR)$(filterdir)
183 $(INSTALL) -m 0755 filters/* $(DESTDIR)$(filterdir)
184
185install-doc: install-man install-html install-pdf
186
187install-man: doc-man
188 $(INSTALL) -m 0755 -d $(DESTDIR)$(mandir)/man5
189 $(INSTALL) -m 0644 $(DOC_MAN5) $(DESTDIR)$(mandir)/man5
190
191install-html: doc-html
192 $(INSTALL) -m 0755 -d $(DESTDIR)$(htmldir)
193 $(INSTALL) -m 0644 $(DOC_HTML) $(DESTDIR)$(htmldir)
194
195install-pdf: doc-pdf
196 $(INSTALL) -m 0755 -d $(DESTDIR)$(pdfdir)
197 $(INSTALL) -m 0644 $(DOC_PDF) $(DESTDIR)$(pdfdir)
169 198
170uninstall: 199uninstall:
171 rm -f $(CGIT_SCRIPT_PATH)/$(CGIT_SCRIPT_NAME) 200 rm -f $(CGIT_SCRIPT_PATH)/$(CGIT_SCRIPT_NAME)
172 rm -f $(CGIT_DATA_PATH)/cgit.css 201 rm -f $(CGIT_DATA_PATH)/cgit.css
173 rm -f $(CGIT_DATA_PATH)/cgit.png 202 rm -f $(CGIT_DATA_PATH)/cgit.png
174 203
175doc: man-doc html-doc pdf-doc 204uninstall-doc: uninstall-man uninstall-html uninstall-pdf
205
206uninstall-man:
207 @for i in $(DOC_MAN5); do \
208 rm -fv $(DESTDIR)$(mandir)/man5/$$i; \
209 done
210
211uninstall-html:
212 @for i in $(DOC_HTML); do \
213 rm -fv $(DESTDIR)$(htmldir)/$$i; \
214 done
215
216uninstall-pdf:
217 @for i in $(DOC_PDF); do \
218 rm -fv $(DESTDIR)$(pdfdir)/$$i; \
219 done
220
221doc: doc-man doc-html doc-pdf
222doc-man: doc-man5
223doc-man5: $(DOC_MAN5)
224doc-html: $(DOC_HTML)
225doc-pdf: $(DOC_PDF)
176 226
177man-doc: cgitrc.5.txt 227%.5 : %.5.txt
178 a2x -f manpage cgitrc.5.txt 228 a2x -f manpage $<
179 229
180html-doc: cgitrc.5.txt 230$(DOC_HTML): %.html : %.txt
181 a2x -f xhtml --stylesheet=cgit-doc.css cgitrc.5.txt 231 a2x -f xhtml --stylesheet=cgit-doc.css $<
182 232
183pdf-doc: cgitrc.5.txt 233$(DOC_PDF): %.pdf : %.txt
184 a2x -f pdf cgitrc.5.txt 234 a2x -f pdf cgitrc.5.txt
185 235
186clean: clean-doc 236clean: clean-doc
187 rm -f cgit VERSION *.o *.d 237 rm -f cgit VERSION *.o *.d
188 238
189clean-doc: 239clean-doc:
190 rm -f cgitrc.5 cgitrc.5.html cgitrc.5.pdf cgitrc.5.xml cgitrc.5.fo 240 rm -f cgitrc.5 cgitrc.5.html cgitrc.5.pdf cgitrc.5.xml cgitrc.5.fo
191 241
192get-git: 242get-git:
193 curl $(GIT_URL) | tar -xj && rm -rf git && mv git-$(GIT_VER) git 243 curl $(GIT_URL) | tar -xj && rm -rf git && mv git-$(GIT_VER) git
diff --git a/cgit.css b/cgit.css
index 0c88b65..a2a685b 100644
--- a/cgit.css
+++ b/cgit.css
@@ -1,745 +1,759 @@
1body, table, form { 1body, table, form {
2 padding: 0em; 2 padding: 0em;
3 margin: 0em; 3 margin: 0em;
4} 4}
5 5
6body { 6body {
7 font-family: sans-serif; 7 font-family: sans-serif;
8 font-size: 10pt; 8 font-size: 10pt;
9 color: #333; 9 color: #333;
10 background: white; 10 background: white;
11 padding: 4px; 11 padding: 4px;
12} 12}
13 13
14a { 14a {
15 color: blue; 15 color: blue;
16 text-decoration: none; 16 text-decoration: none;
17} 17}
18 18
19a:hover { 19a:hover {
20 text-decoration: underline; 20 text-decoration: underline;
21} 21}
22 22
23table { 23table {
24 border-collapse: collapse; 24 border-collapse: collapse;
25} 25}
26 26
27table#header { 27table#header {
28 width: 100%; 28 width: 100%;
29 margin-bottom: 1em; 29 margin-bottom: 1em;
30} 30}
31 31
32table#header td.logo { 32table#header td.logo {
33 width: 96px; 33 width: 96px;
34} 34}
35 35
36table#header td.main { 36table#header td.main {
37 font-size: 250%; 37 font-size: 250%;
38 padding-left: 10px; 38 padding-left: 10px;
39 white-space: nowrap; 39 white-space: nowrap;
40} 40}
41 41
42table#header td.main a { 42table#header td.main a {
43 color: #000; 43 color: #000;
44} 44}
45 45
46table#header td.form { 46table#header td.form {
47 text-align: right; 47 text-align: right;
48 vertical-align: bottom; 48 vertical-align: bottom;
49 padding-right: 1em; 49 padding-right: 1em;
50 padding-bottom: 2px; 50 padding-bottom: 2px;
51 white-space: nowrap; 51 white-space: nowrap;
52} 52}
53 53
54table#header td.form form, 54table#header td.form form,
55table#header td.form input, 55table#header td.form input,
56table#header td.form select { 56table#header td.form select {
57 font-size: 90%; 57 font-size: 90%;
58} 58}
59 59
60table#header td.sub { 60table#header td.sub {
61 color: #777; 61 color: #777;
62 border-top: solid 1px #ccc; 62 border-top: solid 1px #ccc;
63 padding-left: 10px; 63 padding-left: 10px;
64} 64}
65 65
66table.tabs { 66table.tabs {
67 border-bottom: solid 3px #ccc; 67 border-bottom: solid 3px #ccc;
68 border-collapse: collapse; 68 border-collapse: collapse;
69 margin-top: 2em; 69 margin-top: 2em;
70 margin-bottom: 0px; 70 margin-bottom: 0px;
71 width: 100%; 71 width: 100%;
72} 72}
73 73
74table.tabs td { 74table.tabs td {
75 padding: 0px 1em; 75 padding: 0px 1em;
76 vertical-align: bottom; 76 vertical-align: bottom;
77} 77}
78 78
79table.tabs td a { 79table.tabs td a {
80 padding: 2px 0.75em; 80 padding: 2px 0.75em;
81 color: #777; 81 color: #777;
82 font-size: 110%; 82 font-size: 110%;
83} 83}
84 84
85table.tabs td a.active { 85table.tabs td a.active {
86 color: #000; 86 color: #000;
87 background-color: #ccc; 87 background-color: #ccc;
88} 88}
89 89
90table.tabs td.form { 90table.tabs td.form {
91 text-align: right; 91 text-align: right;
92} 92}
93 93
94table.tabs td.form form { 94table.tabs td.form form {
95 padding-bottom: 2px; 95 padding-bottom: 2px;
96 font-size: 90%; 96 font-size: 90%;
97 white-space: nowrap; 97 white-space: nowrap;
98} 98}
99 99
100table.tabs td.form input, 100table.tabs td.form input,
101table.tabs td.form select { 101table.tabs td.form select {
102 font-size: 90%; 102 font-size: 90%;
103} 103}
104 104
105div.path { 105div.path {
106 margin: 0px; 106 margin: 0px;
107 padding: 5px 2em 2px 2em; 107 padding: 5px 2em 2px 2em;
108 color: #000; 108 color: #000;
109 background-color: #eee; 109 background-color: #eee;
110} 110}
111 111
112div.content { 112div.content {
113 margin: 0px; 113 margin: 0px;
114 padding: 2em; 114 padding: 2em;
115 border-bottom: solid 3px #ccc; 115 border-bottom: solid 3px #ccc;
116} 116}
117 117
118 118
119table.list { 119table.list {
120 width: 100%; 120 width: 100%;
121 border: none; 121 border: none;
122 border-collapse: collapse; 122 border-collapse: collapse;
123} 123}
124 124
125table.list tr { 125table.list tr {
126 background: white; 126 background: white;
127} 127}
128 128
129table.list tr.logheader { 129table.list tr.logheader {
130 background: #eee; 130 background: #eee;
131} 131}
132 132
133table.list tr:hover { 133table.list tr:hover {
134 background: #eee; 134 background: #eee;
135} 135}
136 136
137table.list tr.nohover:hover { 137table.list tr.nohover:hover {
138 background: white; 138 background: white;
139} 139}
140 140
141table.list th { 141table.list th {
142 font-weight: bold; 142 font-weight: bold;
143 /* color: #888; 143 /* color: #888;
144 border-top: dashed 1px #888; 144 border-top: dashed 1px #888;
145 border-bottom: dashed 1px #888; 145 border-bottom: dashed 1px #888;
146 */ 146 */
147 padding: 0.1em 0.5em 0.05em 0.5em; 147 padding: 0.1em 0.5em 0.05em 0.5em;
148 vertical-align: baseline; 148 vertical-align: baseline;
149} 149}
150 150
151table.list td { 151table.list td {
152 border: none; 152 border: none;
153 padding: 0.1em 0.5em 0.1em 0.5em; 153 padding: 0.1em 0.5em 0.1em 0.5em;
154} 154}
155 155
156table.list td.logsubject { 156table.list td.logsubject {
157 font-family: monospace; 157 font-family: monospace;
158 font-weight: bold; 158 font-weight: bold;
159} 159}
160 160
161table.list td.logmsg { 161table.list td.logmsg {
162 font-family: monospace; 162 font-family: monospace;
163 white-space: pre; 163 white-space: pre;
164 padding: 1em 0.5em 2em 0.5em; 164 padding: 1em 0.5em 2em 0.5em;
165} 165}
166 166
167table.list td.lognotes-label { 167table.list td.lognotes-label {
168 text-align:right; 168 text-align:right;
169 vertical-align:top; 169 vertical-align:top;
170} 170}
171 171
172table.list td.lognotes { 172table.list td.lognotes {
173 font-family: monospace; 173 font-family: monospace;
174 white-space: pre; 174 white-space: pre;
175 padding: 0em 0.5em 2em 0.5em; 175 padding: 0em 0.5em 2em 0.5em;
176} 176}
177 177
178table.list td a { 178table.list td a {
179 color: black; 179 color: black;
180} 180}
181 181
182table.list td a.ls-dir { 182table.list td a.ls-dir {
183 font-weight: bold; 183 font-weight: bold;
184 color: #00f; 184 color: #00f;
185} 185}
186 186
187table.list td a:hover { 187table.list td a:hover {
188 color: #00f; 188 color: #00f;
189} 189}
190 190
191img { 191img {
192 border: none; 192 border: none;
193} 193}
194 194
195input#switch-btn { 195input#switch-btn {
196 margin: 2px 0px 0px 0px; 196 margin: 2px 0px 0px 0px;
197} 197}
198 198
199td#sidebar input.txt { 199td#sidebar input.txt {
200 width: 100%; 200 width: 100%;
201 margin: 2px 0px 0px 0px; 201 margin: 2px 0px 0px 0px;
202} 202}
203 203
204table#grid { 204table#grid {
205 margin: 0px; 205 margin: 0px;
206} 206}
207 207
208td#content { 208td#content {
209 vertical-align: top; 209 vertical-align: top;
210 padding: 1em 2em 1em 1em; 210 padding: 1em 2em 1em 1em;
211 border: none; 211 border: none;
212} 212}
213 213
214div#summary { 214div#summary {
215 vertical-align: top; 215 vertical-align: top;
216 margin-bottom: 1em; 216 margin-bottom: 1em;
217} 217}
218 218
219table#downloads { 219table#downloads {
220 float: right; 220 float: right;
221 border-collapse: collapse; 221 border-collapse: collapse;
222 border: solid 1px #777; 222 border: solid 1px #777;
223 margin-left: 0.5em; 223 margin-left: 0.5em;
224 margin-bottom: 0.5em; 224 margin-bottom: 0.5em;
225} 225}
226 226
227table#downloads th { 227table#downloads th {
228 background-color: #ccc; 228 background-color: #ccc;
229} 229}
230 230
231div#blob { 231div#blob {
232 border: solid 1px black; 232 border: solid 1px black;
233} 233}
234 234
235div.error { 235div.error {
236 color: red; 236 color: red;
237 font-weight: bold; 237 font-weight: bold;
238 margin: 1em 2em; 238 margin: 1em 2em;
239} 239}
240 240
241a.ls-blob, a.ls-dir, a.ls-mod { 241a.ls-blob, a.ls-dir, a.ls-mod {
242 font-family: monospace; 242 font-family: monospace;
243} 243}
244 244
245td.ls-size { 245td.ls-size {
246 text-align: right; 246 text-align: right;
247 font-family: monospace; 247 font-family: monospace;
248 width: 10em; 248 width: 10em;
249} 249}
250 250
251td.ls-mode { 251td.ls-mode {
252 font-family: monospace; 252 font-family: monospace;
253 width: 10em; 253 width: 10em;
254} 254}
255 255
256table.blob { 256table.blob {
257 margin-top: 0.5em; 257 margin-top: 0.5em;
258 border-top: solid 1px black; 258 border-top: solid 1px black;
259} 259}
260 260
261table.blob td.lines { 261table.blob td.lines {
262 margin: 0; padding: 0 0 0 0.5em; 262 margin: 0; padding: 0 0 0 0.5em;
263 vertical-align: top; 263 vertical-align: top;
264 color: black; 264 color: black;
265} 265}
266 266
267table.blob td.linenumbers { 267table.blob td.linenumbers {
268 margin: 0; padding: 0 0.5em 0 0.5em; 268 margin: 0; padding: 0 0.5em 0 0.5em;
269 vertical-align: top; 269 vertical-align: top;
270 text-align: right; 270 text-align: right;
271 border-right: 1px solid gray; 271 border-right: 1px solid gray;
272} 272}
273 273
274table.blob pre { 274table.blob pre {
275 padding: 0; margin: 0; 275 padding: 0; margin: 0;
276} 276}
277 277
278table.blob a.no { 278table.blob a.no {
279 color: gray; 279 color: gray;
280 text-align: right; 280 text-align: right;
281 text-decoration: none; 281 text-decoration: none;
282} 282}
283 283
284table.blob a.no a:hover { 284table.blob a.no a:hover {
285 color: black; 285 color: black;
286} 286}
287 287
288table.bin-blob { 288table.bin-blob {
289 margin-top: 0.5em; 289 margin-top: 0.5em;
290 border: solid 1px black; 290 border: solid 1px black;
291} 291}
292 292
293table.bin-blob th { 293table.bin-blob th {
294 font-family: monospace; 294 font-family: monospace;
295 white-space: pre; 295 white-space: pre;
296 border: solid 1px #777; 296 border: solid 1px #777;
297 padding: 0.5em 1em; 297 padding: 0.5em 1em;
298} 298}
299 299
300table.bin-blob td { 300table.bin-blob td {
301 font-family: monospace; 301 font-family: monospace;
302 white-space: pre; 302 white-space: pre;
303 border-left: solid 1px #777; 303 border-left: solid 1px #777;
304 padding: 0em 1em; 304 padding: 0em 1em;
305} 305}
306 306
307table.nowrap td { 307table.nowrap td {
308 white-space: nowrap; 308 white-space: nowrap;
309} 309}
310 310
311table.commit-info { 311table.commit-info {
312 border-collapse: collapse; 312 border-collapse: collapse;
313 margin-top: 1.5em; 313 margin-top: 1.5em;
314} 314}
315 315
316table.commit-info th { 316table.commit-info th {
317 text-align: left; 317 text-align: left;
318 font-weight: normal; 318 font-weight: normal;
319 padding: 0.1em 1em 0.1em 0.1em; 319 padding: 0.1em 1em 0.1em 0.1em;
320 vertical-align: top; 320 vertical-align: top;
321} 321}
322 322
323table.commit-info td { 323table.commit-info td {
324 font-weight: normal; 324 font-weight: normal;
325 padding: 0.1em 1em 0.1em 0.1em; 325 padding: 0.1em 1em 0.1em 0.1em;
326} 326}
327 327
328div.commit-subject { 328div.commit-subject {
329 font-weight: bold; 329 font-weight: bold;
330 font-size: 125%; 330 font-size: 125%;
331 margin: 1.5em 0em 0.5em 0em; 331 margin: 1.5em 0em 0.5em 0em;
332 padding: 0em; 332 padding: 0em;
333} 333}
334 334
335div.commit-msg { 335div.commit-msg {
336 white-space: pre; 336 white-space: pre;
337 font-family: monospace; 337 font-family: monospace;
338} 338}
339 339
340div.notes-header { 340div.notes-header {
341 font-weight: bold; 341 font-weight: bold;
342 padding-top: 1.5em; 342 padding-top: 1.5em;
343} 343}
344 344
345div.notes { 345div.notes {
346 white-space: pre; 346 white-space: pre;
347 font-family: monospace; 347 font-family: monospace;
348 border: solid 1px #ee9; 348 border: solid 1px #ee9;
349 background-color: #ffd; 349 background-color: #ffd;
350 padding: 0.3em 2em 0.3em 1em; 350 padding: 0.3em 2em 0.3em 1em;
351 float: left; 351 float: left;
352} 352}
353 353
354div.notes-footer { 354div.notes-footer {
355 clear: left; 355 clear: left;
356} 356}
357 357
358div.diffstat-header { 358div.diffstat-header {
359 font-weight: bold; 359 font-weight: bold;
360 padding-top: 1.5em; 360 padding-top: 1.5em;
361} 361}
362 362
363table.diffstat { 363table.diffstat {
364 border-collapse: collapse; 364 border-collapse: collapse;
365 border: solid 1px #aaa; 365 border: solid 1px #aaa;
366 background-color: #eee; 366 background-color: #eee;
367} 367}
368 368
369table.diffstat th { 369table.diffstat th {
370 font-weight: normal; 370 font-weight: normal;
371 text-align: left; 371 text-align: left;
372 text-decoration: underline; 372 text-decoration: underline;
373 padding: 0.1em 1em 0.1em 0.1em; 373 padding: 0.1em 1em 0.1em 0.1em;
374 font-size: 100%; 374 font-size: 100%;
375} 375}
376 376
377table.diffstat td { 377table.diffstat td {
378 padding: 0.2em 0.2em 0.1em 0.1em; 378 padding: 0.2em 0.2em 0.1em 0.1em;
379 font-size: 100%; 379 font-size: 100%;
380 border: none; 380 border: none;
381} 381}
382 382
383table.diffstat td.mode { 383table.diffstat td.mode {
384 white-space: nowrap; 384 white-space: nowrap;
385} 385}
386 386
387table.diffstat td span.modechange { 387table.diffstat td span.modechange {
388 padding-left: 1em; 388 padding-left: 1em;
389 color: red; 389 color: red;
390} 390}
391 391
392table.diffstat td.add a { 392table.diffstat td.add a {
393 color: green; 393 color: green;
394} 394}
395 395
396table.diffstat td.del a { 396table.diffstat td.del a {
397 color: red; 397 color: red;
398} 398}
399 399
400table.diffstat td.upd a { 400table.diffstat td.upd a {
401 color: blue; 401 color: blue;
402} 402}
403 403
404table.diffstat td.graph { 404table.diffstat td.graph {
405 width: 500px; 405 width: 500px;
406 vertical-align: middle; 406 vertical-align: middle;
407} 407}
408 408
409table.diffstat td.graph table { 409table.diffstat td.graph table {
410 border: none; 410 border: none;
411} 411}
412 412
413table.diffstat td.graph td { 413table.diffstat td.graph td {
414 padding: 0px; 414 padding: 0px;
415 border: 0px; 415 border: 0px;
416 height: 7pt; 416 height: 7pt;
417} 417}
418 418
419table.diffstat td.graph td.add { 419table.diffstat td.graph td.add {
420 background-color: #5c5; 420 background-color: #5c5;
421} 421}
422 422
423table.diffstat td.graph td.rem { 423table.diffstat td.graph td.rem {
424 background-color: #c55; 424 background-color: #c55;
425} 425}
426 426
427div.diffstat-summary { 427div.diffstat-summary {
428 color: #888; 428 color: #888;
429 padding-top: 0.5em; 429 padding-top: 0.5em;
430} 430}
431 431
432table.diff { 432table.diff {
433 width: 100%; 433 width: 100%;
434} 434}
435 435
436table.diff td { 436table.diff td {
437 font-family: monospace; 437 font-family: monospace;
438 white-space: pre; 438 white-space: pre;
439} 439}
440 440
441table.diff td div.head { 441table.diff td div.head {
442 font-weight: bold; 442 font-weight: bold;
443 margin-top: 1em; 443 margin-top: 1em;
444 color: black; 444 color: black;
445} 445}
446 446
447table.diff td div.hunk { 447table.diff td div.hunk {
448 color: #009; 448 color: #009;
449} 449}
450 450
451table.diff td div.add { 451table.diff td div.add {
452 color: green; 452 color: green;
453} 453}
454 454
455table.diff td div.del { 455table.diff td div.del {
456 color: red; 456 color: red;
457} 457}
458 458
459.sha1 { 459.sha1 {
460 font-family: monospace; 460 font-family: monospace;
461 font-size: 90%; 461 font-size: 90%;
462} 462}
463 463
464.left { 464.left {
465 text-align: left; 465 text-align: left;
466} 466}
467 467
468.right { 468.right {
469 text-align: right; 469 text-align: right;
470} 470}
471 471
472table.list td.reposection { 472table.list td.reposection {
473 font-style: italic; 473 font-style: italic;
474 color: #888; 474 color: #888;
475} 475}
476 476
477a.button { 477a.button {
478 font-size: 80%; 478 font-size: 80%;
479 padding: 0em 0.5em; 479 padding: 0em 0.5em;
480} 480}
481 481
482a.primary { 482a.primary {
483 font-size: 100%; 483 font-size: 100%;
484} 484}
485 485
486a.secondary { 486a.secondary {
487 font-size: 90%; 487 font-size: 90%;
488} 488}
489 489
490td.toplevel-repo { 490td.toplevel-repo {
491 491
492} 492}
493 493
494table.list td.sublevel-repo { 494table.list td.sublevel-repo {
495 padding-left: 1.5em; 495 padding-left: 1.5em;
496} 496}
497 497
498div.pager { 498div.pager {
499 text-align: center; 499 text-align: center;
500 margin: 1em 0em 0em 0em; 500 margin: 1em 0em 0em 0em;
501} 501}
502 502
503div.pager a { 503div.pager a {
504 color: #777; 504 color: #777;
505 margin: 0em 0.5em; 505 margin: 0em 0.5em;
506} 506}
507 507
508span.age-mins { 508span.age-mins {
509 font-weight: bold; 509 font-weight: bold;
510 color: #080; 510 color: #080;
511} 511}
512 512
513span.age-hours { 513span.age-hours {
514 color: #080; 514 color: #080;
515} 515}
516 516
517span.age-days { 517span.age-days {
518 color: #040; 518 color: #040;
519} 519}
520 520
521span.age-weeks { 521span.age-weeks {
522 color: #444; 522 color: #444;
523} 523}
524 524
525span.age-months { 525span.age-months {
526 color: #888; 526 color: #888;
527} 527}
528 528
529span.age-years { 529span.age-years {
530 color: #bbb; 530 color: #bbb;
531} 531}
532div.footer { 532div.footer {
533 margin-top: 0.5em; 533 margin-top: 0.5em;
534 text-align: center; 534 text-align: center;
535 font-size: 80%; 535 font-size: 80%;
536 color: #ccc; 536 color: #ccc;
537} 537}
538a.branch-deco { 538a.branch-deco {
539 margin: 0px 0.5em; 539 margin: 0px 0.5em;
540 padding: 0px 0.25em; 540 padding: 0px 0.25em;
541 background-color: #88ff88; 541 background-color: #88ff88;
542 border: solid 1px #007700; 542 border: solid 1px #007700;
543} 543}
544a.tag-deco { 544a.tag-deco {
545 margin: 0px 0.5em; 545 margin: 0px 0.5em;
546 padding: 0px 0.25em; 546 padding: 0px 0.25em;
547 background-color: #ffff88; 547 background-color: #ffff88;
548 border: solid 1px #777700; 548 border: solid 1px #777700;
549} 549}
550a.remote-deco { 550a.remote-deco {
551 margin: 0px 0.5em; 551 margin: 0px 0.5em;
552 padding: 0px 0.25em; 552 padding: 0px 0.25em;
553 background-color: #ccccff; 553 background-color: #ccccff;
554 border: solid 1px #000077; 554 border: solid 1px #000077;
555} 555}
556a.deco { 556a.deco {
557 margin: 0px 0.5em; 557 margin: 0px 0.5em;
558 padding: 0px 0.25em; 558 padding: 0px 0.25em;
559 background-color: #ff8888; 559 background-color: #ff8888;
560 border: solid 1px #770000; 560 border: solid 1px #770000;
561} 561}
562 562
563div.commit-subject a.branch-deco, 563div.commit-subject a.branch-deco,
564div.commit-subject a.tag-deco, 564div.commit-subject a.tag-deco,
565div.commit-subject a.remote-deco, 565div.commit-subject a.remote-deco,
566div.commit-subject a.deco { 566div.commit-subject a.deco {
567 margin-left: 1em; 567 margin-left: 1em;
568 font-size: 75%; 568 font-size: 75%;
569} 569}
570 570
571table.stats { 571table.stats {
572 border: solid 1px black; 572 border: solid 1px black;
573 border-collapse: collapse; 573 border-collapse: collapse;
574} 574}
575 575
576table.stats th { 576table.stats th {
577 text-align: left; 577 text-align: left;
578 padding: 1px 0.5em; 578 padding: 1px 0.5em;
579 background-color: #eee; 579 background-color: #eee;
580 border: solid 1px black; 580 border: solid 1px black;
581} 581}
582 582
583table.stats td { 583table.stats td {
584 text-align: right; 584 text-align: right;
585 padding: 1px 0.5em; 585 padding: 1px 0.5em;
586 border: solid 1px black; 586 border: solid 1px black;
587} 587}
588 588
589table.stats td.total { 589table.stats td.total {
590 font-weight: bold; 590 font-weight: bold;
591 text-align: left; 591 text-align: left;
592} 592}
593 593
594table.stats td.sum { 594table.stats td.sum {
595 color: #c00; 595 color: #c00;
596 font-weight: bold; 596 font-weight: bold;
597 /*background-color: #eee; */ 597 /*background-color: #eee; */
598} 598}
599 599
600table.stats td.left { 600table.stats td.left {
601 text-align: left; 601 text-align: left;
602} 602}
603 603
604table.vgraph { 604table.vgraph {
605 border-collapse: separate; 605 border-collapse: separate;
606 border: solid 1px black; 606 border: solid 1px black;
607 height: 200px; 607 height: 200px;
608} 608}
609 609
610table.vgraph th { 610table.vgraph th {
611 background-color: #eee; 611 background-color: #eee;
612 font-weight: bold; 612 font-weight: bold;
613 border: solid 1px white; 613 border: solid 1px white;
614 padding: 1px 0.5em; 614 padding: 1px 0.5em;
615} 615}
616 616
617table.vgraph td { 617table.vgraph td {
618 vertical-align: bottom; 618 vertical-align: bottom;
619 padding: 0px 10px; 619 padding: 0px 10px;
620} 620}
621 621
622table.vgraph div.bar { 622table.vgraph div.bar {
623 background-color: #eee; 623 background-color: #eee;
624} 624}
625 625
626table.hgraph { 626table.hgraph {
627 border: solid 1px black; 627 border: solid 1px black;
628 width: 800px; 628 width: 800px;
629} 629}
630 630
631table.hgraph th { 631table.hgraph th {
632 background-color: #eee; 632 background-color: #eee;
633 font-weight: bold; 633 font-weight: bold;
634 border: solid 1px black; 634 border: solid 1px black;
635 padding: 1px 0.5em; 635 padding: 1px 0.5em;
636} 636}
637 637
638table.hgraph td { 638table.hgraph td {
639 vertical-align: center; 639 vertical-align: center;
640 padding: 2px 2px; 640 padding: 2px 2px;
641} 641}
642 642
643table.hgraph div.bar { 643table.hgraph div.bar {
644 background-color: #eee; 644 background-color: #eee;
645 height: 1em; 645 height: 1em;
646} 646}
647 647
648table.ssdiff { 648table.ssdiff {
649 width: 100%; 649 width: 100%;
650} 650}
651 651
652table.ssdiff td { 652table.ssdiff td {
653 font-size: 75%; 653 font-size: 75%;
654 font-family: monospace; 654 font-family: monospace;
655 white-space: pre; 655 white-space: pre;
656 padding: 1px 4px 1px 4px; 656 padding: 1px 4px 1px 4px;
657 border-left: solid 1px #aaa; 657 border-left: solid 1px #aaa;
658 border-right: solid 1px #aaa; 658 border-right: solid 1px #aaa;
659} 659}
660 660
661table.ssdiff td.add { 661table.ssdiff td.add {
662 color: black; 662 color: black;
663 background: #cfc; 663 background: #cfc;
664 min-width: 50%; 664 min-width: 50%;
665} 665}
666 666
667table.ssdiff td.add_dark { 667table.ssdiff td.add_dark {
668 color: black; 668 color: black;
669 background: #aca; 669 background: #aca;
670 min-width: 50%; 670 min-width: 50%;
671} 671}
672 672
673table.ssdiff span.add { 673table.ssdiff span.add {
674 background: #cfc; 674 background: #cfc;
675 font-weight: bold; 675 font-weight: bold;
676} 676}
677 677
678table.ssdiff td.del { 678table.ssdiff td.del {
679 color: black; 679 color: black;
680 background: #fcc; 680 background: #fcc;
681 min-width: 50%; 681 min-width: 50%;
682} 682}
683 683
684table.ssdiff td.del_dark { 684table.ssdiff td.del_dark {
685 color: black; 685 color: black;
686 background: #caa; 686 background: #caa;
687 min-width: 50%; 687 min-width: 50%;
688} 688}
689 689
690table.ssdiff span.del { 690table.ssdiff span.del {
691 background: #fcc; 691 background: #fcc;
692 font-weight: bold; 692 font-weight: bold;
693} 693}
694 694
695table.ssdiff td.changed { 695table.ssdiff td.changed {
696 color: black; 696 color: black;
697 background: #ffc; 697 background: #ffc;
698 min-width: 50%; 698 min-width: 50%;
699} 699}
700 700
701table.ssdiff td.changed_dark { 701table.ssdiff td.changed_dark {
702 color: black; 702 color: black;
703 background: #cca; 703 background: #cca;
704 min-width: 50%; 704 min-width: 50%;
705} 705}
706 706
707table.ssdiff td.lineno { 707table.ssdiff td.lineno {
708 color: black; 708 color: black;
709 background: #eee; 709 background: #eee;
710 text-align: right; 710 text-align: right;
711 width: 3em; 711 width: 3em;
712 min-width: 3em; 712 min-width: 3em;
713} 713}
714 714
715table.ssdiff td.hunk { 715table.ssdiff td.hunk {
716 color: #black; 716 color: #black;
717 background: #ccf; 717 background: #ccf;
718 border-top: solid 1px #aaa; 718 border-top: solid 1px #aaa;
719 border-bottom: solid 1px #aaa; 719 border-bottom: solid 1px #aaa;
720} 720}
721 721
722table.ssdiff td.head { 722table.ssdiff td.head {
723 border-top: solid 1px #aaa; 723 border-top: solid 1px #aaa;
724 border-bottom: solid 1px #aaa; 724 border-bottom: solid 1px #aaa;
725} 725}
726 726
727table.ssdiff td.head div.head { 727table.ssdiff td.head div.head {
728 font-weight: bold; 728 font-weight: bold;
729 color: black; 729 color: black;
730} 730}
731 731
732table.ssdiff td.foot { 732table.ssdiff td.foot {
733 border-top: solid 1px #aaa; 733 border-top: solid 1px #aaa;
734 border-left: none; 734 border-left: none;
735 border-right: none; 735 border-right: none;
736 border-bottom: none; 736 border-bottom: none;
737} 737}
738 738
739table.ssdiff td.space { 739table.ssdiff td.space {
740 border: none; 740 border: none;
741} 741}
742 742
743table.ssdiff td.space div { 743table.ssdiff td.space div {
744 min-height: 3em; 744 min-height: 3em;
745} \ No newline at end of file 745}
746
747/* Syntax highlighting */
748table.blob .num { color:#2928ff; }
749table.blob .esc { color:#ff00ff; }
750table.blob .str { color:#ff0000; }
751table.blob .dstr { color:#818100; }
752table.blob .slc { color:#838183; font-style:italic; }
753table.blob .com { color:#838183; font-style:italic; }
754table.blob .dir { color:#008200; }
755table.blob .sym { color:#000000; }
756table.blob .kwa { color:#000000; font-weight:bold; }
757table.blob .kwb { color:#830000; }
758table.blob .kwc { color:#000000; font-weight:bold; }
759table.blob .kwd { color:#010181; }
diff --git a/cgitrc.5.txt b/cgitrc.5.txt
index 75b6584..8e51ca5 100644
--- a/cgitrc.5.txt
+++ b/cgitrc.5.txt
@@ -1,570 +1,570 @@
1:man source: cgit 1:man source: cgit
2:man manual: cgit 2:man manual: cgit
3 3
4CGITRC(5) 4CGITRC(5)
5======== 5========
6 6
7 7
8NAME 8NAME
9---- 9----
10cgitrc - runtime configuration for cgit 10cgitrc - runtime configuration for cgit
11 11
12 12
13SYNOPSIS 13SYNOPSIS
14-------- 14--------
15Cgitrc contains all runtime settings for cgit, including the list of git 15Cgitrc contains all runtime settings for cgit, including the list of git
16repositories, formatted as a line-separated list of NAME=VALUE pairs. Blank 16repositories, formatted as a line-separated list of NAME=VALUE pairs. Blank
17lines, and lines starting with '#', are ignored. 17lines, and lines starting with '#', are ignored.
18 18
19 19
20LOCATION 20LOCATION
21-------- 21--------
22The default location of cgitrc, defined at compile time, is /etc/cgitrc. At 22The default location of cgitrc, defined at compile time, is /etc/cgitrc. At
23runtime, cgit will consult the environment variable CGIT_CONFIG and, if 23runtime, cgit will consult the environment variable CGIT_CONFIG and, if
24defined, use its value instead. 24defined, use its value instead.
25 25
26 26
27GLOBAL SETTINGS 27GLOBAL SETTINGS
28--------------- 28---------------
29about-filter:: 29about-filter::
30 Specifies a command which will be invoked to format the content of 30 Specifies a command which will be invoked to format the content of
31 about pages (both top-level and for each repository). The command will 31 about pages (both top-level and for each repository). The command will
32 get the content of the about-file on its STDIN, and the STDOUT from the 32 get the content of the about-file on its STDIN, and the STDOUT from the
33 command will be included verbatim on the about page. Default value: 33 command will be included verbatim on the about page. Default value:
34 none. 34 none.
35 35
36agefile:: 36agefile::
37 Specifies a path, relative to each repository path, which can be used 37 Specifies a path, relative to each repository path, which can be used
38 to specify the date and time of the youngest commit in the repository. 38 to specify the date and time of the youngest commit in the repository.
39 The first line in the file is used as input to the "parse_date" 39 The first line in the file is used as input to the "parse_date"
40 function in libgit. Recommended timestamp-format is "yyyy-mm-dd 40 function in libgit. Recommended timestamp-format is "yyyy-mm-dd
41 hh:mm:ss". Default value: "info/web/last-modified". 41 hh:mm:ss". Default value: "info/web/last-modified".
42 42
43cache-root:: 43cache-root::
44 Path used to store the cgit cache entries. Default value: 44 Path used to store the cgit cache entries. Default value:
45 "/var/cache/cgit". 45 "/var/cache/cgit".
46 46
47cache-dynamic-ttl:: 47cache-dynamic-ttl::
48 Number which specifies the time-to-live, in minutes, for the cached 48 Number which specifies the time-to-live, in minutes, for the cached
49 version of repository pages accessed without a fixed SHA1. Default 49 version of repository pages accessed without a fixed SHA1. Default
50 value: "5". 50 value: "5".
51 51
52cache-repo-ttl:: 52cache-repo-ttl::
53 Number which specifies the time-to-live, in minutes, for the cached 53 Number which specifies the time-to-live, in minutes, for the cached
54 version of the repository summary page. Default value: "5". 54 version of the repository summary page. Default value: "5".
55 55
56cache-root-ttl:: 56cache-root-ttl::
57 Number which specifies the time-to-live, in minutes, for the cached 57 Number which specifies the time-to-live, in minutes, for the cached
58 version of the repository index page. Default value: "5". 58 version of the repository index page. Default value: "5".
59 59
60cache-scanrc-ttl:: 60cache-scanrc-ttl::
61 Number which specifies the time-to-live, in minutes, for the result 61 Number which specifies the time-to-live, in minutes, for the result
62 of scanning a path for git repositories. Default value: "15". 62 of scanning a path for git repositories. Default value: "15".
63 63
64cache-size:: 64cache-size::
65 The maximum number of entries in the cgit cache. Default value: "0" 65 The maximum number of entries in the cgit cache. Default value: "0"
66 (i.e. caching is disabled). 66 (i.e. caching is disabled).
67 67
68cache-static-ttl:: 68cache-static-ttl::
69 Number which specifies the time-to-live, in minutes, for the cached 69 Number which specifies the time-to-live, in minutes, for the cached
70 version of repository pages accessed with a fixed SHA1. Default value: 70 version of repository pages accessed with a fixed SHA1. Default value:
71 "5". 71 "5".
72 72
73clone-prefix:: 73clone-prefix::
74 Space-separated list of common prefixes which, when combined with a 74 Space-separated list of common prefixes which, when combined with a
75 repository url, generates valid clone urls for the repository. This 75 repository url, generates valid clone urls for the repository. This
76 setting is only used if `repo.clone-url` is unspecified. Default value: 76 setting is only used if `repo.clone-url` is unspecified. Default value:
77 none. 77 none.
78 78
79commit-filter:: 79commit-filter::
80 Specifies a command which will be invoked to format commit messages. 80 Specifies a command which will be invoked to format commit messages.
81 The command will get the message on its STDIN, and the STDOUT from the 81 The command will get the message on its STDIN, and the STDOUT from the
82 command will be included verbatim as the commit message, i.e. this can 82 command will be included verbatim as the commit message, i.e. this can
83 be used to implement bugtracker integration. Default value: none. 83 be used to implement bugtracker integration. Default value: none.
84 84
85css:: 85css::
86 Url which specifies the css document to include in all cgit pages. 86 Url which specifies the css document to include in all cgit pages.
87 Default value: "/cgit.css". 87 Default value: "/cgit.css".
88 88
89embedded:: 89embedded::
90 Flag which, when set to "1", will make cgit generate a html fragment 90 Flag which, when set to "1", will make cgit generate a html fragment
91 suitable for embedding in other html pages. Default value: none. See 91 suitable for embedding in other html pages. Default value: none. See
92 also: "noheader". 92 also: "noheader".
93 93
94enable-filter-overrides:: 94enable-filter-overrides::
95 Flag which, when set to "1", allows all filter settings to be 95 Flag which, when set to "1", allows all filter settings to be
96 overridden in repository-specific cgitrc files. Default value: none. 96 overridden in repository-specific cgitrc files. Default value: none.
97 97
98enable-gitweb-owner:: 98enable-gitweb-owner::
99 If set to "1" and scan-path is enabled, we first check each repository 99 If set to "1" and scan-path is enabled, we first check each repository
100 for the git config value "gitweb.owner" to determine the owner. 100 for the git config value "gitweb.owner" to determine the owner.
101 Default value: "1". See also: scan-path. 101 Default value: "1". See also: scan-path.
102 102
103enable-index-links:: 103enable-index-links::
104 Flag which, when set to "1", will make cgit generate extra links for 104 Flag which, when set to "1", will make cgit generate extra links for
105 each repo in the repository index (specifically, to the "summary", 105 each repo in the repository index (specifically, to the "summary",
106 "commit" and "tree" pages). Default value: "0". 106 "commit" and "tree" pages). Default value: "0".
107 107
108enable-log-filecount:: 108enable-log-filecount::
109 Flag which, when set to "1", will make cgit print the number of 109 Flag which, when set to "1", will make cgit print the number of
110 modified files for each commit on the repository log page. Default 110 modified files for each commit on the repository log page. Default
111 value: "0". 111 value: "0".
112 112
113enable-log-linecount:: 113enable-log-linecount::
114 Flag which, when set to "1", will make cgit print the number of added 114 Flag which, when set to "1", will make cgit print the number of added
115 and removed lines for each commit on the repository log page. Default 115 and removed lines for each commit on the repository log page. Default
116 value: "0". 116 value: "0".
117 117
118enable-remote-branches:: 118enable-remote-branches::
119 Flag which, when set to "1", will make cgit display remote branches 119 Flag which, when set to "1", will make cgit display remote branches
120 in the summary and refs views. Default value: "0". See also: 120 in the summary and refs views. Default value: "0". See also:
121 "repo.enable-remote-branches". 121 "repo.enable-remote-branches".
122 122
123enable-subject-links:: 123enable-subject-links::
124 Flag which, when set to "1", will make cgit use the subject of the 124 Flag which, when set to "1", will make cgit use the subject of the
125 parent commit as link text when generating links to parent commits 125 parent commit as link text when generating links to parent commits
126 in commit view. Default value: "0". See also: 126 in commit view. Default value: "0". See also:
127 "repo.enable-subject-links". 127 "repo.enable-subject-links".
128 128
129enable-tree-linenumbers:: 129enable-tree-linenumbers::
130 Flag which, when set to "1", will make cgit generate linenumber links 130 Flag which, when set to "1", will make cgit generate linenumber links
131 for plaintext blobs printed in the tree view. Default value: "1". 131 for plaintext blobs printed in the tree view. Default value: "1".
132 132
133favicon:: 133favicon::
134 Url used as link to a shortcut icon for cgit. If specified, it is 134 Url used as link to a shortcut icon for cgit. If specified, it is
135 suggested to use the value "/favicon.ico" since certain browsers will 135 suggested to use the value "/favicon.ico" since certain browsers will
136 ignore other values. Default value: none. 136 ignore other values. Default value: none.
137 137
138footer:: 138footer::
139 The content of the file specified with this option will be included 139 The content of the file specified with this option will be included
140 verbatim at the bottom of all pages (i.e. it replaces the standard 140 verbatim at the bottom of all pages (i.e. it replaces the standard
141 "generated by..." message. Default value: none. 141 "generated by..." message. Default value: none.
142 142
143head-include:: 143head-include::
144 The content of the file specified with this option will be included 144 The content of the file specified with this option will be included
145 verbatim in the html HEAD section on all pages. Default value: none. 145 verbatim in the html HEAD section on all pages. Default value: none.
146 146
147header:: 147header::
148 The content of the file specified with this option will be included 148 The content of the file specified with this option will be included
149 verbatim at the top of all pages. Default value: none. 149 verbatim at the top of all pages. Default value: none.
150 150
151include:: 151include::
152 Name of a configfile to include before the rest of the current config- 152 Name of a configfile to include before the rest of the current config-
153 file is parsed. Default value: none. 153 file is parsed. Default value: none.
154 154
155index-header:: 155index-header::
156 The content of the file specified with this option will be included 156 The content of the file specified with this option will be included
157 verbatim above the repository index. This setting is deprecated, and 157 verbatim above the repository index. This setting is deprecated, and
158 will not be supported by cgit-1.0 (use root-readme instead). Default 158 will not be supported by cgit-1.0 (use root-readme instead). Default
159 value: none. 159 value: none.
160 160
161index-info:: 161index-info::
162 The content of the file specified with this option will be included 162 The content of the file specified with this option will be included
163 verbatim below the heading on the repository index page. This setting 163 verbatim below the heading on the repository index page. This setting
164 is deprecated, and will not be supported by cgit-1.0 (use root-desc 164 is deprecated, and will not be supported by cgit-1.0 (use root-desc
165 instead). Default value: none. 165 instead). Default value: none.
166 166
167local-time:: 167local-time::
168 Flag which, if set to "1", makes cgit print commit and tag times in the 168 Flag which, if set to "1", makes cgit print commit and tag times in the
169 servers timezone. Default value: "0". 169 servers timezone. Default value: "0".
170 170
171logo:: 171logo::
172 Url which specifies the source of an image which will be used as a logo 172 Url which specifies the source of an image which will be used as a logo
173 on all cgit pages. Default value: "/cgit.png". 173 on all cgit pages. Default value: "/cgit.png".
174 174
175logo-link:: 175logo-link::
176 Url loaded when clicking on the cgit logo image. If unspecified the 176 Url loaded when clicking on the cgit logo image. If unspecified the
177 calculated url of the repository index page will be used. Default 177 calculated url of the repository index page will be used. Default
178 value: none. 178 value: none.
179 179
180max-atom-items:: 180max-atom-items::
181 Specifies the number of items to display in atom feeds view. Default 181 Specifies the number of items to display in atom feeds view. Default
182 value: "10". 182 value: "10".
183 183
184max-commit-count:: 184max-commit-count::
185 Specifies the number of entries to list per page in "log" view. Default 185 Specifies the number of entries to list per page in "log" view. Default
186 value: "50". 186 value: "50".
187 187
188max-message-length:: 188max-message-length::
189 Specifies the maximum number of commit message characters to display in 189 Specifies the maximum number of commit message characters to display in
190 "log" view. Default value: "80". 190 "log" view. Default value: "80".
191 191
192max-repo-count:: 192max-repo-count::
193 Specifies the number of entries to list per page on therepository 193 Specifies the number of entries to list per page on therepository
194 index page. Default value: "50". 194 index page. Default value: "50".
195 195
196max-repodesc-length:: 196max-repodesc-length::
197 Specifies the maximum number of repo description characters to display 197 Specifies the maximum number of repo description characters to display
198 on the repository index page. Default value: "80". 198 on the repository index page. Default value: "80".
199 199
200max-blob-size:: 200max-blob-size::
201 Specifies the maximum size of a blob to display HTML for in KBytes. 201 Specifies the maximum size of a blob to display HTML for in KBytes.
202 Default value: "0" (limit disabled). 202 Default value: "0" (limit disabled).
203 203
204max-stats:: 204max-stats::
205 Set the default maximum statistics period. Valid values are "week", 205 Set the default maximum statistics period. Valid values are "week",
206 "month", "quarter" and "year". If unspecified, statistics are 206 "month", "quarter" and "year". If unspecified, statistics are
207 disabled. Default value: none. See also: "repo.max-stats". 207 disabled. Default value: none. See also: "repo.max-stats".
208 208
209mimetype.<ext>:: 209mimetype.<ext>::
210 Set the mimetype for the specified filename extension. This is used 210 Set the mimetype for the specified filename extension. This is used
211 by the `plain` command when returning blob content. 211 by the `plain` command when returning blob content.
212 212
213module-link:: 213module-link::
214 Text which will be used as the formatstring for a hyperlink when a 214 Text which will be used as the formatstring for a hyperlink when a
215 submodule is printed in a directory listing. The arguments for the 215 submodule is printed in a directory listing. The arguments for the
216 formatstring are the path and SHA1 of the submodule commit. Default 216 formatstring are the path and SHA1 of the submodule commit. Default
217 value: "./?repo=%s&page=commit&id=%s" 217 value: "./?repo=%s&page=commit&id=%s"
218 218
219nocache:: 219nocache::
220 If set to the value "1" caching will be disabled. This settings is 220 If set to the value "1" caching will be disabled. This settings is
221 deprecated, and will not be honored starting with cgit-1.0. Default 221 deprecated, and will not be honored starting with cgit-1.0. Default
222 value: "0". 222 value: "0".
223 223
224noplainemail:: 224noplainemail::
225 If set to "1" showing full author email adresses will be disabled. 225 If set to "1" showing full author email adresses will be disabled.
226 Default value: "0". 226 Default value: "0".
227 227
228noheader:: 228noheader::
229 Flag which, when set to "1", will make cgit omit the standard header 229 Flag which, when set to "1", will make cgit omit the standard header
230 on all pages. Default value: none. See also: "embedded". 230 on all pages. Default value: none. See also: "embedded".
231 231
232project-list:: 232project-list::
233 A list of subdirectories inside of scan-path, relative to it, that 233 A list of subdirectories inside of scan-path, relative to it, that
234 should loaded as git repositories. This must be defined prior to 234 should loaded as git repositories. This must be defined prior to
235 scan-path. Default value: none. See also: scan-path. 235 scan-path. Default value: none. See also: scan-path.
236 236
237readme:: 237readme::
238 Text which will be used as default value for "repo.readme". Default 238 Text which will be used as default value for "repo.readme". Default
239 value: none. 239 value: none.
240 240
241remove-suffix:: 241remove-suffix::
242 If set to "1" and scan-path is enabled, if any repositories are found 242 If set to "1" and scan-path is enabled, if any repositories are found
243 with a suffix of ".git", this suffix will be removed for the url and 243 with a suffix of ".git", this suffix will be removed for the url and
244 name. Default value: "0". See also: scan-path. 244 name. Default value: "0". See also: scan-path.
245 245
246renamelimit:: 246renamelimit::
247 Maximum number of files to consider when detecting renames. The value 247 Maximum number of files to consider when detecting renames. The value
248 "-1" uses the compiletime value in git (for further info, look at 248 "-1" uses the compiletime value in git (for further info, look at
249 `man git-diff`). Default value: "-1". 249 `man git-diff`). Default value: "-1".
250 250
251repo.group:: 251repo.group::
252 Legacy alias for "section". This option is deprecated and will not be 252 Legacy alias for "section". This option is deprecated and will not be
253 supported in cgit-1.0. 253 supported in cgit-1.0.
254 254
255robots:: 255robots::
256 Text used as content for the "robots" meta-tag. Default value: 256 Text used as content for the "robots" meta-tag. Default value:
257 "index, nofollow". 257 "index, nofollow".
258 258
259root-desc:: 259root-desc::
260 Text printed below the heading on the repository index page. Default 260 Text printed below the heading on the repository index page. Default
261 value: "a fast webinterface for the git dscm". 261 value: "a fast webinterface for the git dscm".
262 262
263root-readme:: 263root-readme::
264 The content of the file specified with this option will be included 264 The content of the file specified with this option will be included
265 verbatim below the "about" link on the repository index page. Default 265 verbatim below the "about" link on the repository index page. Default
266 value: none. 266 value: none.
267 267
268root-title:: 268root-title::
269 Text printed as heading on the repository index page. Default value: 269 Text printed as heading on the repository index page. Default value:
270 "Git Repository Browser". 270 "Git Repository Browser".
271 271
272scan-path:: 272scan-path::
273 A path which will be scanned for repositories. If caching is enabled, 273 A path which will be scanned for repositories. If caching is enabled,
274 the result will be cached as a cgitrc include-file in the cache 274 the result will be cached as a cgitrc include-file in the cache
275 directory. If project-list has been defined prior to scan-path, 275 directory. If project-list has been defined prior to scan-path,
276 scan-path loads only the directories listed in the file pointed to by 276 scan-path loads only the directories listed in the file pointed to by
277 project-list. Default value: none. See also: cache-scanrc-ttl, 277 project-list. Default value: none. See also: cache-scanrc-ttl,
278 project-list. 278 project-list.
279 279
280section:: 280section::
281 The name of the current repository section - all repositories defined 281 The name of the current repository section - all repositories defined
282 after this option will inherit the current section name. Default value: 282 after this option will inherit the current section name. Default value:
283 none. 283 none.
284 284
285section-from-path:: 285section-from-path::
286 A number which, if specified before scan-path, specifies how many 286 A number which, if specified before scan-path, specifies how many
287 path elements from each repo path to use as a default section name. 287 path elements from each repo path to use as a default section name.
288 If negative, cgit will discard the specified number of path elements 288 If negative, cgit will discard the specified number of path elements
289 above the repo directory. Default value: 0. 289 above the repo directory. Default value: 0.
290 290
291side-by-side-diffs:: 291side-by-side-diffs::
292 If set to "1" shows side-by-side diffs instead of unidiffs per 292 If set to "1" shows side-by-side diffs instead of unidiffs per
293 default. Default value: "0". 293 default. Default value: "0".
294 294
295snapshots:: 295snapshots::
296 Text which specifies the default set of snapshot formats generated by 296 Text which specifies the default set of snapshot formats generated by
297 cgit. The value is a space-separated list of zero or more of the 297 cgit. The value is a space-separated list of zero or more of the
298 values "tar", "tar.gz", "tar.bz2" and "zip". Default value: none. 298 values "tar", "tar.gz", "tar.bz2" and "zip". Default value: none.
299 299
300source-filter:: 300source-filter::
301 Specifies a command which will be invoked to format plaintext blobs 301 Specifies a command which will be invoked to format plaintext blobs
302 in the tree view. The command will get the blob content on its STDIN 302 in the tree view. The command will get the blob content on its STDIN
303 and the name of the blob as its only command line argument. The STDOUT 303 and the name of the blob as its only command line argument. The STDOUT
304 from the command will be included verbatim as the blob contents, i.e. 304 from the command will be included verbatim as the blob contents, i.e.
305 this can be used to implement e.g. syntax highlighting. Default value: 305 this can be used to implement e.g. syntax highlighting. Default value:
306 none. 306 none.
307 307
308summary-branches:: 308summary-branches::
309 Specifies the number of branches to display in the repository "summary" 309 Specifies the number of branches to display in the repository "summary"
310 view. Default value: "10". 310 view. Default value: "10".
311 311
312summary-log:: 312summary-log::
313 Specifies the number of log entries to display in the repository 313 Specifies the number of log entries to display in the repository
314 "summary" view. Default value: "10". 314 "summary" view. Default value: "10".
315 315
316summary-tags:: 316summary-tags::
317 Specifies the number of tags to display in the repository "summary" 317 Specifies the number of tags to display in the repository "summary"
318 view. Default value: "10". 318 view. Default value: "10".
319 319
320strict-export:: 320strict-export::
321 Filename which, if specified, needs to be present within the repository 321 Filename which, if specified, needs to be present within the repository
322 for cgit to allow access to that repository. This can be used to emulate 322 for cgit to allow access to that repository. This can be used to emulate
323 gitweb's EXPORT_OK and STRICT_EXPORT functionality and limit cgit's 323 gitweb's EXPORT_OK and STRICT_EXPORT functionality and limit cgit's
324 repositories to match those exported by git-daemon. This option MUST come 324 repositories to match those exported by git-daemon. This option MUST come
325 before 'scan-path'. 325 before 'scan-path'.
326 326
327virtual-root:: 327virtual-root::
328 Url which, if specified, will be used as root for all cgit links. It 328 Url which, if specified, will be used as root for all cgit links. It
329 will also cause cgit to generate 'virtual urls', i.e. urls like 329 will also cause cgit to generate 'virtual urls', i.e. urls like
330 '/cgit/tree/README' as opposed to '?r=cgit&p=tree&path=README'. Default 330 '/cgit/tree/README' as opposed to '?r=cgit&p=tree&path=README'. Default
331 value: none. 331 value: none.
332 NOTE: cgit has recently learned how to use PATH_INFO to achieve the 332 NOTE: cgit has recently learned how to use PATH_INFO to achieve the
333 same kind of virtual urls, so this option will probably be deprecated. 333 same kind of virtual urls, so this option will probably be deprecated.
334 334
335REPOSITORY SETTINGS 335REPOSITORY SETTINGS
336------------------- 336-------------------
337repo.about-filter:: 337repo.about-filter::
338 Override the default about-filter. Default value: none. See also: 338 Override the default about-filter. Default value: none. See also:
339 "enable-filter-overrides". 339 "enable-filter-overrides".
340 340
341repo.clone-url:: 341repo.clone-url::
342 A list of space-separated urls which can be used to clone this repo. 342 A list of space-separated urls which can be used to clone this repo.
343 Default value: none. 343 Default value: none.
344 344
345repo.commit-filter:: 345repo.commit-filter::
346 Override the default commit-filter. Default value: none. See also: 346 Override the default commit-filter. Default value: none. See also:
347 "enable-filter-overrides". 347 "enable-filter-overrides".
348 348
349repo.defbranch:: 349repo.defbranch::
350 The name of the default branch for this repository. If no such branch 350 The name of the default branch for this repository. If no such branch
351 exists in the repository, the first branch name (when sorted) is used 351 exists in the repository, the first branch name (when sorted) is used
352 as default instead. Default value: "master". 352 as default instead. Default value: "master".
353 353
354repo.desc:: 354repo.desc::
355 The value to show as repository description. Default value: none. 355 The value to show as repository description. Default value: none.
356 356
357repo.enable-log-filecount:: 357repo.enable-log-filecount::
358 A flag which can be used to disable the global setting 358 A flag which can be used to disable the global setting
359 `enable-log-filecount'. Default value: none. 359 `enable-log-filecount'. Default value: none.
360 360
361repo.enable-log-linecount:: 361repo.enable-log-linecount::
362 A flag which can be used to disable the global setting 362 A flag which can be used to disable the global setting
363 `enable-log-linecount'. Default value: none. 363 `enable-log-linecount'. Default value: none.
364 364
365repo.enable-remote-branches:: 365repo.enable-remote-branches::
366 Flag which, when set to "1", will make cgit display remote branches 366 Flag which, when set to "1", will make cgit display remote branches
367 in the summary and refs views. Default value: <enable-remote-branches>. 367 in the summary and refs views. Default value: <enable-remote-branches>.
368 368
369repo.enable-subject-links:: 369repo.enable-subject-links::
370 A flag which can be used to override the global setting 370 A flag which can be used to override the global setting
371 `enable-subject-links'. Default value: none. 371 `enable-subject-links'. Default value: none.
372 372
373repo.max-stats:: 373repo.max-stats::
374 Override the default maximum statistics period. Valid values are equal 374 Override the default maximum statistics period. Valid values are equal
375 to the values specified for the global "max-stats" setting. Default 375 to the values specified for the global "max-stats" setting. Default
376 value: none. 376 value: none.
377 377
378repo.name:: 378repo.name::
379 The value to show as repository name. Default value: <repo.url>. 379 The value to show as repository name. Default value: <repo.url>.
380 380
381repo.owner:: 381repo.owner::
382 A value used to identify the owner of the repository. Default value: 382 A value used to identify the owner of the repository. Default value:
383 none. 383 none.
384 384
385repo.path:: 385repo.path::
386 An absolute path to the repository directory. For non-bare repositories 386 An absolute path to the repository directory. For non-bare repositories
387 this is the .git-directory. Default value: none. 387 this is the .git-directory. Default value: none.
388 388
389repo.readme:: 389repo.readme::
390 A path (relative to <repo.path>) which specifies a file to include 390 A path (relative to <repo.path>) which specifies a file to include
391 verbatim as the "About" page for this repo. You may also specify a 391 verbatim as the "About" page for this repo. You may also specify a
392 git refspec by head or by hash by prepending the refspec followed by 392 git refspec by head or by hash by prepending the refspec followed by
393 a colon. For example, "master:docs/readme.mkd" Default value: <readme>. 393 a colon. For example, "master:docs/readme.mkd" Default value: <readme>.
394 394
395repo.snapshots:: 395repo.snapshots::
396 A mask of allowed snapshot-formats for this repo, restricted by the 396 A mask of allowed snapshot-formats for this repo, restricted by the
397 "snapshots" global setting. Default value: <snapshots>. 397 "snapshots" global setting. Default value: <snapshots>.
398 398
399repo.section:: 399repo.section::
400 Override the current section name for this repository. Default value: 400 Override the current section name for this repository. Default value:
401 none. 401 none.
402 402
403repo.source-filter:: 403repo.source-filter::
404 Override the default source-filter. Default value: none. See also: 404 Override the default source-filter. Default value: none. See also:
405 "enable-filter-overrides". 405 "enable-filter-overrides".
406 406
407repo.url:: 407repo.url::
408 The relative url used to access the repository. This must be the first 408 The relative url used to access the repository. This must be the first
409 setting specified for each repo. Default value: none. 409 setting specified for each repo. Default value: none.
410 410
411 411
412REPOSITORY-SPECIFIC CGITRC FILE 412REPOSITORY-SPECIFIC CGITRC FILE
413------------------------------- 413-------------------------------
414When the option "scan-path" is used to auto-discover git repositories, cgit 414When the option "scan-path" is used to auto-discover git repositories, cgit
415will try to parse the file "cgitrc" within any found repository. Such a 415will try to parse the file "cgitrc" within any found repository. Such a
416repo-specific config file may contain any of the repo-specific options 416repo-specific config file may contain any of the repo-specific options
417described above, except "repo.url" and "repo.path". Additionally, the "filter" 417described above, except "repo.url" and "repo.path". Additionally, the "filter"
418options are only acknowledged in repo-specific config files when 418options are only acknowledged in repo-specific config files when
419"enable-filter-overrides" is set to "1". 419"enable-filter-overrides" is set to "1".
420 420
421Note: the "repo." prefix is dropped from the option names in repo-specific 421Note: the "repo." prefix is dropped from the option names in repo-specific
422config files, e.g. "repo.desc" becomes "desc". 422config files, e.g. "repo.desc" becomes "desc".
423 423
424 424
425EXAMPLE CGITRC FILE 425EXAMPLE CGITRC FILE
426------------------- 426-------------------
427 427
428.... 428....
429# Enable caching of up to 1000 output entriess 429# Enable caching of up to 1000 output entriess
430cache-size=1000 430cache-size=1000
431 431
432 432
433# Specify some default clone prefixes 433# Specify some default clone prefixes
434clone-prefix=git://foobar.com ssh://foobar.com/pub/git http://foobar.com/git 434clone-prefix=git://example.com ssh://example.com/pub/git http://example.com/git
435 435
436# Specify the css url 436# Specify the css url
437css=/css/cgit.css 437css=/css/cgit.css
438 438
439 439
440# Show extra links for each repository on the index page 440# Show extra links for each repository on the index page
441enable-index-links=1 441enable-index-links=1
442 442
443 443
444# Show number of affected files per commit on the log pages 444# Show number of affected files per commit on the log pages
445enable-log-filecount=1 445enable-log-filecount=1
446 446
447 447
448# Show number of added/removed lines per commit on the log pages 448# Show number of added/removed lines per commit on the log pages
449enable-log-linecount=1 449enable-log-linecount=1
450 450
451 451
452# Add a cgit favicon 452# Add a cgit favicon
453favicon=/favicon.ico 453favicon=/favicon.ico
454 454
455 455
456# Use a custom logo 456# Use a custom logo
457logo=/img/mylogo.png 457logo=/img/mylogo.png
458 458
459 459
460# Enable statistics per week, month and quarter 460# Enable statistics per week, month and quarter
461max-stats=quarter 461max-stats=quarter
462 462
463 463
464# Set the title and heading of the repository index page 464# Set the title and heading of the repository index page
465root-title=foobar.com git repositories 465root-title=example.com git repositories
466 466
467 467
468# Set a subheading for the repository index page 468# Set a subheading for the repository index page
469root-desc=tracking the foobar development 469root-desc=tracking the foobar development
470 470
471 471
472# Include some more info about foobar.com on the index page 472# Include some more info about example.com on the index page
473root-readme=/var/www/htdocs/about.html 473root-readme=/var/www/htdocs/about.html
474 474
475 475
476# Allow download of tar.gz, tar.bz2 and zip-files 476# Allow download of tar.gz, tar.bz2 and zip-files
477snapshots=tar.gz tar.bz2 zip 477snapshots=tar.gz tar.bz2 zip
478 478
479 479
480## 480##
481## List of common mimetypes 481## List of common mimetypes
482## 482##
483 483
484mimetype.gif=image/gif 484mimetype.gif=image/gif
485mimetype.html=text/html 485mimetype.html=text/html
486mimetype.jpg=image/jpeg 486mimetype.jpg=image/jpeg
487mimetype.jpeg=image/jpeg 487mimetype.jpeg=image/jpeg
488mimetype.pdf=application/pdf 488mimetype.pdf=application/pdf
489mimetype.png=image/png 489mimetype.png=image/png
490mimetype.svg=image/svg+xml 490mimetype.svg=image/svg+xml
491 491
492 492
493## 493##
494## List of repositories. 494## List of repositories.
495## PS: Any repositories listed when section is unset will not be 495## PS: Any repositories listed when section is unset will not be
496## displayed under a section heading 496## displayed under a section heading
497## PPS: This list could be kept in a different file (e.g. '/etc/cgitrepos') 497## PPS: This list could be kept in a different file (e.g. '/etc/cgitrepos')
498## and included like this: 498## and included like this:
499## include=/etc/cgitrepos 499## include=/etc/cgitrepos
500## 500##
501 501
502 502
503repo.url=foo 503repo.url=foo
504repo.path=/pub/git/foo.git 504repo.path=/pub/git/foo.git
505repo.desc=the master foo repository 505repo.desc=the master foo repository
506repo.owner=fooman@foobar.com 506repo.owner=fooman@example.com
507repo.readme=info/web/about.html 507repo.readme=info/web/about.html
508 508
509 509
510repo.url=bar 510repo.url=bar
511repo.path=/pub/git/bar.git 511repo.path=/pub/git/bar.git
512repo.desc=the bars for your foo 512repo.desc=the bars for your foo
513repo.owner=barman@foobar.com 513repo.owner=barman@example.com
514repo.readme=info/web/about.html 514repo.readme=info/web/about.html
515 515
516 516
517# The next repositories will be displayed under the 'extras' heading 517# The next repositories will be displayed under the 'extras' heading
518section=extras 518section=extras
519 519
520 520
521repo.url=baz 521repo.url=baz
522repo.path=/pub/git/baz.git 522repo.path=/pub/git/baz.git
523repo.desc=a set of extensions for bar users 523repo.desc=a set of extensions for bar users
524 524
525repo.url=wiz 525repo.url=wiz
526repo.path=/pub/git/wiz.git 526repo.path=/pub/git/wiz.git
527repo.desc=the wizard of foo 527repo.desc=the wizard of foo
528 528
529 529
530# Add some mirrored repositories 530# Add some mirrored repositories
531section=mirrors 531section=mirrors
532 532
533 533
534repo.url=git 534repo.url=git
535repo.path=/pub/git/git.git 535repo.path=/pub/git/git.git
536repo.desc=the dscm 536repo.desc=the dscm
537 537
538 538
539repo.url=linux 539repo.url=linux
540repo.path=/pub/git/linux.git 540repo.path=/pub/git/linux.git
541repo.desc=the kernel 541repo.desc=the kernel
542 542
543# Disable adhoc downloads of this repo 543# Disable adhoc downloads of this repo
544repo.snapshots=0 544repo.snapshots=0
545 545
546# Disable line-counts for this repo 546# Disable line-counts for this repo
547repo.enable-log-linecount=0 547repo.enable-log-linecount=0
548 548
549# Restrict the max statistics period for this repo 549# Restrict the max statistics period for this repo
550repo.max-stats=month 550repo.max-stats=month
551.... 551....
552 552
553 553
554BUGS 554BUGS
555---- 555----
556Comments currently cannot appear on the same line as a setting; the comment 556Comments currently cannot appear on the same line as a setting; the comment
557will be included as part of the value. E.g. this line: 557will be included as part of the value. E.g. this line:
558 558
559 robots=index # allow indexing 559 robots=index # allow indexing
560 560
561will generate the following html element: 561will generate the following html element:
562 562
563 <meta name='robots' content='index # allow indexing'/> 563 <meta name='robots' content='index # allow indexing'/>
564 564
565 565
566 566
567AUTHOR 567AUTHOR
568------ 568------
569Lars Hjemli <hjemli@gmail.com> 569Lars Hjemli <hjemli@gmail.com>
570Jason A. Donenfeld <Jason@zx2c4.com> 570Jason A. Donenfeld <Jason@zx2c4.com>