Add another item to the search drop-down (author/committer/etc)
to search for file names instead of file content. Output is similar
to the grep contents output, with each entry linking to the file.
---
gitweb/gitweb.perl | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 59 insertions(+)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index f429f75..4a7b0a5 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -6360,6 +6360,65 @@ sub git_search_grep_body {
print "</table>\n";
}
+sub git_search_filenames {
+ my %co = @_;
+ local $/ = "\n";
+ my $match_limit = 1000;
+
+ open my $fd, "-|", git_cmd(), 'ls-tree', '--name-only',
'--full-name', '-r',
+ $co{'tree'} or die_error(500, "Open git-ls-tree failed");
+
+ git_header_html();
+
+ git_print_page_nav('','', $hash,$co{'tree'},$hash);
+ git_print_header_div('commit', esc_html($co{'title'}), $hash);
+
+ print "<table class=\"filename_search\">\n";
+ my $matches = 0;
+ my $alternate = 1;
+ my $file_href;
+
+ while (my $filename = <$fd>) {
+ chomp $filename;
+
+ if ($matches > $match_limit) {
+ print "<div class=\"diff nodifferences\">Too many
matches, listing trimmed</div>\n";
+ last;
+ }
+
+ if ($search_use_regexp) {
+ next unless ($filename =~ /$searchtext/);
+ } else {
+ next unless index($filename,$searchtext) >= 0;
+ }
+
+ $matches++;
+ $file_href = href(action=>"blob", hash_base=>$co{'id'},
+ file_name=>$filename);
+
+ if ($alternate) {
+ print "<tr class=\"dark\">\n";
+ } else {
+ print "<tr class=\"light\">\n";
+ }
+ $alternate ^= 1;
+
+ print "<td class=\"list\">".
+ $cgi->a({-href => $file_href, -class => "list"},
esc_path($filename));
+ print "</td>\n";
+ print "</tr>\n";
+ }
+
+ if ($matches == 0) {
+ print "<div class=\"diff nodifferences\">No matches found</div>\n";
+ }
+ close $fd;
+
+ print "</table>\n";
+
+ git_footer_html();
+}
+
## ======================================================================
## ======================================================================
## actions
--
1.8.3.msysgit.0
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html