From 68ca032dbe7379f78775fb03ef34a9ad2abc409f Mon Sep 17 00:00:00 2001 From: Lars Hjemli Date: Sun, 28 Oct 2007 15:23:00 +0100 Subject: [PATCH] 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 --- cgit.c | 2 +- cgit.css | 21 +++++++++++++++++++-- cgit.h | 4 +++- shared.c | 3 +++ ui-log.c | 9 ++++++--- ui-shared.c | 9 +++++++-- ui-summary.c | 2 +- 7 files changed, 40 insertions(+), 10 deletions(-) diff --git a/cgit.c b/cgit.c index cc18ed4..142e416 100644 --- a/cgit.c +++ b/cgit.c @@ -94,7 +94,7 @@ static void cgit_print_repo_page(struct cacheitem *item) 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: diff --git a/cgit.css b/cgit.css index b8c3d81..5d47099 100644 --- a/cgit.css +++ b/cgit.css @@ -144,15 +144,32 @@ td#search form { padding: 0px; } -td#search input { +td#search select { font-size: 9pt; padding: 0px; - width: 10em; border: solid 1px #333; color: #333; background-color: #fff; } +td#search input { + font-size: 9pt; + padding: 0px; +} + +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 { vertical-align: top; margin-bottom: 1em; diff --git a/cgit.h b/cgit.h index 0baa679..dd83f70 100644 --- a/cgit.h +++ b/cgit.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); diff --git a/shared.c b/shared.c index 7eb2b0e..4fab1c9 100644 --- a/shared.c +++ b/shared.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 @@ void cgit_querystring_cb(const char *name, const char *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")) { diff --git a/ui-log.c b/ui-log.c index d38e40a..e7f7d6f 100644 --- a/ui-log.c +++ b/ui-log.c @@ -51,7 +51,7 @@ void print_commit(struct commit *commit) } -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 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *path, i 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; diff --git a/ui-shared.c b/ui-shared.c index e4bb98f..45105dc 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -417,9 +417,14 @@ void cgit_print_pageheader(char *title, int show_search) html_hidden("id", cgit_query_sha1); if (cgit_query_sha2) html_hidden("id2", cgit_query_sha2); - html(""); + html_option("grep", "log msg", cgit_query_grep); + html_option("author", "author", cgit_query_grep); + html_option("committer", "committer", cgit_query_grep); + html(""); + html(""); + html("'/>"); } html(""); html(""); diff --git a/ui-summary.c b/ui-summary.c index 178e959..04a466a 100644 --- a/ui-summary.c +++ b/ui-summary.c @@ -236,7 +236,7 @@ void cgit_print_summary() html_include(cgit_repo->readme); html(""); 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(""); if (cgit_summary_log > 0) html("");