summaryrefslogtreecommitdiffabout
authorLars Hjemli <hjemli@gmail.com>2010-06-22 14:16:24 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2010-06-22 14:16:24 (UTC)
commit6654d5b7bdc1d775cf09ca6690b1fc5ecea4696d (patch) (unidiff)
treef03c3c3621b343493fb3c834ba3b8e4ebfe09471
parent6f92f332e6a9ee3e16051bda9fe148607af67f65 (diff)
parenta579fb02561c98a146c9e707d098d2b10aa02015 (diff)
downloadcgit-6654d5b7bdc1d775cf09ca6690b1fc5ecea4696d.zip
cgit-6654d5b7bdc1d775cf09ca6690b1fc5ecea4696d.tar.gz
cgit-6654d5b7bdc1d775cf09ca6690b1fc5ecea4696d.tar.bz2
Merge branch 'lh/range-search'
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--ui-log.c11
-rw-r--r--ui-shared.c1
2 files changed, 8 insertions, 4 deletions
diff --git a/ui-log.c b/ui-log.c
index 5eb5c81..33ec8a9 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -120,68 +120,71 @@ void print_commit(struct commit *commit)
120 html_txt(info->msg); 120 html_txt(info->msg);
121 html("</td></tr>\n"); 121 html("</td></tr>\n");
122 } 122 }
123 cgit_free_commitinfo(info); 123 cgit_free_commitinfo(info);
124} 124}
125 125
126static const char *disambiguate_ref(const char *ref) 126static const char *disambiguate_ref(const char *ref)
127{ 127{
128 unsigned char sha1[20]; 128 unsigned char sha1[20];
129 const char *longref; 129 const char *longref;
130 130
131 longref = fmt("refs/heads/%s", ref); 131 longref = fmt("refs/heads/%s", ref);
132 if (get_sha1(longref, sha1) == 0) 132 if (get_sha1(longref, sha1) == 0)
133 return longref; 133 return longref;
134 134
135 return ref; 135 return ref;
136} 136}
137 137
138void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern, 138void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern,
139 char *path, int pager) 139 char *path, int pager)
140{ 140{
141 struct rev_info rev; 141 struct rev_info rev;
142 struct commit *commit; 142 struct commit *commit;
143 const char *argv[] = {NULL, NULL, NULL, NULL, NULL}; 143 const char *argv[] = {NULL, NULL, NULL, NULL, NULL};
144 int argc = 2; 144 int argc = 2;
145 int i, columns = 3; 145 int i, columns = 3;
146 146
147 if (!tip) 147 if (!tip)
148 tip = ctx.qry.head; 148 tip = ctx.qry.head;
149 149
150 argv[1] = disambiguate_ref(tip); 150 argv[1] = disambiguate_ref(tip);
151 151
152 if (grep && pattern && (!strcmp(grep, "grep") || 152 if (grep && pattern) {
153 !strcmp(grep, "author") || 153 if (!strcmp(grep, "grep") || !strcmp(grep, "author") ||
154 !strcmp(grep, "committer"))) 154 !strcmp(grep, "committer"))
155 argv[argc++] = fmt("--%s=%s", grep, pattern); 155 argv[argc++] = fmt("--%s=%s", grep, pattern);
156 if (!strcmp(grep, "range"))
157 argv[1] = pattern;
158 }
156 159
157 if (path) { 160 if (path) {
158 argv[argc++] = "--"; 161 argv[argc++] = "--";
159 argv[argc++] = path; 162 argv[argc++] = path;
160 } 163 }
161 init_revisions(&rev, NULL); 164 init_revisions(&rev, NULL);
162 rev.abbrev = DEFAULT_ABBREV; 165 rev.abbrev = DEFAULT_ABBREV;
163 rev.commit_format = CMIT_FMT_DEFAULT; 166 rev.commit_format = CMIT_FMT_DEFAULT;
164 rev.verbose_header = 1; 167 rev.verbose_header = 1;
165 rev.show_root_diff = 0; 168 rev.show_root_diff = 0;
166 setup_revisions(argc, argv, &rev, NULL); 169 setup_revisions(argc, argv, &rev, NULL);
167 load_ref_decorations(DECORATE_FULL_REFS); 170 load_ref_decorations(DECORATE_FULL_REFS);
168 rev.show_decorations = 1; 171 rev.show_decorations = 1;
169 rev.grep_filter.regflags |= REG_ICASE; 172 rev.grep_filter.regflags |= REG_ICASE;
170 compile_grep_patterns(&rev.grep_filter); 173 compile_grep_patterns(&rev.grep_filter);
171 prepare_revision_walk(&rev); 174 prepare_revision_walk(&rev);
172 175
173 if (pager) 176 if (pager)
174 html("<table class='list nowrap'>"); 177 html("<table class='list nowrap'>");
175 178
176 html("<tr class='nohover'><th class='left'>Age</th>" 179 html("<tr class='nohover'><th class='left'>Age</th>"
177 "<th class='left'>Commit message"); 180 "<th class='left'>Commit message");
178 if (pager) { 181 if (pager) {
179 html(" ("); 182 html(" (");
180 cgit_log_link(ctx.qry.showmsg ? "Collapse" : "Expand", NULL, 183 cgit_log_link(ctx.qry.showmsg ? "Collapse" : "Expand", NULL,
181 NULL, ctx.qry.head, ctx.qry.sha1, 184 NULL, ctx.qry.head, ctx.qry.sha1,
182 ctx.qry.vpath, ctx.qry.ofs, ctx.qry.grep, 185 ctx.qry.vpath, ctx.qry.ofs, ctx.qry.grep,
183 ctx.qry.search, ctx.qry.showmsg ? 0 : 1); 186 ctx.qry.search, ctx.qry.showmsg ? 0 : 1);
184 html(")"); 187 html(")");
185 } 188 }
186 html("</th><th class='left'>Author</th>"); 189 html("</th><th class='left'>Author</th>");
187 if (ctx.repo->enable_log_filecount) { 190 if (ctx.repo->enable_log_filecount) {
diff --git a/ui-shared.c b/ui-shared.c
index c99bcec..c398d7a 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -801,64 +801,65 @@ void cgit_print_pageheader(struct cgit_context *ctx)
801 if (ctx->repo) { 801 if (ctx->repo) {
802 cgit_summary_link("summary", NULL, hc(ctx, "summary"), 802 cgit_summary_link("summary", NULL, hc(ctx, "summary"),
803 ctx->qry.head); 803 ctx->qry.head);
804 cgit_refs_link("refs", NULL, hc(ctx, "refs"), ctx->qry.head, 804 cgit_refs_link("refs", NULL, hc(ctx, "refs"), ctx->qry.head,
805 ctx->qry.sha1, NULL); 805 ctx->qry.sha1, NULL);
806 cgit_log_link("log", NULL, hc(ctx, "log"), ctx->qry.head, 806 cgit_log_link("log", NULL, hc(ctx, "log"), ctx->qry.head,
807 NULL, ctx->qry.vpath, 0, NULL, NULL, 807 NULL, ctx->qry.vpath, 0, NULL, NULL,
808 ctx->qry.showmsg); 808 ctx->qry.showmsg);
809 cgit_tree_link("tree", NULL, hc(ctx, "tree"), ctx->qry.head, 809 cgit_tree_link("tree", NULL, hc(ctx, "tree"), ctx->qry.head,
810 ctx->qry.sha1, ctx->qry.vpath); 810 ctx->qry.sha1, ctx->qry.vpath);
811 cgit_commit_link("commit", NULL, hc(ctx, "commit"), 811 cgit_commit_link("commit", NULL, hc(ctx, "commit"),
812 ctx->qry.head, ctx->qry.sha1, ctx->qry.vpath, 0); 812 ctx->qry.head, ctx->qry.sha1, ctx->qry.vpath, 0);
813 cgit_diff_link("diff", NULL, hc(ctx, "diff"), ctx->qry.head, 813 cgit_diff_link("diff", NULL, hc(ctx, "diff"), ctx->qry.head,
814 ctx->qry.sha1, ctx->qry.sha2, ctx->qry.vpath, 0); 814 ctx->qry.sha1, ctx->qry.sha2, ctx->qry.vpath, 0);
815 if (ctx->repo->max_stats) 815 if (ctx->repo->max_stats)
816 cgit_stats_link("stats", NULL, hc(ctx, "stats"), 816 cgit_stats_link("stats", NULL, hc(ctx, "stats"),
817 ctx->qry.head, ctx->qry.vpath); 817 ctx->qry.head, ctx->qry.vpath);
818 if (ctx->repo->readme) 818 if (ctx->repo->readme)
819 reporevlink("about", "about", NULL, 819 reporevlink("about", "about", NULL,
820 hc(ctx, "about"), ctx->qry.head, NULL, 820 hc(ctx, "about"), ctx->qry.head, NULL,
821 NULL); 821 NULL);
822 html("</td><td class='form'>"); 822 html("</td><td class='form'>");
823 html("<form class='right' method='get' action='"); 823 html("<form class='right' method='get' action='");
824 if (ctx->cfg.virtual_root) 824 if (ctx->cfg.virtual_root)
825 html_url_path(cgit_fileurl(ctx->qry.repo, "log", 825 html_url_path(cgit_fileurl(ctx->qry.repo, "log",
826 ctx->qry.vpath, NULL)); 826 ctx->qry.vpath, NULL));
827 html("'>\n"); 827 html("'>\n");
828 cgit_add_hidden_formfields(1, 0, "log"); 828 cgit_add_hidden_formfields(1, 0, "log");
829 html("<select name='qt'>\n"); 829 html("<select name='qt'>\n");
830 html_option("grep", "log msg", ctx->qry.grep); 830 html_option("grep", "log msg", ctx->qry.grep);
831 html_option("author", "author", ctx->qry.grep); 831 html_option("author", "author", ctx->qry.grep);
832 html_option("committer", "committer", ctx->qry.grep); 832 html_option("committer", "committer", ctx->qry.grep);
833 html_option("range", "range", ctx->qry.grep);
833 html("</select>\n"); 834 html("</select>\n");
834 html("<input class='txt' type='text' size='10' name='q' value='"); 835 html("<input class='txt' type='text' size='10' name='q' value='");
835 html_attr(ctx->qry.search); 836 html_attr(ctx->qry.search);
836 html("'/>\n"); 837 html("'/>\n");
837 html("<input type='submit' value='search'/>\n"); 838 html("<input type='submit' value='search'/>\n");
838 html("</form>\n"); 839 html("</form>\n");
839 } else { 840 } else {
840 site_link(NULL, "index", NULL, hc(ctx, "repolist"), NULL, 0); 841 site_link(NULL, "index", NULL, hc(ctx, "repolist"), NULL, 0);
841 if (ctx->cfg.root_readme) 842 if (ctx->cfg.root_readme)
842 site_link("about", "about", NULL, hc(ctx, "about"), 843 site_link("about", "about", NULL, hc(ctx, "about"),
843 NULL, 0); 844 NULL, 0);
844 html("</td><td class='form'>"); 845 html("</td><td class='form'>");
845 html("<form method='get' action='"); 846 html("<form method='get' action='");
846 html_attr(cgit_rooturl()); 847 html_attr(cgit_rooturl());
847 html("'>\n"); 848 html("'>\n");
848 html("<input type='text' name='q' size='10' value='"); 849 html("<input type='text' name='q' size='10' value='");
849 html_attr(ctx->qry.search); 850 html_attr(ctx->qry.search);
850 html("'/>\n"); 851 html("'/>\n");
851 html("<input type='submit' value='search'/>\n"); 852 html("<input type='submit' value='search'/>\n");
852 html("</form>"); 853 html("</form>");
853 } 854 }
854 html("</td></tr></table>\n"); 855 html("</td></tr></table>\n");
855 if (ctx->qry.vpath) { 856 if (ctx->qry.vpath) {
856 html("<div class='path'>"); 857 html("<div class='path'>");
857 html("path: "); 858 html("path: ");
858 cgit_print_path_crumbs(ctx, ctx->qry.vpath); 859 cgit_print_path_crumbs(ctx, ctx->qry.vpath);
859 html("</div>"); 860 html("</div>");
860 } 861 }
861 html("<div class='content'>"); 862 html("<div class='content'>");
862} 863}
863 864
864void cgit_print_filemode(unsigned short mode) 865void cgit_print_filemode(unsigned short mode)