all repos — cgit @ 68ca032dbe7379f78775fb03ef34a9ad2abc409f

a hyperfast web frontend for git written in c

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.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Lars Hjemli hjemli@gmail.com
Sun, 28 Oct 2007 15:23:00 +0100
commit

68ca032dbe7379f78775fb03ef34a9ad2abc409f

parent

6ec5f36f279a85f59db2851ab476d9acd0015770

7 files changed, 39 insertions(+), 9 deletions(-)

jump to
M cgit.ccgit.c

@@ -94,7 +94,7 @@

switch(cgit_cmd) { case CMD_LOG: cgit_print_log(cgit_query_sha1, cgit_query_ofs, - cgit_max_commit_count, cgit_query_search, + cgit_max_commit_count, cgit_query_grep, cgit_query_search, cgit_query_path, 1); break; case CMD_TREE:
M cgit.csscgit.css

@@ -144,13 +144,30 @@ margin: 0px;

padding: 0px; } +td#search select { + font-size: 9pt; + padding: 0px; + border: solid 1px #333; + color: #333; + background-color: #fff; +} + td#search input { font-size: 9pt; padding: 0px; - width: 10em; +} + +td#search input.txt { + width: 8em; border: solid 1px #333; color: #333; background-color: #fff; +} + +td#search input.btn { + border: solid 1px #333; + color: #333; + background-color: #ccc; } div#summary {
M cgit.hcgit.h

@@ -158,6 +158,7 @@ extern char *cgit_querystring;

extern char *cgit_query_repo; extern char *cgit_query_page; extern char *cgit_query_search; +extern char *cgit_query_grep; extern char *cgit_query_head; extern char *cgit_query_sha1; extern char *cgit_query_sha2;

@@ -260,7 +261,8 @@ extern void cgit_print_tags(int maxcount);

extern void cgit_print_repolist(struct cacheitem *item); extern void cgit_print_summary(); -extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *path, int pager); +extern void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, + char *pattern, char *path, int pager); extern void cgit_print_blob(struct cacheitem *item, const char *hex, char *path); extern void cgit_print_tree(const char *rev, char *path); extern void cgit_print_commit(char *hex);
M shared.cshared.c

@@ -54,6 +54,7 @@ char *cgit_query_repo = NULL;

char *cgit_query_page = NULL; char *cgit_query_head = NULL; char *cgit_query_search = NULL; +char *cgit_query_grep = NULL; char *cgit_query_sha1 = NULL; char *cgit_query_sha2 = NULL; char *cgit_query_path = NULL;

@@ -232,6 +233,8 @@ cgit_query_page = xstrdup(value);

cgit_cmd = cgit_get_cmd_index(value); } else if (!strcmp(name, "url")) { cgit_parse_url(value); + } else if (!strcmp(name, "qt")) { + cgit_query_grep = xstrdup(value); } else if (!strcmp(name, "q")) { cgit_query_search = xstrdup(value); } else if (!strcmp(name, "h")) {
M ui-log.cui-log.c

@@ -51,7 +51,7 @@ cgit_free_commitinfo(info);

} -void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *path, int pager) +void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern, char *path, int pager) { struct rev_info rev; struct commit *commit;

@@ -62,8 +62,11 @@

if (!tip) argv[1] = cgit_query_head; - if (grep) - argv[argc++] = fmt("--grep=%s", grep); + if (grep && pattern && (!strcmp(grep, "grep") || + !strcmp(grep, "author") || + !strcmp(grep, "committer"))) + argv[argc++] = fmt("--%s=%s", grep, pattern); + if (path) { argv[argc++] = "--"; argv[argc++] = path;
M ui-shared.cui-shared.c

@@ -417,9 +417,14 @@ if (cgit_query_sha1)

html_hidden("id", cgit_query_sha1); if (cgit_query_sha2) html_hidden("id2", cgit_query_sha2); - html("<input type='text' name='q' value='"); + html("<select name='qt'>"); + html_option("grep", "log msg", cgit_query_grep); + html_option("author", "author", cgit_query_grep); + html_option("committer", "committer", cgit_query_grep); + html("</select>"); + html("<input class='txt' type='text' name='q' value='"); html_attr(cgit_query_search); - html("'/></form>"); + html("'/><input class='btn' type='submit' value='...'/></form>"); } html("</td></tr>"); html("<tr><td id='content' colspan='2'>");
M ui-summary.cui-summary.c

@@ -236,7 +236,7 @@ if (cgit_repo->readme)

html_include(cgit_repo->readme); html("</div>"); if (cgit_summary_log > 0) - cgit_print_log(cgit_query_head, 0, cgit_summary_log, NULL, NULL, 0); + cgit_print_log(cgit_query_head, 0, cgit_summary_log, NULL, NULL, NULL, 0); html("<table class='list nowrap'>"); if (cgit_summary_log > 0) html("<tr class='nohover'><td colspan='4'>&nbsp;</td></tr>");