{"thread":{"id":"34698","subject":"[PATCH 2/2] gitweb: add plumbing for filename search","startedAt":"2013-08-15T03:02:39Z","lastAt":"2013-08-15T03:02:39Z","messageCount":1,"participants":["Christopher Durkin"],"isPatch":true,"patchVersion":1,"patchTotal":2},"messages":[{"id":"225244","messageId":"CANzJMBU1JjztDGns+ZCg-K+q6_HO9GNJy5nKC4ODEdGm_eJwPg@mail.gmail.com","threadId":"34698","inReplyTo":null,"subject":"[PATCH 2/2] gitweb: add plumbing for filename search","fromName":"Christopher Durkin","fromEmail":"cjdurkin@gmail.com","sentAt":"2013-08-15T03:02:39Z","receivedAt":"2013-08-15T03:02:39Z","isPatch":true,"sender":{"key":"cjdurkin@gmail.com","avatar":"https://gravatar.com/avatar/32f0587f5e156c4ed56a0eece797261355fcccfda463b83d63bf88a59121d039?d=mp&s=160"},"body":"Add filename search config option and add it to the drop-down.\n---\n gitweb/gitweb.perl | 24 +++++++++++++++++++++++-\n 1 file changed, 23 insertions(+), 1 deletion(-)\n\ndiff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl\nindex 4a7b0a5..087b4cb 100755\n--- a/gitweb/gitweb.perl\n+++ b/gitweb/gitweb.perl\n@@ -374,6 +374,20 @@ our %feature = (\n  'override' => 0,\n  'default' => [1]},\n\n+ # Enable the filename search, which will list the files whose\n+ # names contain the given string. Enabled by default. Note\n+ # that you need to have 'search' feature enabled too.\n+\n+ # To enable system wide have in $GITWEB_CONFIG\n+ # $feature{'filename'}{'default'} = [1];\n+ # To have project specific config enable override in $GITWEB_CONFIG\n+ # $feature{'filename'}{'override'} = 1;\n+ # and in project config gitweb.pickaxe = 0|1;\n+ 'filename' => {\n+ 'sub' => sub { feature_bool('filename', @_) },\n+ 'override' => 0,\n+ 'default' => [1]},\n+\n  # Enable showing size of blobs in a 'tree' view, in a separate\n  # column, similar to what 'ls -l' does.  This cost a bit of IO.\n\n@@ -4034,7 +4048,7 @@ sub print_search_form {\n       $cgi->input({-name=>\"a\", -value=>\"search\", -type=>\"hidden\"}) . \"\\n\" .\n       $cgi->input({-name=>\"h\", -value=>$search_hash, -type=>\"hidden\"}) . \"\\n\" .\n       $cgi->popup_menu(-name => 'st', -default => 'commit',\n-                       -values => ['commit', 'grep', 'author',\n'committer', 'pickaxe']) .\n+                       -values => ['commit', 'grep', 'author',\n'committer', 'pickaxe', 'filename']) .\n       $cgi->sup($cgi->a({-href => href(action=>\"search_help\")}, \"?\")) .\n       \" search:\\n\",\n       $cgi->textfield(-name => \"s\", -value => $searchtext, -override\n=> 1) . \"\\n\" .\n@@ -7996,6 +8010,12 @@ sub git_search {\n  or die_error(403, \"Grep search is disabled\");\n  }\n\n+ if ($searchtype eq 'filename') {\n+                # uses grep on output of git ls-tree, maybe CPU-intensive\n+ gitweb_check_feature('filename')\n+ or die_error(403, \"Filename search is disabled\");\n+ }\n+\n  if (!defined $searchtext) {\n  die_error(400, \"Text field is empty\");\n  }\n@@ -8018,6 +8038,8 @@ sub git_search {\n  git_search_changes(%co);\n  } elsif ($searchtype eq 'grep') {\n  git_search_files(%co);\n+ } elsif ($searchtype eq 'filename') {\n+        git_search_filenames(%co);\n  } else {\n  die_error(400, \"Unknown search type\");\n  }\n-- \n1.8.3.msysgit.0\n"}]}