summaryrefslogtreecommitdiffabout
authorLars Hjemli <hjemli@gmail.com>2007-05-20 20:13:17 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2007-05-20 20:13:17 (UTC)
commit271ac5a7e6b5b67f54fdd16e8542aa282f1c7140 (patch) (unidiff)
treed93a0bce06fca8db57ed1a98aa5e2e45199af845
parentdc3ac3f76077c5d612d42e8beb4878e43acfc58a (diff)
parent7b39144a541ab5be8bcd2748a5be89389bee7192 (diff)
downloadcgit-271ac5a7e6b5b67f54fdd16e8542aa282f1c7140.zip
cgit-271ac5a7e6b5b67f54fdd16e8542aa282f1c7140.tar.gz
cgit-271ac5a7e6b5b67f54fdd16e8542aa282f1c7140.tar.bz2
Merge branch 'repogroups'
* repogroups: Adjust apperance of repogroup headers Don't highlight repogroup headings Teach cgit how to group repositories by category
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--cgit.css5
-rw-r--r--cgit.h2
-rw-r--r--shared.c4
-rw-r--r--ui-repolist.c10
4 files changed, 21 insertions, 0 deletions
diff --git a/cgit.css b/cgit.css
index 6c7f9c3..5dd43b0 100644
--- a/cgit.css
+++ b/cgit.css
@@ -344,12 +344,17 @@ table.diff td div.del {
344.sha1 { 344.sha1 {
345 font-family: courier; 345 font-family: courier;
346 font-size: 90%; 346 font-size: 90%;
347} 347}
348 348
349.left { 349.left {
350 text-align: left; 350 text-align: left;
351} 351}
352 352
353.right { 353.right {
354 text-align: right; 354 text-align: right;
355} 355}
356
357table.list td.repogroup {
358 padding-top: 1em;
359 border-bottom: solid 1px #777;
360}
diff --git a/cgit.h b/cgit.h
index e0879bd..8927236 100644
--- a/cgit.h
+++ b/cgit.h
@@ -38,24 +38,25 @@ struct cacheitem {
38 struct stat st; 38 struct stat st;
39 int ttl; 39 int ttl;
40 int fd; 40 int fd;
41}; 41};
42 42
43struct repoinfo { 43struct repoinfo {
44 char *url; 44 char *url;
45 char *name; 45 char *name;
46 char *path; 46 char *path;
47 char *desc; 47 char *desc;
48 char *owner; 48 char *owner;
49 char *defbranch; 49 char *defbranch;
50 char *group;
50 char *module_link; 51 char *module_link;
51 int snapshots; 52 int snapshots;
52 int enable_log_filecount; 53 int enable_log_filecount;
53 int enable_log_linecount; 54 int enable_log_linecount;
54}; 55};
55 56
56struct repolist { 57struct repolist {
57 int length; 58 int length;
58 int count; 59 int count;
59 struct repoinfo *repos; 60 struct repoinfo *repos;
60}; 61};
61 62
@@ -84,24 +85,25 @@ extern struct repolist cgit_repolist;
84extern struct repoinfo *cgit_repo; 85extern struct repoinfo *cgit_repo;
85extern int cgit_cmd; 86extern int cgit_cmd;
86 87
87extern char *cgit_root_title; 88extern char *cgit_root_title;
88extern char *cgit_css; 89extern char *cgit_css;
89extern char *cgit_logo; 90extern char *cgit_logo;
90extern char *cgit_index_header; 91extern char *cgit_index_header;
91extern char *cgit_logo_link; 92extern char *cgit_logo_link;
92extern char *cgit_module_link; 93extern char *cgit_module_link;
93extern char *cgit_virtual_root; 94extern char *cgit_virtual_root;
94extern char *cgit_script_name; 95extern char *cgit_script_name;
95extern char *cgit_cache_root; 96extern char *cgit_cache_root;
97extern char *cgit_repo_group;
96 98
97extern int cgit_nocache; 99extern int cgit_nocache;
98extern int cgit_snapshots; 100extern int cgit_snapshots;
99extern int cgit_enable_log_filecount; 101extern int cgit_enable_log_filecount;
100extern int cgit_enable_log_linecount; 102extern int cgit_enable_log_linecount;
101extern int cgit_max_lock_attempts; 103extern int cgit_max_lock_attempts;
102extern int cgit_cache_root_ttl; 104extern int cgit_cache_root_ttl;
103extern int cgit_cache_repo_ttl; 105extern int cgit_cache_repo_ttl;
104extern int cgit_cache_dynamic_ttl; 106extern int cgit_cache_dynamic_ttl;
105extern int cgit_cache_static_ttl; 107extern int cgit_cache_static_ttl;
106extern int cgit_cache_max_create_time; 108extern int cgit_cache_max_create_time;
107 109
diff --git a/shared.c b/shared.c
index 45fde7f..65af11a 100644
--- a/shared.c
+++ b/shared.c
@@ -12,24 +12,25 @@ struct repolist cgit_repolist;
12struct repoinfo *cgit_repo; 12struct repoinfo *cgit_repo;
13int cgit_cmd; 13int cgit_cmd;
14 14
15char *cgit_root_title = "Git repository browser"; 15char *cgit_root_title = "Git repository browser";
16char *cgit_css = "/cgit.css"; 16char *cgit_css = "/cgit.css";
17char *cgit_logo = "/git-logo.png"; 17char *cgit_logo = "/git-logo.png";
18char *cgit_index_header = NULL; 18char *cgit_index_header = NULL;
19char *cgit_logo_link = "http://www.kernel.org/pub/software/scm/git/docs/"; 19char *cgit_logo_link = "http://www.kernel.org/pub/software/scm/git/docs/";
20char *cgit_module_link = "./?repo=%s&page=commit&id=%s"; 20char *cgit_module_link = "./?repo=%s&page=commit&id=%s";
21char *cgit_virtual_root = NULL; 21char *cgit_virtual_root = NULL;
22char *cgit_script_name = CGIT_SCRIPT_NAME; 22char *cgit_script_name = CGIT_SCRIPT_NAME;
23char *cgit_cache_root = "/var/cache/cgit"; 23char *cgit_cache_root = "/var/cache/cgit";
24char *cgit_repo_group = NULL;
24 25
25int cgit_nocache = 0; 26int cgit_nocache = 0;
26int cgit_snapshots = 0; 27int cgit_snapshots = 0;
27int cgit_enable_log_filecount = 0; 28int cgit_enable_log_filecount = 0;
28int cgit_enable_log_linecount = 0; 29int cgit_enable_log_linecount = 0;
29int cgit_max_lock_attempts = 5; 30int cgit_max_lock_attempts = 5;
30int cgit_cache_root_ttl = 5; 31int cgit_cache_root_ttl = 5;
31int cgit_cache_repo_ttl = 5; 32int cgit_cache_repo_ttl = 5;
32int cgit_cache_dynamic_ttl = 5; 33int cgit_cache_dynamic_ttl = 5;
33int cgit_cache_static_ttl = -1; 34int cgit_cache_static_ttl = -1;
34int cgit_cache_max_create_time = 5; 35int cgit_cache_max_create_time = 5;
35 36
@@ -90,24 +91,25 @@ struct repoinfo *add_repo(const char *url)
90 cgit_repolist.length *= 2; 91 cgit_repolist.length *= 2;
91 cgit_repolist.repos = xrealloc(cgit_repolist.repos, 92 cgit_repolist.repos = xrealloc(cgit_repolist.repos,
92 cgit_repolist.length * 93 cgit_repolist.length *
93 sizeof(struct repoinfo)); 94 sizeof(struct repoinfo));
94 } 95 }
95 96
96 ret = &cgit_repolist.repos[cgit_repolist.count-1]; 97 ret = &cgit_repolist.repos[cgit_repolist.count-1];
97 ret->url = xstrdup(url); 98 ret->url = xstrdup(url);
98 ret->name = ret->url; 99 ret->name = ret->url;
99 ret->path = NULL; 100 ret->path = NULL;
100 ret->desc = NULL; 101 ret->desc = NULL;
101 ret->owner = NULL; 102 ret->owner = NULL;
103 ret->group = cgit_repo_group;
102 ret->defbranch = "master"; 104 ret->defbranch = "master";
103 ret->snapshots = cgit_snapshots; 105 ret->snapshots = cgit_snapshots;
104 ret->enable_log_filecount = cgit_enable_log_filecount; 106 ret->enable_log_filecount = cgit_enable_log_filecount;
105 ret->enable_log_linecount = cgit_enable_log_linecount; 107 ret->enable_log_linecount = cgit_enable_log_linecount;
106 ret->module_link = cgit_module_link; 108 ret->module_link = cgit_module_link;
107 return ret; 109 return ret;
108} 110}
109 111
110struct repoinfo *cgit_get_repoinfo(const char *url) 112struct repoinfo *cgit_get_repoinfo(const char *url)
111{ 113{
112 int i; 114 int i;
113 struct repoinfo *repo; 115 struct repoinfo *repo;
@@ -151,24 +153,26 @@ void cgit_global_config_cb(const char *name, const char *value)
151 else if (!strcmp(name, "cache-repo-ttl")) 153 else if (!strcmp(name, "cache-repo-ttl"))
152 cgit_cache_repo_ttl = atoi(value); 154 cgit_cache_repo_ttl = atoi(value);
153 else if (!strcmp(name, "cache-static-ttl")) 155 else if (!strcmp(name, "cache-static-ttl"))
154 cgit_cache_static_ttl = atoi(value); 156 cgit_cache_static_ttl = atoi(value);
155 else if (!strcmp(name, "cache-dynamic-ttl")) 157 else if (!strcmp(name, "cache-dynamic-ttl"))
156 cgit_cache_dynamic_ttl = atoi(value); 158 cgit_cache_dynamic_ttl = atoi(value);
157 else if (!strcmp(name, "max-message-length")) 159 else if (!strcmp(name, "max-message-length"))
158 cgit_max_msg_len = atoi(value); 160 cgit_max_msg_len = atoi(value);
159 else if (!strcmp(name, "max-repodesc-length")) 161 else if (!strcmp(name, "max-repodesc-length"))
160 cgit_max_repodesc_len = atoi(value); 162 cgit_max_repodesc_len = atoi(value);
161 else if (!strcmp(name, "max-commit-count")) 163 else if (!strcmp(name, "max-commit-count"))
162 cgit_max_commit_count = atoi(value); 164 cgit_max_commit_count = atoi(value);
165 else if (!strcmp(name, "repo.group"))
166 cgit_repo_group = xstrdup(value);
163 else if (!strcmp(name, "repo.url")) 167 else if (!strcmp(name, "repo.url"))
164 cgit_repo = add_repo(value); 168 cgit_repo = add_repo(value);
165 else if (!strcmp(name, "repo.name")) 169 else if (!strcmp(name, "repo.name"))
166 cgit_repo->name = xstrdup(value); 170 cgit_repo->name = xstrdup(value);
167 else if (cgit_repo && !strcmp(name, "repo.path")) 171 else if (cgit_repo && !strcmp(name, "repo.path"))
168 cgit_repo->path = xstrdup(value); 172 cgit_repo->path = xstrdup(value);
169 else if (cgit_repo && !strcmp(name, "repo.desc")) 173 else if (cgit_repo && !strcmp(name, "repo.desc"))
170 cgit_repo->desc = xstrdup(value); 174 cgit_repo->desc = xstrdup(value);
171 else if (cgit_repo && !strcmp(name, "repo.owner")) 175 else if (cgit_repo && !strcmp(name, "repo.owner"))
172 cgit_repo->owner = xstrdup(value); 176 cgit_repo->owner = xstrdup(value);
173 else if (cgit_repo && !strcmp(name, "repo.defbranch")) 177 else if (cgit_repo && !strcmp(name, "repo.defbranch"))
174 cgit_repo->defbranch = xstrdup(value); 178 cgit_repo->defbranch = xstrdup(value);
diff --git a/ui-repolist.c b/ui-repolist.c
index 8e367a2..33e3e7f 100644
--- a/ui-repolist.c
+++ b/ui-repolist.c
@@ -3,42 +3,52 @@
3 * Copyright (C) 2006 Lars Hjemli 3 * Copyright (C) 2006 Lars Hjemli
4 * 4 *
5 * Licensed under GNU General Public License v2 5 * Licensed under GNU General Public License v2
6 * (see COPYING for full license text) 6 * (see COPYING for full license text)
7 */ 7 */
8 8
9#include "cgit.h" 9#include "cgit.h"
10 10
11void cgit_print_repolist(struct cacheitem *item) 11void cgit_print_repolist(struct cacheitem *item)
12{ 12{
13 struct repoinfo *repo; 13 struct repoinfo *repo;
14 int i; 14 int i;
15 char *last_group = NULL;
15 16
16 cgit_print_docstart(cgit_root_title, item); 17 cgit_print_docstart(cgit_root_title, item);
17 cgit_print_pageheader(cgit_root_title, 0); 18 cgit_print_pageheader(cgit_root_title, 0);
18 19
19 html("<table class='list nowrap'>"); 20 html("<table class='list nowrap'>");
20 if (cgit_index_header) { 21 if (cgit_index_header) {
21 html("<tr class='nohover'><td colspan='4' class='include-block'>"); 22 html("<tr class='nohover'><td colspan='4' class='include-block'>");
22 html_include(cgit_index_header); 23 html_include(cgit_index_header);
23 html("</td></tr>"); 24 html("</td></tr>");
24 } 25 }
25 html("<tr class='nohover'>" 26 html("<tr class='nohover'>"
26 "<th class='left'>Name</th>" 27 "<th class='left'>Name</th>"
27 "<th class='left'>Description</th>" 28 "<th class='left'>Description</th>"
28 "<th class='left'>Owner</th>" 29 "<th class='left'>Owner</th>"
29 "<th class='left'>Links</th></tr>\n"); 30 "<th class='left'>Links</th></tr>\n");
30 31
31 for (i=0; i<cgit_repolist.count; i++) { 32 for (i=0; i<cgit_repolist.count; i++) {
32 repo = &cgit_repolist.repos[i]; 33 repo = &cgit_repolist.repos[i];
34 if ((last_group == NULL && repo->group != NULL) ||
35 (last_group != NULL && repo->group == NULL) ||
36 (last_group != NULL && repo->group!= NULL &&
37 strcmp(repo->group, last_group))) {
38 html("<tr class='nohover'><td colspan='4' class='repogroup'>");
39 html_txt(repo->group);
40 html("</td></tr>");
41 last_group = repo->group;
42 }
33 html("<tr><td>"); 43 html("<tr><td>");
34 html_link_open(cgit_repourl(repo->url), NULL, NULL); 44 html_link_open(cgit_repourl(repo->url), NULL, NULL);
35 html_txt(repo->name); 45 html_txt(repo->name);
36 html_link_close(); 46 html_link_close();
37 html("</td><td>"); 47 html("</td><td>");
38 html_ntxt(cgit_max_repodesc_len, repo->desc); 48 html_ntxt(cgit_max_repodesc_len, repo->desc);
39 html("</td><td>"); 49 html("</td><td>");
40 html_txt(repo->owner); 50 html_txt(repo->owner);
41 html("</td><td>"); 51 html("</td><td>");
42 html_link_open(cgit_pageurl(repo->name, "commit", NULL), 52 html_link_open(cgit_pageurl(repo->name, "commit", NULL),
43 "Commit: display last commit", NULL); 53 "Commit: display last commit", NULL);
44 html("C</a> "); 54 html("C</a> ");