Commit 61a5994d authored by Kim "BKC" Carlbäcker's avatar Kim "BKC" Carlbäcker

Migrate RepositoryService#SearchFilesBy{Content,Name}

parent 1b9ff9db
...@@ -1473,10 +1473,19 @@ module Gitlab ...@@ -1473,10 +1473,19 @@ module Gitlab
def search_files_by_content(query, ref) def search_files_by_content(query, ref)
return [] if empty? || query.blank? return [] if empty? || query.blank?
offset = 2 safe_query = Regexp.escape(query)
args = %W(grep -i -I -n -z --before-context #{offset} --after-context #{offset} -E -e #{Regexp.escape(query)} #{ref || root_ref}) ref ||= root_ref
gitaly_migrate(:search_files_by_content) do |is_enabled|
if is_enabled
gitaly_repository_client.search_files_by_content(ref, safe_query)
else
offset = 2
args = %W(grep -i -I -n -z --before-context #{offset} --after-context #{offset} -E -e #{safe_query} #{ref})
run_git(args).first.scrub.split(/^--\n/) run_git(args).first.scrub.split(/^--\n/)
end
end
end end
def can_be_merged?(source_sha, target_branch) def can_be_merged?(source_sha, target_branch)
...@@ -1491,12 +1500,19 @@ module Gitlab ...@@ -1491,12 +1500,19 @@ module Gitlab
def search_files_by_name(query, ref) def search_files_by_name(query, ref)
safe_query = Regexp.escape(query.sub(%r{^/*}, "")) safe_query = Regexp.escape(query.sub(%r{^/*}, ""))
ref ||= root_ref
return [] if empty? || safe_query.blank? return [] if empty? || safe_query.blank?
args = %W(ls-tree -r --name-status --full-tree #{ref || root_ref} -- #{safe_query}) gitaly_migrate(:search_files_by_name) do |is_enabled|
if is_enabled
gitaly_repository_client.search_files_by_name(ref, safe_query)
else
args = %W(ls-tree -r --name-status --full-tree #{ref} -- #{safe_query})
run_git(args).first.lines.map(&:strip) run_git(args).first.lines.map(&:strip)
end
end
end end
def find_commits_by_message(query, ref, path, limit, offset) def find_commits_by_message(query, ref, path, limit, offset)
......
...@@ -301,6 +301,16 @@ module Gitlab ...@@ -301,6 +301,16 @@ module Gitlab
GitalyClient.call(@storage, :repository_service, :get_raw_changes, request) GitalyClient.call(@storage, :repository_service, :get_raw_changes, request)
end end
def search_files_by_name(ref, query)
request = Gitaly::SearchFilesByNameRequest.new(repository: @gitaly_repo, ref: ref, query: query)
GitalyClient.call(@storage, :repository_service, :search_files_by_name, request).flat_map(&:files)
end
def search_files_by_content(ref, query)
request = Gitaly::SearchFilesByContentRequest.new(repository: @gitaly_repo, ref: ref, query: query)
GitalyClient.call(@storage, :repository_service, :search_files_by_content, request).flat_map(&:matches)
end
end end
end end
end end
...@@ -671,7 +671,7 @@ describe Repository do ...@@ -671,7 +671,7 @@ describe Repository do
end end
end end
describe "search_files_by_content" do shared_examples "search_files_by_content" do
let(:results) { repository.search_files_by_content('feature', 'master') } let(:results) { repository.search_files_by_content('feature', 'master') }
subject { results } subject { results }
...@@ -718,7 +718,7 @@ describe Repository do ...@@ -718,7 +718,7 @@ describe Repository do
end end
end end
describe "search_files_by_name" do shared_examples "search_files_by_name" do
let(:results) { repository.search_files_by_name('files', 'master') } let(:results) { repository.search_files_by_name('files', 'master') }
it 'returns result' do it 'returns result' do
...@@ -758,6 +758,16 @@ describe Repository do ...@@ -758,6 +758,16 @@ describe Repository do
end end
end end
describe 'with gitaly enabled' do
it_behaves_like 'search_files_by_content'
it_behaves_like 'search_files_by_name'
end
describe 'with gitaly disabled', :disable_gitaly do
it_behaves_like 'search_files_by_content'
it_behaves_like 'search_files_by_name'
end
describe '#async_remove_remote' do describe '#async_remove_remote' do
before do before do
masterrev = repository.find_branch('master').dereferenced_target masterrev = repository.find_branch('master').dereferenced_target
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment