diff options
author | Ahmad Sherif <me@ahmadsherif.com> | 2018-02-28 19:56:00 +0300 |
---|---|---|
committer | Ahmad Sherif <me@ahmadsherif.com> | 2018-03-01 20:31:31 +0300 |
commit | 03f3350f3f679122ce4ceacfc840db6e77763dea (patch) | |
tree | 7569d6f1aef894ef13acf262b87b4419f6270d8d /lib/gitlab/gpg | |
parent | 1c2b633b1f4817ca4a3184fb7ff73b1d6b2bbb8f (diff) |
Fetch commit signatures from Gitaly in batches
Closes gitaly#1046
Diffstat (limited to 'lib/gitlab/gpg')
-rw-r--r-- | lib/gitlab/gpg/commit.rb | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/lib/gitlab/gpg/commit.rb b/lib/gitlab/gpg/commit.rb index 90dd569aaf8..6d2278d0876 100644 --- a/lib/gitlab/gpg/commit.rb +++ b/lib/gitlab/gpg/commit.rb @@ -1,15 +1,29 @@ module Gitlab module Gpg class Commit + include Gitlab::Utils::StrongMemoize + def initialize(commit) @commit = commit repo = commit.project.repository.raw_repository - @signature_text, @signed_text = Gitlab::Git::Commit.extract_signature(repo, commit.sha) + @signature_data = Gitlab::Git::Commit.extract_signature_lazily(repo, commit.sha || commit.id) + end + + def signature_text + strong_memoize(:signature_text) do + @signature_data&.itself && @signature_data[0] + end + end + + def signed_text + strong_memoize(:signed_text) do + @signature_data&.itself && @signature_data[1] + end end def has_signature? - !!(@signature_text && @signed_text) + !!(signature_text && signed_text) end def signature @@ -53,7 +67,7 @@ module Gitlab end def verified_signature - @verified_signature ||= GPGME::Crypto.new.verify(@signature_text, signed_text: @signed_text) do |verified_signature| + @verified_signature ||= GPGME::Crypto.new.verify(signature_text, signed_text: signed_text) do |verified_signature| break verified_signature end end |