Add project support to `unsigned_commit_shas` for SSH commit signatures
The following discussion from !214739 should be addressed: - [ ] @vyaklushin started a [discussion](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/214739#note_2941569574): > **issue**: I found this code that only supports commit shas without projects. > > ```ruby > # Find commits that are lacking a signature in the database at present > def unsigned_commit_shas(commit_shas) > return [] if commit_shas.empty? > > signed = by_commit_sha(commit_shas).pluck(:commit_sha) > commit_shas - signed > end > > ``` > [source](https://gitlab.com/gitlab-org/gitlab/-/blob/4907e0aa7aaf25d35bf7bf4bc802575481cc4a34/app/models/concerns/commit_signature.rb#L29-35) > > It's used in `BranchHooksService` to create commit signatures after the git push. > > ```ruby > signature_types > .map { |signature| signature.unsigned_commit_shas(commit_shas) } > .reduce(&:&) > ``` > > [source](https://gitlab.com/gitlab-org/gitlab/-/blob/4907e0aa7aaf25d35bf7bf4bc802575481cc4a34/app/services/git/branch_hooks_service.rb#L199-205) > > It shouldn't be a problem right now, since `CreateCommitSignatureWorker` doesn't support `Ssh::Commits`. > > ```ruby > # Instantiate commits first to lazily load the signatures > commits.map! do |commit| > case commit.signature_type > when :PGP > Gitlab::Gpg::Commit.new(commit) > when :X509 > Gitlab::X509::Commit.new(commit) > end > end > ``` > > [source](https://gitlab.com/gitlab-org/gitlab/-/blob/4907e0aa7aaf25d35bf7bf4bc802575481cc4a34/app/workers/create_commit_signature_worker.rb#L30-37) > > But it sounds like a follow up issue. WDYT? :thinking:
issue