Introduce projects_settings table and migrate existing project settings in projects
<!--IssueSummary start--> <details> <summary> Everyone can contribute. [Help move this issue forward](https://handbook.gitlab.com/handbook/marketing/developer-relations/contributor-success/community-contributors-workflows/#contributor-links) while earning points, leveling up and collecting rewards. </summary> - [Close this issue](https://contributors.gitlab.com/manage-issue?action=close&projectId=278964&issueIid=19826) </details> <!--IssueSummary end--> This was originally brought up in https://gitlab.com/gitlab-org/gitlab-ce/issues/37506#note_39571168 and again in https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/9646#note_42531251 I don't know if we have an issue yet, so I created this and we could schedule it. Steps: * [x] Introduce new `project_settings` table: https://gitlab.com/gitlab-org/gitlab/issues/35085 - https://gitlab.com/gitlab-org/gitlab/merge_requests/19761 * [ ] Made sure new columns and up in `project_settings` instead of in `projects` (when possible) * [ ] Migrate a bunch of columns (see below) Columns we might want to move: * import_url * import_status * merge_requests_template * merge_requests_rebase_enabled * import_type * import_source * approvals_before_merge * reset_approvals_on_push * merge_requests_ff_only_enabled * issues_template * import_error * ci_id * shared_runners_enabled * runners_token * build_coverage_regex * build_allow_git_fetch * build_timeout * public_builds * only_allow_merge_if_pipeline_succeeds * has_external_issue_tracker * repository_read_only * request_access_enabled * has_external_wiki * ci_config_path * lfs_enabled * only_allow_merge_if_all_discussions_are_resolved * repository_size_limit * printing_merge_request_link_enabled * auto_cancel_pending_pipelines * service_desk_enabled * import_jid * disable_overriding_approvers_per_merge_request * resolve_outdated_diff_discussions And we might want to separate the import related data as well? Also maybe mirror related stuffs? Some data might also involve some query, which would then need extra inner join if they're in separate table. We need to figure out which settings we really want to be separated, and which ones we don't want.
issue