From dd3ddcd72bbfec3ba5bbcd871a9ac68064be7501 Mon Sep 17 00:00:00 2001 From: YarNayar Date: Thu, 8 Dec 2016 17:54:45 +0300 Subject: Allows to search within project by commit's hash Was proposed in #24833 --- lib/gitlab/project_search_results.rb | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'lib/gitlab') diff --git a/lib/gitlab/project_search_results.rb b/lib/gitlab/project_search_results.rb index 6bdf3db9cb8..a66719706be 100644 --- a/lib/gitlab/project_search_results.rb +++ b/lib/gitlab/project_search_results.rb @@ -114,7 +114,25 @@ module Gitlab end def commits - @commits ||= project.repository.find_commits_by_message(query) + @commits ||= find_commits(query) + end + + def find_commits(query) + return [] unless Ability.allowed?(@current_user, :download_code, @project) + + commits = find_commits_by_message(query) + commit_by_sha = find_commit_by_sha(query) + commits << commit_by_sha if commit_by_sha && !commits.include?(commit_by_sha) + commits + end + + def find_commits_by_message(query) + project.repository.find_commits_by_message(query) + end + + def find_commit_by_sha(query) + key = query.strip + project.repository.commit(key) if Commit.valid_hash?(key) end def project_ids_relation -- cgit v1.2.1