Merge branch 'olhado/gitlab-ce-commit-search'
This commit is contained in:
commit
fb2f8be4d7
10 changed files with 52 additions and 6 deletions
|
@ -18,6 +18,7 @@ v 8.2.0 (unreleased)
|
|||
- Use issue editor as cross reference comment author when issue is edited with a new mention.
|
||||
- [API] Add ability to fetch the commit ID of the last commit that actually touched a file
|
||||
- Add "New file" link to dropdown on project page
|
||||
- Include commit logs in project search
|
||||
|
||||
v 8.1.1
|
||||
- Fix cloning Wiki repositories via HTTP (Stan Hu)
|
||||
|
|
|
@ -33,6 +33,8 @@
|
|||
}
|
||||
|
||||
li.commit {
|
||||
list-style: none;
|
||||
|
||||
.commit-row-title {
|
||||
font-size: $list-font-size;
|
||||
line-height: 20px;
|
||||
|
|
|
@ -23,8 +23,8 @@ class SearchController < ApplicationController
|
|||
|
||||
@search_results =
|
||||
if @project
|
||||
unless %w(blobs notes issues merge_requests milestones wiki_blobs).
|
||||
include?(@scope)
|
||||
unless %w(blobs notes issues merge_requests milestones wiki_blobs
|
||||
commits).include?(@scope)
|
||||
@scope = 'blobs'
|
||||
end
|
||||
|
||||
|
|
|
@ -87,6 +87,15 @@ class Repository
|
|||
commits
|
||||
end
|
||||
|
||||
def find_commits_by_message(query)
|
||||
# Limited to 1000 commits for now, could be parameterized?
|
||||
args = %W(git log --pretty=%H --max-count 1000 --grep=#{query})
|
||||
|
||||
git_log_results = Gitlab::Popen.popen(args, path_to_repo).first.lines.map(&:chomp)
|
||||
commits = git_log_results.map { |c| commit(c) }
|
||||
commits
|
||||
end
|
||||
|
||||
def find_branch(name)
|
||||
branches.find { |branch| branch.name == name }
|
||||
end
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
= hidden_field_tag :scope, 'merge_requests'
|
||||
- elsif current_controller?(:wikis)
|
||||
= hidden_field_tag :scope, 'wiki_blobs'
|
||||
- elsif current_controller?(:commits)
|
||||
= hidden_field_tag :scope, 'commits'
|
||||
- else
|
||||
= hidden_field_tag :search_code, true
|
||||
|
||||
|
|
|
@ -42,6 +42,13 @@
|
|||
Wiki
|
||||
%span.badge
|
||||
= @search_results.wiki_blobs_count
|
||||
%li{class: ("active" if @scope == 'commits')}
|
||||
= link_to search_filter_path(scope: 'commits') do
|
||||
= icon('history fw')
|
||||
%span
|
||||
Commits
|
||||
%span.badge
|
||||
= @search_results.commits_count
|
||||
|
||||
- elsif @show_snippets
|
||||
%li{class: ("active" if @scope == 'snippet_blobs')}
|
||||
|
|
2
app/views/search/results/_commits.html.haml
Normal file
2
app/views/search/results/_commits.html.haml
Normal file
|
@ -0,0 +1,2 @@
|
|||
.search-result-row
|
||||
= render 'projects/commits/commit', project: @project, commit: commits
|
|
@ -20,6 +20,8 @@ module Gitlab
|
|||
Kaminari.paginate_array(blobs).page(page).per(per_page)
|
||||
when 'wiki_blobs'
|
||||
Kaminari.paginate_array(wiki_blobs).page(page).per(per_page)
|
||||
when 'commits'
|
||||
Kaminari.paginate_array(commits).page(page).per(per_page)
|
||||
else
|
||||
super
|
||||
end
|
||||
|
@ -27,7 +29,7 @@ module Gitlab
|
|||
|
||||
def total_count
|
||||
@total_count ||= issues_count + merge_requests_count + blobs_count +
|
||||
notes_count + wiki_blobs_count
|
||||
notes_count + wiki_blobs_count + commits_count
|
||||
end
|
||||
|
||||
def blobs_count
|
||||
|
@ -42,6 +44,10 @@ module Gitlab
|
|||
@wiki_blobs_count ||= wiki_blobs.count
|
||||
end
|
||||
|
||||
def commits_count
|
||||
@commits_count ||= commits.count
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def blobs
|
||||
|
@ -70,6 +76,14 @@ module Gitlab
|
|||
Note.where(project_id: limit_project_ids).user.search(query).order('updated_at DESC')
|
||||
end
|
||||
|
||||
def commits
|
||||
if project.empty_repo? || query.blank?
|
||||
[]
|
||||
else
|
||||
project.repository.find_commits_by_message(query).compact
|
||||
end
|
||||
end
|
||||
|
||||
def limit_project_ids
|
||||
[project.id]
|
||||
end
|
||||
|
|
|
@ -5,7 +5,7 @@ namespace :spinach do
|
|||
task :project do
|
||||
cmds = [
|
||||
%W(rake gitlab:setup),
|
||||
%W(spinach --tags ~@admin,~@dashboard,~@profile,~@public,~@snippets),
|
||||
%W(spinach --tags ~@admin,~@dashboard,~@profile,~@public,~@snippets,~@commits),
|
||||
]
|
||||
run_commands(cmds)
|
||||
end
|
||||
|
@ -14,7 +14,7 @@ namespace :spinach do
|
|||
task :other do
|
||||
cmds = [
|
||||
%W(rake gitlab:setup),
|
||||
%W(spinach --tags @admin,@dashboard,@profile,@public,@snippets),
|
||||
%W(spinach --tags @admin,@dashboard,@profile,@public,@snippets,@commits),
|
||||
]
|
||||
run_commands(cmds)
|
||||
end
|
||||
|
|
|
@ -26,6 +26,15 @@ describe Repository do
|
|||
it { is_expected.to eq('c1acaa58bbcbc3eafe538cb8274ba387047b69f8') }
|
||||
end
|
||||
|
||||
describe :find_commits_by_message do
|
||||
subject { repository.find_commits_by_message('submodule').map{ |k| k.id } }
|
||||
|
||||
it { is_expected.to include('5937ac0a7beb003549fc5fd26fc247adbce4a52e') }
|
||||
it { is_expected.to include('6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9') }
|
||||
it { is_expected.to include('cfe32cf61b73a0d5e9f13e774abde7ff789b1660') }
|
||||
it { is_expected.not_to include('913c66a37b4a45b9769037c55c2d238bd0942d2e') }
|
||||
end
|
||||
|
||||
describe :blob_at do
|
||||
context 'blank sha' do
|
||||
subject { repository.blob_at(Gitlab::Git::BLANK_SHA, '.gitignore') }
|
||||
|
|
Loading…
Reference in a new issue