History

Teach log search about --grep, --author and --committer

This makes the log searching more explicit, using a dropdown box to specify the commit field to match against.

Lars Hjemli committed 19 years ago

Commit 68ca0321 parent 6ec5f367 files · +39 −9Browse files

Unified · Split

7 files
  1. cgit.c +1 −1
  2. cgit.css +18 −1
  3. cgit.h +3 −1
  4. shared.c +3 −0
  5. ui-log.c +6 −3
  6. ui-shared.c +7 −2
  7. ui-summary.c +1 −1
cgit.c+1−1
@@ -94,7 +94,7 @@ static void cgit_print_repo_page(struct cacheitem *item) · 93 unmodified lines
94 switch(cgit_cmd) {94 switch(cgit_cmd) {
95 case CMD_LOG:95 case CMD_LOG:
96 cgit_print_log(cgit_query_sha1, cgit_query_ofs,96 cgit_print_log(cgit_query_sha1, cgit_query_ofs,
97 cgit_max_commit_count, cgit_query_search,97 cgit_max_commit_count, cgit_query_grep, cgit_query_search,
98 cgit_query_path, 1);98 cgit_query_path, 1);
99 break;99 break;
100 case CMD_TREE:100 case CMD_TREE:
cgit.css+18−1
@@ -144,15 +144,32 @@ td#search form { · 143 unmodified lines
144 padding: 0px;144 padding: 0px;
145}145}
146 146
147td#search select {
148 font-size: 9pt;
149 padding: 0px;
150 border: solid 1px #333;
151 color: #333;
152 background-color: #fff;
153}
154
147td#search input {155td#search input {
148 font-size: 9pt;156 font-size: 9pt;
149 padding: 0px;157 padding: 0px;
150 width: 10em;158}
159
160td#search input.txt {
161 width: 8em;
151 border: solid 1px #333;162 border: solid 1px #333;
152 color: #333;163 color: #333;
153 background-color: #fff;164 background-color: #fff;
154}165}
155 166
167td#search input.btn {
168 border: solid 1px #333;
169 color: #333;
170 background-color: #ccc;
171}
172
156div#summary {173div#summary {
157 vertical-align: top;174 vertical-align: top;
158 margin-bottom: 1em;175 margin-bottom: 1em;
cgit.h+3−1
@@ -158,6 +158,7 @@ extern char *cgit_querystring; · 157 unmodified lines
158extern char *cgit_query_repo;158extern char *cgit_query_repo;
159extern char *cgit_query_page;159extern char *cgit_query_page;
160extern char *cgit_query_search;160extern char *cgit_query_search;
161extern char *cgit_query_grep;
161extern char *cgit_query_head;162extern char *cgit_query_head;
162extern char *cgit_query_sha1;163extern char *cgit_query_sha1;
163extern char *cgit_query_sha2;164extern char *cgit_query_sha2;
@@ -260,7 +261,8 @@ extern void cgit_print_tags(int maxcount); · 96 unmodified lines
260 261
261extern void cgit_print_repolist(struct cacheitem *item);262extern void cgit_print_repolist(struct cacheitem *item);
262extern void cgit_print_summary();263extern void cgit_print_summary();
263extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *path, int pager);264extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep,
265 char *pattern, char *path, int pager);
264extern void cgit_print_blob(struct cacheitem *item, const char *hex, char *path);266extern void cgit_print_blob(struct cacheitem *item, const char *hex, char *path);
265extern void cgit_print_tree(const char *rev, char *path);267extern void cgit_print_tree(const char *rev, char *path);
266extern void cgit_print_commit(char *hex);268extern void cgit_print_commit(char *hex);
shared.c+3−0
@@ -54,6 +54,7 @@ char *cgit_query_repo = NULL; · 53 unmodified lines
54char *cgit_query_page = NULL;54char *cgit_query_page = NULL;
55char *cgit_query_head = NULL;55char *cgit_query_head = NULL;
56char *cgit_query_search = NULL;56char *cgit_query_search = NULL;
57char *cgit_query_grep = NULL;
57char *cgit_query_sha1 = NULL;58char *cgit_query_sha1 = NULL;
58char *cgit_query_sha2 = NULL;59char *cgit_query_sha2 = NULL;
59char *cgit_query_path = NULL;60char *cgit_query_path = NULL;
@@ -232,6 +233,8 @@ void cgit_querystring_cb(const char *name, const char *value) · 172 unmodified lines
232 cgit_cmd = cgit_get_cmd_index(value);233 cgit_cmd = cgit_get_cmd_index(value);
233 } else if (!strcmp(name, "url")) {234 } else if (!strcmp(name, "url")) {
234 cgit_parse_url(value);235 cgit_parse_url(value);
236 } else if (!strcmp(name, "qt")) {
237 cgit_query_grep = xstrdup(value);
235 } else if (!strcmp(name, "q")) {238 } else if (!strcmp(name, "q")) {
236 cgit_query_search = xstrdup(value);239 cgit_query_search = xstrdup(value);
237 } else if (!strcmp(name, "h")) {240 } else if (!strcmp(name, "h")) {
ui-log.c+6−3
@@ -51,7 +51,7 @@ void print_commit(struct commit *commit) · 50 unmodified lines
51}51}
52 52
53 53
54void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *path, int pager)54void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern, char *path, int pager)
55{55{
56 struct rev_info rev;56 struct rev_info rev;
57 struct commit *commit;57 struct commit *commit;
@@ -62,8 +62,11 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *path, i · 4 unmodified lines
62 if (!tip)62 if (!tip)
63 argv[1] = cgit_query_head;63 argv[1] = cgit_query_head;
64 64
65 if (grep)65 if (grep && pattern && (!strcmp(grep, "grep") ||
66 argv[argc++] = fmt("--grep=%s", grep);66 !strcmp(grep, "author") ||
67 !strcmp(grep, "committer")))
68 argv[argc++] = fmt("--%s=%s", grep, pattern);
69
67 if (path) {70 if (path) {
68 argv[argc++] = "--";71 argv[argc++] = "--";
69 argv[argc++] = path;72 argv[argc++] = path;
ui-shared.c+7−2
@@ -417,9 +417,14 @@ void cgit_print_pageheader(char *title, int show_search) · 416 unmodified lines
417 html_hidden("id", cgit_query_sha1);417 html_hidden("id", cgit_query_sha1);
418 if (cgit_query_sha2)418 if (cgit_query_sha2)
419 html_hidden("id2", cgit_query_sha2);419 html_hidden("id2", cgit_query_sha2);
420 html("<input type='text' name='q' value='");420 html("<select name='qt'>");
421 html_option("grep", "log msg", cgit_query_grep);
422 html_option("author", "author", cgit_query_grep);
423 html_option("committer", "committer", cgit_query_grep);
424 html("</select>");
425 html("<input class='txt' type='text' name='q' value='");
421 html_attr(cgit_query_search);426 html_attr(cgit_query_search);
422 html("'/></form>");427 html("'/><input class='btn' type='submit' value='...'/></form>");
423 }428 }
424 html("</td></tr>");429 html("</td></tr>");
425 html("<tr><td id='content' colspan='2'>");430 html("<tr><td id='content' colspan='2'>");
ui-summary.c+1−1
@@ -236,7 +236,7 @@ void cgit_print_summary() · 235 unmodified lines
236 html_include(cgit_repo->readme);236 html_include(cgit_repo->readme);
237 html("</div>");237 html("</div>");
238 if (cgit_summary_log > 0)238 if (cgit_summary_log > 0)
239 cgit_print_log(cgit_query_head, 0, cgit_summary_log, NULL, NULL, 0);239 cgit_print_log(cgit_query_head, 0, cgit_summary_log, NULL, NULL, NULL, 0);
240 html("<table class='list nowrap'>");240 html("<table class='list nowrap'>");
241 if (cgit_summary_log > 0)241 if (cgit_summary_log > 0)
242 html("<tr class='nohover'><td colspan='4'>&nbsp;</td></tr>");242 html("<tr class='nohover'><td colspan='4'>&nbsp;</td></tr>");