Add committer email column to gpg signatures table

What does this MR do and why?

What

Adds a committer_email column to the gpg_signatures table.

Why

Following discussion in the related issue, it was determined that we should be checking committer email rather than author email for commit signature verification when mailmapped commits are enabled.

Instead of renaming the table it was suggested in this review that we add a new committer_email column and drop the author_email column separately. This change adds a column committer_email to store the unmailmapped value to compare against the mailmapped value.

Migration Output

Up

rails db:migrate:up:main VERSION=20250722084637
rails db:migrate:up:main VERSION=20250722084637
main: == [advisory_lock_connection] object_id: 140320, pg_backend_pid: 63477
main: == 20250722084637 AddCommitterEmailToGpgSignatures: migrating =================
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- add_column(:gpg_signatures, :committer_email, :text, {:if_not_exists=>true})
main:    -> 0.0375s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- execute("ALTER TABLE gpg_signatures\nADD CONSTRAINT check_0ce2b9f622\nCHECK ( char_length(committer_email) <= 255 )\nNOT VALID;\n")
main:    -> 0.0011s
main: -- execute("SET statement_timeout TO 0")
main:    -> 0.0004s
main: -- execute("ALTER TABLE gpg_signatures VALIDATE CONSTRAINT check_0ce2b9f622;")
main:    -> 0.0012s
main: -- execute("RESET statement_timeout")
main:    -> 0.0005s
main: == 20250722084637 AddCommitterEmailToGpgSignatures: migrated (0.0889s) ========

main: == [advisory_lock_connection] object_id: 140320, pg_backend_pid: 63477

Down

rails db:migrate:down:main VERSION=20250722084637
rails db:migrate:down:main VERSION=20250722084637
main: == [advisory_lock_connection] object_id: 139620, pg_backend_pid: 65608
main: == 20250722084637 AddCommitterEmailToGpgSignatures: reverting =================
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- remove_column(:gpg_signatures, :committer_email, {:if_exists=>true})
main:    -> 0.0525s
main: == 20250722084637 AddCommitterEmailToGpgSignatures: reverted (0.1048s) ========

main: == [advisory_lock_connection] object_id: 139620, pg_backend_pid: 65608

References

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Gavin Hinfey

Merge request reports

Loading