aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile6
-rw-r--r--cgit.c42
-rw-r--r--cgit.css358
-rw-r--r--cgit.h8
-rw-r--r--cgitrc.5.txt67
-rw-r--r--cmd.c44
-rw-r--r--cmd.h3
-rwxr-xr-xfilters/commit-links.sh18
-rwxr-xr-xfilters/syntax-highlighting.sh11
-rw-r--r--html.c8
-rw-r--r--html.h1
-rw-r--r--shared.c29
-rwxr-xr-xtests/setup.sh1
-rwxr-xr-xtests/t0102-summary.sh6
-rw-r--r--ui-commit.c10
-rw-r--r--ui-diff.c81
-rw-r--r--ui-diff.h4
-rw-r--r--ui-log.c29
-rw-r--r--ui-repolist.c15
-rw-r--r--ui-stats.c51
-rw-r--r--ui-summary.c2
21 files changed, 507 insertions, 287 deletions
diff --git a/Makefile b/Makefile
index 6de072a..eac24ad 100644
--- a/Makefile
+++ b/Makefile
@@ -198,9 +198,9 @@ install-pdf: doc-pdf
198 $(INSTALL) -m 0644 $(DOC_PDF) $(DESTDIR)$(pdfdir) 198 $(INSTALL) -m 0644 $(DOC_PDF) $(DESTDIR)$(pdfdir)
199 199
200uninstall: 200uninstall:
201 rm -f $(CGIT_SCRIPT_PATH)/$(CGIT_SCRIPT_NAME) 201 rm -f $(DESTDIR)$(CGIT_SCRIPT_PATH)/$(CGIT_SCRIPT_NAME)
202 rm -f $(CGIT_DATA_PATH)/cgit.css 202 rm -f $(DESTDIR)$(CGIT_DATA_PATH)/cgit.css
203 rm -f $(CGIT_DATA_PATH)/cgit.png 203 rm -f $(DESTDIR)$(CGIT_DATA_PATH)/cgit.png
204 204
205uninstall-doc: uninstall-man uninstall-html uninstall-pdf 205uninstall-doc: uninstall-man uninstall-html uninstall-pdf
206 206
diff --git a/cgit.c b/cgit.c
index 435ce5a..1d50129 100644
--- a/cgit.c
+++ b/cgit.c
@@ -26,14 +26,27 @@ void add_mimetype(const char *name, const char *value)
26 item->util = xstrdup(value); 26 item->util = xstrdup(value);
27} 27}
28 28
29struct cgit_filter *new_filter(const char *cmd, int extra_args) 29struct cgit_filter *new_filter(const char *cmd, filter_type filtertype)
30{ 30{
31 struct cgit_filter *f; 31 struct cgit_filter *f;
32 int args_size = 0; 32 int args_size = 0;
33 int extra_args;
33 34
34 if (!cmd || !cmd[0]) 35 if (!cmd || !cmd[0])
35 return NULL; 36 return NULL;
36 37
38 switch (filtertype) {
39 case SOURCE:
40 extra_args = 1;
41 break;
42
43 case ABOUT:
44 case COMMIT:
45 default:
46 extra_args = 0;
47 break;
48 }
49
37 f = xmalloc(sizeof(struct cgit_filter)); 50 f = xmalloc(sizeof(struct cgit_filter));
38 f->cmd = xstrdup(cmd); 51 f->cmd = xstrdup(cmd);
39 args_size = (2 + extra_args) * sizeof(char *); 52 args_size = (2 + extra_args) * sizeof(char *);
@@ -83,11 +96,11 @@ void repo_config(struct cgit_repo *repo, const char *name, const char *value)
83 repo->logo_link = xstrdup(value); 96 repo->logo_link = xstrdup(value);
84 else if (ctx.cfg.enable_filter_overrides) { 97 else if (ctx.cfg.enable_filter_overrides) {
85 if (!strcmp(name, "about-filter")) 98 if (!strcmp(name, "about-filter"))
86 repo->about_filter = new_filter(value, 0); 99 repo->about_filter = new_filter(value, ABOUT);
87 else if (!strcmp(name, "commit-filter")) 100 else if (!strcmp(name, "commit-filter"))
88 repo->commit_filter = new_filter(value, 0); 101 repo->commit_filter = new_filter(value, COMMIT);
89 else if (!strcmp(name, "source-filter")) 102 else if (!strcmp(name, "source-filter"))
90 repo->source_filter = new_filter(value, 1); 103 repo->source_filter = new_filter(value, SOURCE);
91 } 104 }
92} 105}
93 106
@@ -147,6 +160,8 @@ void config_cb(const char *name, const char *value)
147 ctx.cfg.enable_filter_overrides = atoi(value); 160 ctx.cfg.enable_filter_overrides = atoi(value);
148 else if (!strcmp(name, "enable-gitweb-owner")) 161 else if (!strcmp(name, "enable-gitweb-owner"))
149 ctx.cfg.enable_gitweb_owner = atoi(value); 162 ctx.cfg.enable_gitweb_owner = atoi(value);
163 else if (!strcmp(name, "enable-http-clone"))
164 ctx.cfg.enable_http_clone = atoi(value);
150 else if (!strcmp(name, "enable-index-links")) 165 else if (!strcmp(name, "enable-index-links"))
151 ctx.cfg.enable_index_links = atoi(value); 166 ctx.cfg.enable_index_links = atoi(value);
152 else if (!strcmp(name, "enable-commit-graph")) 167 else if (!strcmp(name, "enable-commit-graph"))
@@ -178,9 +193,9 @@ void config_cb(const char *name, const char *value)
178 else if (!strcmp(name, "cache-dynamic-ttl")) 193 else if (!strcmp(name, "cache-dynamic-ttl"))
179 ctx.cfg.cache_dynamic_ttl = atoi(value); 194 ctx.cfg.cache_dynamic_ttl = atoi(value);
180 else if (!strcmp(name, "about-filter")) 195 else if (!strcmp(name, "about-filter"))
181 ctx.cfg.about_filter = new_filter(value, 0); 196 ctx.cfg.about_filter = new_filter(value, ABOUT);
182 else if (!strcmp(name, "commit-filter")) 197 else if (!strcmp(name, "commit-filter"))
183 ctx.cfg.commit_filter = new_filter(value, 0); 198 ctx.cfg.commit_filter = new_filter(value, COMMIT);
184 else if (!strcmp(name, "embedded")) 199 else if (!strcmp(name, "embedded"))
185 ctx.cfg.embedded = atoi(value); 200 ctx.cfg.embedded = atoi(value);
186 else if (!strcmp(name, "max-atom-items")) 201 else if (!strcmp(name, "max-atom-items"))
@@ -210,7 +225,7 @@ void config_cb(const char *name, const char *value)
210 else if (!strcmp(name, "section-from-path")) 225 else if (!strcmp(name, "section-from-path"))
211 ctx.cfg.section_from_path = atoi(value); 226 ctx.cfg.section_from_path = atoi(value);
212 else if (!strcmp(name, "source-filter")) 227 else if (!strcmp(name, "source-filter"))
213 ctx.cfg.source_filter = new_filter(value, 1); 228 ctx.cfg.source_filter = new_filter(value, SOURCE);
214 else if (!strcmp(name, "summary-log")) 229 else if (!strcmp(name, "summary-log"))
215 ctx.cfg.summary_log = atoi(value); 230 ctx.cfg.summary_log = atoi(value);
216 else if (!strcmp(name, "summary-branches")) 231 else if (!strcmp(name, "summary-branches"))
@@ -229,6 +244,8 @@ void config_cb(const char *name, const char *value)
229 ctx.cfg.robots = xstrdup(value); 244 ctx.cfg.robots = xstrdup(value);
230 else if (!strcmp(name, "clone-prefix")) 245 else if (!strcmp(name, "clone-prefix"))
231 ctx.cfg.clone_prefix = xstrdup(value); 246 ctx.cfg.clone_prefix = xstrdup(value);
247 else if (!strcmp(name, "clone-url"))
248 ctx.cfg.clone_url = xstrdup(value);
232 else if (!strcmp(name, "local-time")) 249 else if (!strcmp(name, "local-time"))
233 ctx.cfg.local_time = atoi(value); 250 ctx.cfg.local_time = atoi(value);
234 else if (!prefixcmp(name, "mimetype.")) 251 else if (!prefixcmp(name, "mimetype."))
@@ -313,6 +330,7 @@ static void prepare_context(struct cgit_context *ctx)
313 ctx->cfg.logo = "/cgit.png"; 330 ctx->cfg.logo = "/cgit.png";
314 ctx->cfg.local_time = 0; 331 ctx->cfg.local_time = 0;
315 ctx->cfg.enable_gitweb_owner = 1; 332 ctx->cfg.enable_gitweb_owner = 1;
333 ctx->cfg.enable_http_clone = 1;
316 ctx->cfg.enable_tree_linenumbers = 1; 334 ctx->cfg.enable_tree_linenumbers = 1;
317 ctx->cfg.max_repo_count = 50; 335 ctx->cfg.max_repo_count = 50;
318 ctx->cfg.max_commit_count = 50; 336 ctx->cfg.max_commit_count = 50;
@@ -444,7 +462,7 @@ static int prepare_repo_cmd(struct cgit_context *ctx)
444 tmp = xstrdup(ctx->qry.head); 462 tmp = xstrdup(ctx->qry.head);
445 ctx->qry.head = ctx->repo->defbranch; 463 ctx->qry.head = ctx->repo->defbranch;
446 ctx->page.status = 404; 464 ctx->page.status = 404;
447 ctx->page.statusmsg = "not found"; 465 ctx->page.statusmsg = "Not found";
448 cgit_print_http_headers(ctx); 466 cgit_print_http_headers(ctx);
449 cgit_print_docstart(ctx); 467 cgit_print_docstart(ctx);
450 cgit_print_pageheader(ctx); 468 cgit_print_pageheader(ctx);
@@ -452,6 +470,7 @@ static int prepare_repo_cmd(struct cgit_context *ctx)
452 cgit_print_docend(); 470 cgit_print_docend();
453 return 1; 471 return 1;
454 } 472 }
473 cgit_prepare_repo_env(ctx->repo);
455 return 0; 474 return 0;
456} 475}
457 476
@@ -463,6 +482,8 @@ static void process_request(void *cbdata)
463 cmd = cgit_get_cmd(ctx); 482 cmd = cgit_get_cmd(ctx);
464 if (!cmd) { 483 if (!cmd) {
465 ctx->page.title = "cgit error"; 484 ctx->page.title = "cgit error";
485 ctx->page.status = 404;
486 ctx->page.statusmsg = "Not found";
466 cgit_print_http_headers(ctx); 487 cgit_print_http_headers(ctx);
467 cgit_print_docstart(ctx); 488 cgit_print_docstart(ctx);
468 cgit_print_pageheader(ctx); 489 cgit_print_pageheader(ctx);
@@ -471,6 +492,11 @@ static void process_request(void *cbdata)
471 return; 492 return;
472 } 493 }
473 494
495 if (!ctx->cfg.enable_http_clone && cmd->is_clone) {
496 html_status(404, "Not found", 0);
497 return;
498 }
499
474 /* If cmd->want_vpath is set, assume ctx->qry.path contains a "virtual" 500 /* If cmd->want_vpath is set, assume ctx->qry.path contains a "virtual"
475 * in-project path limit to be made available at ctx->qry.vpath. 501 * in-project path limit to be made available at ctx->qry.vpath.
476 * Otherwise, no path limit is in effect (ctx->qry.vpath = NULL). 502 * Otherwise, no path limit is in effect (ctx->qry.vpath = NULL).
diff --git a/cgit.css b/cgit.css
index 8f409c3..e06c261 100644
--- a/cgit.css
+++ b/cgit.css
@@ -1,4 +1,4 @@
1body, table, form { 1body, div#cgit table, div#cgit form {
2 padding: 0em; 2 padding: 0em;
3 margin: 0em; 3 margin: 0em;
4} 4}
@@ -11,39 +11,40 @@ body {
11 padding: 4px; 11 padding: 4px;
12} 12}
13 13
14a { 14div#cgit a {
15 color: blue; 15 color: blue;
16 text-decoration: none; 16 text-decoration: none;
17} 17}
18 18
19a:hover { 19div#cgit a:hover {
20 text-decoration: underline; 20 text-decoration: underline;
21} 21}
22 22
23table { 23div#cgit table {
24 border-collapse: collapse; 24 border-collapse: collapse;
25} 25}
26 26
27table#header { 27div#cgit table#header {
28 width: 100%; 28 width: 100%;
29 margin-bottom: 1em; 29 margin-bottom: 1em;
30} 30}
31 31
32table#header td.logo { 32div#cgit table#header td.logo {
33 width: 96px; 33 width: 96px;
34 vertical-align: top;
34} 35}
35 36
36table#header td.main { 37div#cgit table#header td.main {
37 font-size: 250%; 38 font-size: 250%;
38 padding-left: 10px; 39 padding-left: 10px;
39 white-space: nowrap; 40 white-space: nowrap;
40} 41}
41 42
42table#header td.main a { 43div#cgit table#header td.main a {
43 color: #000; 44 color: #000;
44} 45}
45 46
46table#header td.form { 47div#cgit table#header td.form {
47 text-align: right; 48 text-align: right;
48 vertical-align: bottom; 49 vertical-align: bottom;
49 padding-right: 1em; 50 padding-right: 1em;
@@ -51,19 +52,19 @@ table#header td.form {
51 white-space: nowrap; 52 white-space: nowrap;
52} 53}
53 54
54table#header td.form form, 55div#cgit table#header td.form form,
55table#header td.form input, 56div#cgit table#header td.form input,
56table#header td.form select { 57div#cgit table#header td.form select {
57 font-size: 90%; 58 font-size: 90%;
58} 59}
59 60
60table#header td.sub { 61div#cgit table#header td.sub {
61 color: #777; 62 color: #777;
62 border-top: solid 1px #ccc; 63 border-top: solid 1px #ccc;
63 padding-left: 10px; 64 padding-left: 10px;
64} 65}
65 66
66table.tabs { 67div#cgit table.tabs {
67 border-bottom: solid 3px #ccc; 68 border-bottom: solid 3px #ccc;
68 border-collapse: collapse; 69 border-collapse: collapse;
69 margin-top: 2em; 70 margin-top: 2em;
@@ -71,74 +72,74 @@ table.tabs {
71 width: 100%; 72 width: 100%;
72} 73}
73 74
74table.tabs td { 75div#cgit table.tabs td {
75 padding: 0px 1em; 76 padding: 0px 1em;
76 vertical-align: bottom; 77 vertical-align: bottom;
77} 78}
78 79
79table.tabs td a { 80div#cgit table.tabs td a {
80 padding: 2px 0.75em; 81 padding: 2px 0.75em;
81 color: #777; 82 color: #777;
82 font-size: 110%; 83 font-size: 110%;
83} 84}
84 85
85table.tabs td a.active { 86div#cgit table.tabs td a.active {
86 color: #000; 87 color: #000;
87 background-color: #ccc; 88 background-color: #ccc;
88} 89}
89 90
90table.tabs td.form { 91div#cgit table.tabs td.form {
91 text-align: right; 92 text-align: right;
92} 93}
93 94
94table.tabs td.form form { 95div#cgit table.tabs td.form form {
95 padding-bottom: 2px; 96 padding-bottom: 2px;
96 font-size: 90%; 97 font-size: 90%;
97 white-space: nowrap; 98 white-space: nowrap;
98} 99}
99 100
100table.tabs td.form input, 101div#cgit table.tabs td.form input,
101table.tabs td.form select { 102div#cgit table.tabs td.form select {
102 font-size: 90%; 103 font-size: 90%;
103} 104}
104 105
105div.path { 106div#cgit div.path {
106 margin: 0px; 107 margin: 0px;
107 padding: 5px 2em 2px 2em; 108 padding: 5px 2em 2px 2em;
108 color: #000; 109 color: #000;
109 background-color: #eee; 110 background-color: #eee;
110} 111}
111 112
112div.content { 113div#cgit div.content {
113 margin: 0px; 114 margin: 0px;
114 padding: 2em; 115 padding: 2em;
115 border-bottom: solid 3px #ccc; 116 border-bottom: solid 3px #ccc;
116} 117}
117 118
118 119
119table.list { 120div#cgit table.list {
120 width: 100%; 121 width: 100%;
121 border: none; 122 border: none;
122 border-collapse: collapse; 123 border-collapse: collapse;
123} 124}
124 125
125table.list tr { 126div#cgit table.list tr {
126 background: white; 127 background: white;
127} 128}
128 129
129table.list tr.logheader { 130div#cgit table.list tr.logheader {
130 background: #eee; 131 background: #eee;
131} 132}
132 133
133table.list tr:hover { 134div#cgit table.list tr:hover {
134 background: #eee; 135 background: #eee;
135} 136}
136 137
137table.list tr.nohover:hover { 138div#cgit table.list tr.nohover:hover {
138 background: white; 139 background: white;
139} 140}
140 141
141table.list th { 142div#cgit table.list th {
142 font-weight: bold; 143 font-weight: bold;
143 /* color: #888; 144 /* color: #888;
144 border-top: dashed 1px #888; 145 border-top: dashed 1px #888;
@@ -148,93 +149,93 @@ table.list th {
148 vertical-align: baseline; 149 vertical-align: baseline;
149} 150}
150 151
151table.list td { 152div#cgit table.list td {
152 border: none; 153 border: none;
153 padding: 0.1em 0.5em 0.1em 0.5em; 154 padding: 0.1em 0.5em 0.1em 0.5em;
154} 155}
155 156
156table.list td.commitgraph { 157div#cgit table.list td.commitgraph {
157 font-family: monospace; 158 font-family: monospace;
158 white-space: pre; 159 white-space: pre;
159} 160}
160 161
161table.list td.commitgraph .column1 { 162div#cgit table.list td.commitgraph .column1 {
162 color: #a00; 163 color: #a00;
163} 164}
164 165
165table.list td.commitgraph .column2 { 166div#cgit table.list td.commitgraph .column2 {
166 color: #0a0; 167 color: #0a0;
167} 168}
168 169
169table.list td.commitgraph .column3 { 170div#cgit table.list td.commitgraph .column3 {
170 color: #aa0; 171 color: #aa0;
171} 172}
172 173
173table.list td.commitgraph .column4 { 174div#cgit table.list td.commitgraph .column4 {
174 color: #00a; 175 color: #00a;
175} 176}
176 177
177table.list td.commitgraph .column5 { 178div#cgit table.list td.commitgraph .column5 {
178 color: #a0a; 179 color: #a0a;
179} 180}
180 181
181table.list td.commitgraph .column6 { 182div#cgit table.list td.commitgraph .column6 {
182 color: #0aa; 183 color: #0aa;
183} 184}
184 185
185table.list td.logsubject { 186div#cgit table.list td.logsubject {
186 font-family: monospace; 187 font-family: monospace;
187 font-weight: bold; 188 font-weight: bold;
188} 189}
189 190
190table.list td.logmsg { 191div#cgit table.list td.logmsg {
191 font-family: monospace; 192 font-family: monospace;
192 white-space: pre; 193 white-space: pre;
193 padding: 0 0.5em; 194 padding: 0 0.5em;
194} 195}
195 196
196table.list td a { 197div#cgit table.list td a {
197 color: black; 198 color: black;
198} 199}
199 200
200table.list td a.ls-dir { 201div#cgit table.list td a.ls-dir {
201 font-weight: bold; 202 font-weight: bold;
202 color: #00f; 203 color: #00f;
203} 204}
204 205
205table.list td a:hover { 206div#cgit table.list td a:hover {
206 color: #00f; 207 color: #00f;
207} 208}
208 209
209img { 210div#cgit img {
210 border: none; 211 border: none;
211} 212}
212 213
213input#switch-btn { 214div#cgit input#switch-btn {
214 margin: 2px 0px 0px 0px; 215 margin: 2px 0px 0px 0px;
215} 216}
216 217
217td#sidebar input.txt { 218div#cgit td#sidebar input.txt {
218 width: 100%; 219 width: 100%;
219 margin: 2px 0px 0px 0px; 220 margin: 2px 0px 0px 0px;
220} 221}
221 222
222table#grid { 223div#cgit table#grid {
223 margin: 0px; 224 margin: 0px;
224} 225}
225 226
226td#content { 227div#cgit td#content {
227 vertical-align: top; 228 vertical-align: top;
228 padding: 1em 2em 1em 1em; 229 padding: 1em 2em 1em 1em;
229 border: none; 230 border: none;
230} 231}
231 232
232div#summary { 233div#cgit div#summary {
233 vertical-align: top; 234 vertical-align: top;
234 margin-bottom: 1em; 235 margin-bottom: 1em;
235} 236}
236 237
237table#downloads { 238div#cgit table#downloads {
238 float: right; 239 float: right;
239 border-collapse: collapse; 240 border-collapse: collapse;
240 border: solid 1px #777; 241 border: solid 1px #777;
@@ -242,125 +243,152 @@ table#downloads {
242 margin-bottom: 0.5em; 243 margin-bottom: 0.5em;
243} 244}
244 245
245table#downloads th { 246div#cgit table#downloads th {
246 background-color: #ccc; 247 background-color: #ccc;
247} 248}
248 249
249div#blob { 250div#cgit div#blob {
250 border: solid 1px black; 251 border: solid 1px black;
251} 252}
252 253
253div.error { 254div#cgit div.error {
254 color: red; 255 color: red;
255 font-weight: bold; 256 font-weight: bold;
256 margin: 1em 2em; 257 margin: 1em 2em;
257} 258}
258 259
259a.ls-blob, a.ls-dir, a.ls-mod { 260div#cgit a.ls-blob, div#cgit a.ls-dir, div#cgit a.ls-mod {
260 font-family: monospace; 261 font-family: monospace;
261} 262}
262 263
263td.ls-size { 264div#cgit td.ls-size {
264 text-align: right; 265 text-align: right;
265 font-family: monospace; 266 font-family: monospace;
266 width: 10em; 267 width: 10em;
267} 268}
268 269
269td.ls-mode { 270div#cgit td.ls-mode {
270 font-family: monospace; 271 font-family: monospace;
271 width: 10em; 272 width: 10em;
272} 273}
273 274
274table.blob { 275div#cgit table.blob {
275 margin-top: 0.5em; 276 margin-top: 0.5em;
276 border-top: solid 1px black; 277 border-top: solid 1px black;
277} 278}
278 279
279table.blob td.lines { 280div#cgit table.blob td.lines {
280 margin: 0; padding: 0 0 0 0.5em; 281 margin: 0; padding: 0 0 0 0.5em;
281 vertical-align: top; 282 vertical-align: top;
282 color: black; 283 color: black;
283} 284}
284 285
285table.blob td.linenumbers { 286div#cgit table.blob td.linenumbers {
286 margin: 0; padding: 0 0.5em 0 0.5em; 287 margin: 0; padding: 0 0.5em 0 0.5em;
287 vertical-align: top; 288 vertical-align: top;
288 text-align: right; 289 text-align: right;
289 border-right: 1px solid gray; 290 border-right: 1px solid gray;
290} 291}
291 292
292table.blob pre { 293div#cgit table.blob pre {
293 padding: 0; margin: 0; 294 padding: 0; margin: 0;
294} 295}
295 296
296table.blob a.no, table.ssdiff a.no { 297div#cgit table.blob a.no, div#cgit table.ssdiff a.no {
297 color: gray; 298 color: gray;
298 text-align: right; 299 text-align: right;
299 text-decoration: none; 300 text-decoration: none;
300} 301}
301 302
302table.blob a.no a:hover { 303div#cgit table.blob a.no a:hover {
303 color: black; 304 color: black;
304} 305}
305 306
306table.bin-blob { 307div#cgit table.bin-blob {
307 margin-top: 0.5em; 308 margin-top: 0.5em;
308 border: solid 1px black; 309 border: solid 1px black;
309} 310}
310 311
311table.bin-blob th { 312div#cgit table.bin-blob th {
312 font-family: monospace; 313 font-family: monospace;
313 white-space: pre; 314 white-space: pre;
314 border: solid 1px #777; 315 border: solid 1px #777;
315 padding: 0.5em 1em; 316 padding: 0.5em 1em;
316} 317}
317 318
318table.bin-blob td { 319div#cgit table.bin-blob td {
319 font-family: monospace; 320 font-family: monospace;
320 white-space: pre; 321 white-space: pre;
321 border-left: solid 1px #777; 322 border-left: solid 1px #777;
322 padding: 0em 1em; 323 padding: 0em 1em;
323} 324}
324 325
325table.nowrap td { 326div#cgit table.nowrap td {
326 white-space: nowrap; 327 white-space: nowrap;
327} 328}
328 329
329table.commit-info { 330div#cgit table.commit-info {
330 border-collapse: collapse; 331 border-collapse: collapse;
331 margin-top: 1.5em; 332 margin-top: 1.5em;
332} 333}
333 334
334table.commit-info th { 335div#cgit div.cgit-panel {
336 float: right;
337 margin-top: 1.5em;
338}
339
340div#cgit div.cgit-panel table {
341 border-collapse: collapse;
342 border: solid 1px #aaa;
343 background-color: #eee;
344}
345
346div#cgit div.cgit-panel th {
347 text-align: center;
348}
349
350div#cgit div.cgit-panel td {
351 padding: 0.25em 0.5em;
352}
353
354div#cgit div.cgit-panel td.label {
355 padding-right: 0.5em;
356}
357
358div#cgit div.cgit-panel td.ctrl {
359 padding-left: 0.5em;
360}
361
362div#cgit table.commit-info th {
335 text-align: left; 363 text-align: left;
336 font-weight: normal; 364 font-weight: normal;
337 padding: 0.1em 1em 0.1em 0.1em; 365 padding: 0.1em 1em 0.1em 0.1em;
338 vertical-align: top; 366 vertical-align: top;
339} 367}
340 368
341table.commit-info td { 369div#cgit table.commit-info td {
342 font-weight: normal; 370 font-weight: normal;
343 padding: 0.1em 1em 0.1em 0.1em; 371 padding: 0.1em 1em 0.1em 0.1em;
344} 372}
345 373
346div.commit-subject { 374div#cgit div.commit-subject {
347 font-weight: bold; 375 font-weight: bold;
348 font-size: 125%; 376 font-size: 125%;
349 margin: 1.5em 0em 0.5em 0em; 377 margin: 1.5em 0em 0.5em 0em;
350 padding: 0em; 378 padding: 0em;
351} 379}
352 380
353div.commit-msg { 381div#cgit div.commit-msg {
354 white-space: pre; 382 white-space: pre;
355 font-family: monospace; 383 font-family: monospace;
356} 384}
357 385
358div.notes-header { 386div#cgit div.notes-header {
359 font-weight: bold; 387 font-weight: bold;
360 padding-top: 1.5em; 388 padding-top: 1.5em;
361} 389}
362 390
363div.notes { 391div#cgit div.notes {
364 white-space: pre; 392 white-space: pre;
365 font-family: monospace; 393 font-family: monospace;
366 border: solid 1px #ee9; 394 border: solid 1px #ee9;
@@ -369,22 +397,22 @@ div.notes {
369 float: left; 397 float: left;
370} 398}
371 399
372div.notes-footer { 400div#cgit div.notes-footer {
373 clear: left; 401 clear: left;
374} 402}
375 403
376div.diffstat-header { 404div#cgit div.diffstat-header {
377 font-weight: bold; 405 font-weight: bold;
378 padding-top: 1.5em; 406 padding-top: 1.5em;
379} 407}
380 408
381table.diffstat { 409div#cgit table.diffstat {
382 border-collapse: collapse; 410 border-collapse: collapse;
383 border: solid 1px #aaa; 411 border: solid 1px #aaa;
384 background-color: #eee; 412 background-color: #eee;
385} 413}
386 414
387table.diffstat th { 415div#cgit table.diffstat th {
388 font-weight: normal; 416 font-weight: normal;
389 text-align: left; 417 text-align: left;
390 text-decoration: underline; 418 text-decoration: underline;
@@ -392,282 +420,286 @@ table.diffstat th {
392 font-size: 100%; 420 font-size: 100%;
393} 421}
394 422
395table.diffstat td { 423div#cgit table.diffstat td {
396 padding: 0.2em 0.2em 0.1em 0.1em; 424 padding: 0.2em 0.2em 0.1em 0.1em;
397 font-size: 100%; 425 font-size: 100%;
398 border: none; 426 border: none;
399} 427}
400 428
401table.diffstat td.mode { 429div#cgit table.diffstat td.mode {
402 white-space: nowrap; 430 white-space: nowrap;
403} 431}
404 432
405table.diffstat td span.modechange { 433div#cgit table.diffstat td span.modechange {
406 padding-left: 1em; 434 padding-left: 1em;
407 color: red; 435 color: red;
408} 436}
409 437
410table.diffstat td.add a { 438div#cgit table.diffstat td.add a {
411 color: green; 439 color: green;
412} 440}
413 441
414table.diffstat td.del a { 442div#cgit table.diffstat td.del a {
415 color: red; 443 color: red;
416} 444}
417 445
418table.diffstat td.upd a { 446div#cgit table.diffstat td.upd a {
419 color: blue; 447 color: blue;
420} 448}
421 449
422table.diffstat td.graph { 450div#cgit table.diffstat td.graph {
423 width: 500px; 451 width: 500px;
424 vertical-align: middle; 452 vertical-align: middle;
425} 453}
426 454
427table.diffstat td.graph table { 455div#cgit table.diffstat td.graph table {
428 border: none; 456 border: none;
429} 457}
430 458
431table.diffstat td.graph td { 459div#cgit table.diffstat td.graph td {
432 padding: 0px; 460 padding: 0px;
433 border: 0px; 461 border: 0px;
434 height: 7pt; 462 height: 7pt;
435} 463}
436 464
437table.diffstat td.graph td.add { 465div#cgit table.diffstat td.graph td.add {
438 background-color: #5c5; 466 background-color: #5c5;
439} 467}
440 468
441table.diffstat td.graph td.rem { 469div#cgit table.diffstat td.graph td.rem {
442 background-color: #c55; 470 background-color: #c55;
443} 471}
444 472
445div.diffstat-summary { 473div#cgit div.diffstat-summary {
446 color: #888; 474 color: #888;
447 padding-top: 0.5em; 475 padding-top: 0.5em;
448} 476}
449 477
450table.diff { 478div#cgit table.diff {
451 width: 100%; 479 width: 100%;
452} 480}
453 481
454table.diff td { 482div#cgit table.diff td {
455 font-family: monospace; 483 font-family: monospace;
456 white-space: pre; 484 white-space: pre;
457} 485}
458 486
459table.diff td div.head { 487div#cgit table.diff td div.head {
460 font-weight: bold; 488 font-weight: bold;
461 margin-top: 1em; 489 margin-top: 1em;
462 color: black; 490 color: black;
463} 491}
464 492
465table.diff td div.hunk { 493div#cgit table.diff td div.hunk {
466 color: #009; 494 color: #009;
467} 495}
468 496
469table.diff td div.add { 497div#cgit table.diff td div.add {
470 color: green; 498 color: green;
471} 499}
472 500
473table.diff td div.del { 501div#cgit table.diff td div.del {
474 color: red; 502 color: red;
475} 503}
476 504
477.sha1 { 505div#cgit .sha1 {
478 font-family: monospace; 506 font-family: monospace;
479 font-size: 90%; 507 font-size: 90%;
480} 508}
481 509
482.left { 510div#cgit .left {
483 text-align: left; 511 text-align: left;
484} 512}
485 513
486.right { 514div#cgit .right {
487 text-align: right; 515 text-align: right;
488} 516}
489 517
490table.list td.reposection { 518div#cgit table.list td.reposection {
491 font-style: italic; 519 font-style: italic;
492 color: #888; 520 color: #888;
493} 521}
494 522
495a.button { 523div#cgit a.button {
496 font-size: 80%; 524 font-size: 80%;
497 padding: 0em 0.5em; 525 padding: 0em 0.5em;
498} 526}
499 527
500a.primary { 528div#cgit a.primary {
501 font-size: 100%; 529 font-size: 100%;
502} 530}
503 531
504a.secondary { 532div#cgit a.secondary {
505 font-size: 90%; 533 font-size: 90%;
506} 534}
507 535
508td.toplevel-repo { 536div#cgit td.toplevel-repo {
509 537
510} 538}
511 539
512table.list td.sublevel-repo { 540div#cgit table.list td.sublevel-repo {
513 padding-left: 1.5em; 541 padding-left: 1.5em;
514} 542}
515 543
516div.pager { 544div#cgit div.pager {
517 text-align: center; 545 text-align: center;
518 margin: 1em 0em 0em 0em; 546 margin: 1em 0em 0em 0em;
519} 547}
520 548
521div.pager a { 549div#cgit div.pager a {
522 color: #777; 550 color: #777;
523 margin: 0em 0.5em; 551 margin: 0em 0.5em;
524} 552}
525 553
526span.age-mins { 554div#cgit span.age-mins {
527 font-weight: bold; 555 font-weight: bold;
528 color: #080; 556 color: #080;
529} 557}
530 558
531span.age-hours { 559div#cgit span.age-hours {
532 color: #080; 560 color: #080;
533} 561}
534 562
535span.age-days { 563div#cgit span.age-days {
536 color: #040; 564 color: #040;
537} 565}
538 566
539span.age-weeks { 567div#cgit span.age-weeks {
540 color: #444; 568 color: #444;
541} 569}
542 570
543span.age-months { 571div#cgit span.age-months {
544 color: #888; 572 color: #888;
545} 573}
546 574
547span.age-years { 575div#cgit span.age-years {
548 color: #bbb; 576 color: #bbb;
549} 577}
550div.footer { 578div#cgit div.footer {
551 margin-top: 0.5em; 579 margin-top: 0.5em;
552 text-align: center; 580 text-align: center;
553 font-size: 80%; 581 font-size: 80%;
554 color: #ccc; 582 color: #ccc;
555} 583}
556a.branch-deco { 584div#cgit a.branch-deco {
585 color: #000;
557 margin: 0px 0.5em; 586 margin: 0px 0.5em;
558 padding: 0px 0.25em; 587 padding: 0px 0.25em;
559 background-color: #88ff88; 588 background-color: #88ff88;
560 border: solid 1px #007700; 589 border: solid 1px #007700;
561} 590}
562a.tag-deco { 591div#cgit a.tag-deco {
592 color: #000;
563 margin: 0px 0.5em; 593 margin: 0px 0.5em;
564 padding: 0px 0.25em; 594 padding: 0px 0.25em;
565 background-color: #ffff88; 595 background-color: #ffff88;
566 border: solid 1px #777700; 596 border: solid 1px #777700;
567} 597}
568a.remote-deco { 598div#cgit a.remote-deco {
599 color: #000;
569 margin: 0px 0.5em; 600 margin: 0px 0.5em;
570 padding: 0px 0.25em; 601 padding: 0px 0.25em;
571 background-color: #ccccff; 602 background-color: #ccccff;
572 border: solid 1px #000077; 603 border: solid 1px #000077;
573} 604}
574a.deco { 605div#cgit a.deco {
606 color: #000;
575 margin: 0px 0.5em;