diff options
-rw-r--r-- | app/models/ci/pipeline.rb | 4 | ||||
-rw-r--r-- | app/models/project.rb | 8 |
2 files changed, 12 insertions, 0 deletions
diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb index 3727a9861aa..64ab98ff29e 100644 --- a/app/models/ci/pipeline.rb +++ b/app/models/ci/pipeline.rb @@ -480,6 +480,10 @@ module Ci project.commit(git_ref) == commit end + def project_commit(git_ref) + @project_lazy_commit ||= project.lazy_commit(git_ref) + end + def retried @retried ||= (statuses.order(id: :desc) - statuses.latest) end diff --git a/app/models/project.rb b/app/models/project.rb index 351d08eaf63..8f69f405808 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -731,6 +731,14 @@ class Project < ApplicationRecord repository.commit(ref) end + def lazy_commit(ref = 'HEAD') + BatchLoader.for(ref).batch do |refs, loader| + repository.commits_by(oids: refs).each_with_index do |commit, i| + loader.call(refs[i], commit) if commit + end + end + end + def commit_by(oid:) repository.commit_by(oid: oid) end |