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

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