Introduce projects_settings table and migrate existing project settings in projects

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.

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.

Edited by Lin Jen-Shin