summaryrefslogtreecommitdiff
path: root/app/models/repository.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/repository.rb')
-rw-r--r--app/models/repository.rb31
1 files changed, 30 insertions, 1 deletions
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 90e87de4a5b..cedfed16b20 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -189,6 +189,8 @@ class Repository
return []
end
+ query = Feature.enabled?(:commit_search_trailing_spaces) ? query.strip : query
+
commits = raw_repository.find_commits_by_message(query, ref, path, limit, offset).map do |c|
commit(c)
end
@@ -631,7 +633,11 @@ class Repository
end
def readme_path
- head_tree&.readme_path
+ if Feature.enabled?(:readme_from_gitaly)
+ readme_path_gitaly
+ else
+ head_tree&.readme_path
+ end
end
cache_method :readme_path
@@ -1239,6 +1245,29 @@ class Repository
container.full_path,
container: container)
end
+
+ def readme_path_gitaly
+ return if empty? || root_ref.nil?
+
+ # (?i) to enable case-insensitive mode
+ #
+ # Note: `Gitlab::FileDetector::PATTERNS[:readme]#to_s` won't work because of
+ # incompatibility of regex engines between Rails and Gitaly.
+ regex = "(?i)#{Gitlab::FileDetector::PATTERNS[:readme].source}"
+
+ readmes = search_files_by_regexp(regex, root_ref)
+
+ choose_readme_to_display(readmes)
+ end
+
+ # Extracted from Tree#readme_path
+ def choose_readme_to_display(readmes)
+ previewable_readme = readmes.find { |name| Gitlab::MarkupHelper.previewable?(name) }
+
+ return previewable_readme if previewable_readme
+
+ readmes.find { |name| Gitlab::MarkupHelper.plain?(name) }
+ end
end
Repository.prepend_mod_with('Repository')