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
- Original issue: Rename columns `author_email` on ssh_signature ... (#550368 - closed)
- This also needs to be added to the
ssh_signaturestable: Add committer email column to ssh_signatures table (!198686 - merged) - The
author_emailcolumn will be dropped separately beginning in Ignore author email column on gpg_signatures table (!198729 - merged)
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