Add committer email column to ssh_signatures table
What does this MR do and why?
What
Adds a committer_email column to the ssh_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=20250722082836
rails db:migrate:up:main VERSION=20250722082836
main: == [advisory_lock_connection] object_id: 140300, pg_backend_pid: 19908
main: == 20250722082836 AddCommitterEmailToSshSignatures: migrating =================
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- add_column(:ssh_signatures, :committer_email, :text, {:if_not_exists=>true})
main: -> 0.0331s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- execute("ALTER TABLE ssh_signatures\nADD CONSTRAINT check_73776e38f9\nCHECK ( char_length(committer_email) <= 255 )\nNOT VALID;\n")
main: -> 0.0040s
main: -- execute("SET statement_timeout TO 0")
main: -> 0.0004s
main: -- execute("ALTER TABLE ssh_signatures VALIDATE CONSTRAINT check_73776e38f9;")
main: -> 0.0008s
main: -- execute("RESET statement_timeout")
main: -> 0.0004s
main: == 20250722082836 AddCommitterEmailToSshSignatures: migrated (0.0613s) ========
main: == [advisory_lock_connection] object_id: 140300, pg_backend_pid: 19908
Down
rails db:migrate:down:main VERSION=20250722082836
rails db:migrate:down:main VERSION=20250722082836
main: == [advisory_lock_connection] object_id: 139600, pg_backend_pid: 77672
main: == 20250722082836 AddCommitterEmailToSshSignatures: reverting =================
main: -- transaction_open?(nil)
main: -> 0.0000s
main: -- remove_column(:ssh_signatures, :committer_email, {:if_exists=>true})
main: -> 0.0442s
main: == 20250722082836 AddCommitterEmailToSshSignatures: reverted (0.0784s) ========
main: == [advisory_lock_connection] object_id: 139600, pg_backend_pid: 77672
References
- Original issue: Rename columns `author_email` on ssh_signature ... (#550368 - closed)
- This also needs to be added to the
gpg_signaturestable: Add committer email column to gpg signatures table (!198688 - merged) - The
author_emailcolumn will be dropped separately beginning in Ignore author email column on ssh_signatures table (!198725 - 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