| Server IP : 188.151.22.197 / Your IP : 216.73.217.74 Web Server : Apache/2.4.62 (Rocky Linux) OpenSSL/3.5.5 System : Linux wsten.se 5.14.0-687.30.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Jul 27 13:09:21 UTC 2026 x86_64 User : apache ( 48) PHP Version : 8.1.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /opt/gitlab/embedded/service/gitlab-rails/scripts/database/ |
Upload File : |
# frozen_string_literal: true
require_relative '../migration_schema_validator'
class SchemaValidator < MigrationSchemaValidator
ALLOW_SCHEMA_CHANGES = 'ALLOW_SCHEMA_CHANGES'
COMMIT_MESSAGE_SKIP_TAG = 'skip-db-structure-check'
def validate!
return if should_skip?
return if schema_changes.empty?
die "#{FILENAME} was changed, and no migrations were added:\n#{schema_changes}" if committed_migrations.empty?
end
private
def schema_changes
@schema_changes ||= run("git diff #{diff_target} HEAD -- #{FILENAME}")
end
def should_skip?
skip_env_present? || skip_commit_present?
end
def skip_env_present?
!ENV[ALLOW_SCHEMA_CHANGES].to_s.empty?
end
def skip_commit_present?
run("git show -s --format=%B -n 1").to_s.include?(COMMIT_MESSAGE_SKIP_TAG)
end
end