From 9ad2a01083fb03f44a08bb93bac962310a93d07a Mon Sep 17 00:00:00 2001 From: Sruthi Chandran Date: Mon, 30 Sep 2019 21:07:59 +0530 Subject: [PATCH] New upstream version 12.1.11 --- .eslintrc.yml | 1 + .gitlab-ci.yml | 2 +- .gitlab/CODEOWNERS | 6 +- .gitlab/ci/docs.gitlab-ci.yml | 9 +- .gitlab/ci/frontend.gitlab-ci.yml | 62 +- .gitlab/ci/global.gitlab-ci.yml | 30 +- .gitlab/ci/memory.gitlab-ci.yml | 42 + .gitlab/ci/rails.gitlab-ci.yml | 136 +- .gitlab/ci/reports.gitlab-ci.yml | 86 +- .gitlab/ci/review.gitlab-ci.yml | 55 +- .gitlab/ci/setup.gitlab-ci.yml | 14 +- .gitlab/ci/test-metadata.gitlab-ci.yml | 14 +- .gitlab/issue_templates/Database Reviewer.md | 34 - .gitlab/issue_templates/Documentation.md | 2 +- .../Change documentation location.md | 2 +- .mdlrc | 7 + .mdlrc.style | 21 + .rubocop_todo.yml | 3 - CHANGELOG.md | 374 +++- Dangerfile | 1 + GITALY_SERVER_VERSION | 2 +- GITLAB_PAGES_VERSION | 2 +- Gemfile | 28 +- Gemfile.lock | 175 +- PROCESS.md | 49 +- README.md | 2 +- VERSION | 2 +- .../images/auth_buttons/salesforce_64.png | Bin 0 -> 8774 bytes app/assets/javascripts/api.js | 22 + .../behaviors/markdown/render_mermaid.js | 11 +- .../javascripts/boards/components/board.js | 40 +- .../boards/components/board_blank_state.vue | 22 +- .../boards/components/board_form.vue | 216 ++ .../boards/components/board_list.vue | 4 +- .../boards/components/board_new_issue.vue | 13 +- .../boards/components/board_sidebar.js | 1 + .../boards/components/boards_selector.vue | 334 +++ .../boards/components/issue_card_inner.vue | 25 +- .../boards/components/issue_time_estimate.vue | 10 +- .../boards/components/modal/empty_state.vue | 30 +- .../boards/components/modal/footer.vue | 16 +- .../boards/components/modal/header.vue | 7 +- .../boards/components/modal/list.vue | 4 +- .../boards/components/project_select.vue | 9 +- .../components/sidebar/remove_issue.vue | 2 +- .../javascripts/boards/config_toggle.js | 1 + .../boards/filtered_search_boards.js | 3 +- app/assets/javascripts/boards/index.js | 42 +- .../javascripts/boards/mixins/modal_footer.js | 1 + .../boards/mixins/sortable_default_options.js | 4 +- app/assets/javascripts/boards/models/issue.js | 6 +- app/assets/javascripts/boards/models/list.js | 16 +- .../javascripts/boards/models/milestone.js | 4 +- .../boards/mount_multiple_boards_switcher.js | 35 + .../boards/services/board_service.js | 92 +- .../javascripts/boards/stores/boards_store.js | 156 ++ app/assets/javascripts/boards/toggle_focus.js | 1 + .../branches/components/divergence_graph.vue | 72 + .../branches/components/graph_bar.vue | 69 + app/assets/javascripts/branches/constants.js | 6 + .../javascripts/branches/divergence_graph.js | 51 + .../clusters/components/application_row.vue | 4 +- .../components/knative_domain_editor.vue | 10 +- .../uninstall_application_button.vue | 3 +- ...install_application_confirmation_modal.vue | 4 +- .../services/application_state_machine.js | 6 + app/assets/javascripts/commons/index.js | 3 + .../commons/nav/user_merge_requests.js | 67 + app/assets/javascripts/commons/polyfills.js | 1 + .../components/dropdown.vue | 58 + .../components/project_form_group.vue | 140 ++ .../confidential_merge_request/index.js | 30 + .../confidential_merge_request/state.js | 5 + .../create_merge_request_dropdown.js | 47 +- .../cycle_analytics/cycle_analytics_bundle.js | 10 +- .../components/comment_resolve_btn.js | 8 +- .../diffs/components/commit_item.vue | 4 +- .../components/compare_versions_dropdown.vue | 16 +- .../components/diff_discussion_reply.vue | 55 + .../diffs/components/diff_discussions.vue | 1 - .../diffs/components/diff_file.vue | 22 +- .../diffs/components/diff_file_header.vue | 8 +- .../diffs/components/diff_gutter_avatars.vue | 29 +- .../components/diff_line_gutter_content.vue | 17 +- .../components/inline_diff_comment_row.vue | 46 +- .../diffs/components/inline_diff_view.vue | 1 + .../components/parallel_diff_comment_row.vue | 97 +- .../diffs/components/parallel_diff_view.vue | 2 + .../diffs/mixins/draft_comments.js | 2 + app/assets/javascripts/diffs/store/actions.js | 34 +- .../javascripts/diffs/store/mutation_types.js | 2 + .../javascripts/diffs/store/mutations.js | 65 +- app/assets/javascripts/diffs/store/utils.js | 45 + .../environments/components/container.vue | 1 + .../components/environment_actions.vue | 12 +- .../components/environment_item.vue | 19 +- .../components/environment_monitoring.vue | 3 +- .../environment_terminal_button.vue | 3 +- .../components/environments_app.vue | 6 + .../components/environments_table.vue | 7 + app/assets/javascripts/environments/index.js | 2 + .../environments/mixins/container_mixin.js | 5 + .../components/error_tracking_form.vue | 9 +- .../javascripts/event_tracking/notes.js | 1 + app/assets/javascripts/filterable_list.js | 6 +- .../available_dropdown_mappings.js | 6 +- .../recent_searches_dropdown_content.vue | 6 +- .../javascripts/filtered_search/constants.js | 2 +- .../filtered_search_dropdown_manager.js | 6 +- .../filtered_search_manager.js | 3 +- .../filtered_search/visual_token_value.js | 4 +- app/assets/javascripts/gfm_auto_complete.js | 30 +- app/assets/javascripts/group.js | 4 +- .../groups/components/group_item.vue | 77 +- .../groups/components/item_actions.vue | 30 +- .../groups/components/item_caret.vue | 2 +- .../groups/components/item_stats.vue | 8 +- .../groups/components/item_type_icon.vue | 2 +- app/assets/javascripts/groups_select.js | 4 +- .../components/commit_sidebar/list_item.vue | 3 +- .../ide/components/external_link.vue | 2 +- .../ide/components/ide_tree_list.vue | 7 +- .../ide/components/repo_editor.vue | 59 +- .../ide/components/repo_file_status_icon.vue | 5 +- .../javascripts/ide/components/repo_tab.vue | 5 +- app/assets/javascripts/ide/lib/files.js | 5 +- app/assets/javascripts/ide/stores/actions.js | 19 +- .../javascripts/ide/stores/actions/file.js | 4 +- .../ide/stores/modules/commit/actions.js | 10 +- .../javascripts/ide/stores/mutation_types.js | 2 + .../javascripts/ide/stores/mutations.js | 22 +- .../javascripts/ide/stores/mutations/file.js | 32 +- app/assets/javascripts/ide/stores/state.js | 1 + app/assets/javascripts/ide/stores/utils.js | 10 +- app/assets/javascripts/ide/utils.js | 2 +- .../issuable_bulk_update_actions.js | 4 +- app/assets/javascripts/issuable_index.js | 17 +- .../issuable_init_bulk_update_sidebar.js | 19 + .../issuable_suggestions/components/app.vue | 2 +- .../{issues.graphql => issues.query.graphql} | 0 .../javascripts/issue_show/components/app.vue | 7 +- .../issue_show/components/edit_actions.vue | 4 +- .../components/fields/description.vue | 6 +- .../fields/description_template.vue | 25 +- .../issue_show/components/fields/title.vue | 6 +- .../issue_show/components/locked_warning.vue | 20 +- .../issue_show/components/pinned_links.vue | 31 +- .../jobs/components/environments_block.vue | 4 +- .../jobs/components/job_log_controllers.vue | 8 +- .../javascripts/jobs/components/sidebar.vue | 5 +- app/assets/javascripts/labels_select.js | 7 +- app/assets/javascripts/lib/graphql.js | 2 +- .../javascripts/lib/utils/common_utils.js | 8 - .../javascripts/lib/utils/datetime_utility.js | 17 +- .../javascripts/lib/utils/text_utility.js | 11 +- app/assets/javascripts/main.js | 6 + app/assets/javascripts/main_ee.js | 1 + app/assets/javascripts/manual_ordering.js | 58 + .../monitoring/components/charts/area.vue | 32 +- .../monitoring/components/charts/column.vue | 120 + .../components/charts/single_stat.vue | 29 +- .../monitoring/components/dashboard.vue | 145 +- .../monitoring/components/empty_state.vue | 93 +- .../monitoring/components/panel_type.vue | 62 + .../monitoring/monitoring_bundle.js | 15 +- .../javascripts/monitoring/stores/actions.js | 22 +- .../monitoring/stores/mutation_types.js | 3 + .../monitoring/stores/mutations.js | 11 + .../javascripts/monitoring/stores/state.js | 5 + .../javascripts/monitoring/stores/utils.js | 44 +- app/assets/javascripts/monitoring/utils.js | 24 + .../mr_popover/components/mr_popover.vue | 2 +- ...st.graphql => merge_request.query.graphql} | 2 +- app/assets/javascripts/notes.js | 4 +- .../notes/components/comment_form.vue | 54 +- .../notes/components/diff_with_note.vue | 9 +- .../notes/components/discussion_actions.vue | 17 +- .../notes/components/discussion_counter.vue | 6 +- .../notes/components/discussion_notes.vue | 57 +- .../discussion_notes_replies_wrapper.vue | 27 + .../discussion_reply_placeholder.vue | 8 +- .../discussion_resolve_with_issue_button.vue | 2 +- .../notes/components/note_actions.vue | 2 +- .../components/note_actions/reply_button.vue | 2 +- .../notes/components/note_awards_list.vue | 16 +- .../notes/components/note_form.vue | 36 +- .../notes/components/note_header.vue | 4 +- .../components/note_signed_out_widget.vue | 19 +- .../notes/components/noteable_discussion.vue | 51 +- .../notes/components/noteable_note.vue | 18 +- .../notes/components/notes_app.vue | 3 +- app/assets/javascripts/notes/index.js | 5 +- .../javascripts/notes/mixins/resolvable.js | 6 +- .../notes/services/notes_service.js | 10 - .../javascripts/notes/stores/actions.js | 31 +- .../javascripts/notes/stores/getters.js | 6 +- .../pages/dashboard/issues/index.js | 2 + .../pages/dashboard/todos/index/todos.js | 4 +- .../javascripts/pages/groups/issues/index.js | 6 + .../pages/profiles/two_factor_auths/index.js | 4 +- .../pages/projects/branches/index/index.js | 2 + .../javascripts/pages/projects/issues/form.js | 4 +- .../pages/projects/issues/index/index.js | 2 + .../pages/projects/pages_domains/form.js | 16 - .../components/project_feature_setting.vue | 5 +- .../permissions/components/settings_panel.vue | 72 +- .../projects/shared/permissions/constants.js | 27 + .../mixins/settings_pannel_mixin.js | 26 + .../javascripts/pages/sessions/new/index.js | 2 +- .../pages/sessions/new/username_validator.js | 160 +- .../javascripts/pages/users/user_tabs.js | 4 +- app/assets/javascripts/pdf/index.vue | 16 +- app/assets/javascripts/pdf/page/index.vue | 4 +- .../components/detailed_metric.vue | 4 +- .../components/performance_bar_app.vue | 29 +- .../components/simple_metric.vue | 33 - .../pipelines/components/header_component.vue | 5 +- .../pipelines/components/pipeline_url.vue | 5 +- .../pipelines/components/pipelines_table.vue | 5 + .../components/pipelines_table_row.vue | 6 +- .../javascripts/pipelines/mixins/pipelines.js | 6 +- .../pipelines/pipeline_details_mediator.js | 2 +- .../javascripts/projects/project_new.js | 4 +- .../projects/projects_filterable_list.js | 7 + .../commit_pipeline_status_component.vue | 4 +- app/assets/javascripts/projects_list.js | 4 +- .../javascripts/registry/components/app.vue | 134 +- .../components/collapsible_container.vue | 27 +- .../registry/components/svg_message.vue | 26 + .../registry/components/table_registry.vue | 55 +- app/assets/javascripts/registry/index.js | 10 + .../javascripts/registry/stores/actions.js | 6 +- .../components/related_merge_requests.vue | 2 +- .../releases/components/release_block.vue | 34 +- .../reports/components/issue_status_icon.vue | 2 +- .../reports/components/report_item.vue | 11 +- .../reports/components/report_section.vue | 4 +- .../reports/components/summary_row.vue | 14 +- .../repository/components/breadcrumbs.vue | 190 +- .../repository/components/last_commit.vue | 154 ++ .../repository/components/table/index.vue | 9 +- .../repository/components/table/row.vue | 58 +- app/assets/javascripts/repository/graphql.js | 17 +- app/assets/javascripts/repository/index.js | 44 +- app/assets/javascripts/repository/log_tree.js | 64 + .../javascripts/repository/mixins/get_ref.js | 2 +- .../queries/getCommit.query.graphql | 10 + .../queries/getCommits.query.graphql | 10 + ...etFiles.graphql => getFiles.query.graphql} | 3 + .../queries/getPermissions.query.graphql | 9 + ...h.graphql => getProjectPath.query.graphql} | 0 ...phql => getProjectShortPath.query.graphql} | 0 .../{getRef.graphql => getRef.query.graphql} | 0 .../queries/pathLastCommit.query.graphql | 29 + .../serverless/components/area.vue | 15 +- .../components/function_details.vue | 4 +- .../serverless/components/functions.vue | 47 +- .../components/assignees/assignee_title.vue | 10 +- .../components/assignees/assignees.vue | 29 +- .../assignees/sidebar_assignees.vue | 7 +- .../confidential/edit_form_buttons.vue | 3 +- .../time_tracking/collapsed_state.vue | 2 +- .../time_tracking/comparison_pane.vue | 29 +- .../time_tracking/sidebar_time_tracking.vue | 1 + .../time_tracking/spent_only_pane.vue | 19 +- .../components/time_tracking/time_tracker.vue | 5 + .../sidebar/components/todo_toggle/todo.vue | 4 +- .../sidebar/mount_milestone_sidebar.js | 4 +- .../javascripts/sidebar/sidebar_mediator.js | 2 +- .../sidebar/stores/sidebar_store.js | 3 +- .../components/comment.js | 50 +- .../components/constants.js | 8 +- .../visual_review_toolbar/components/index.js | 16 +- .../visual_review_toolbar/components/login.js | 3 +- .../visual_review_toolbar/components/note.js | 14 +- .../visual_review_toolbar/components/utils.js | 6 + .../components/wrapper.js | 36 +- .../visual_review_toolbar/index.js | 9 +- .../visual_review_toolbar/store/state.js | 3 +- .../visual_review_toolbar/styles/toolbar.css | 49 +- .../components/deployment.vue | 4 +- .../components/mr_widget_header.vue | 2 +- .../components/mr_widget_icon.vue | 2 +- .../components/mr_widget_pipeline.vue | 10 +- .../components/mr_widget_status_icon.vue | 4 +- .../components/states/commits_header.vue | 2 +- .../states/mr_widget_auto_merge_enabled.vue | 13 +- .../components/states/mr_widget_rebase.vue | 43 +- .../components/states/nothing_to_merge.vue | 34 +- .../components/states/ready_to_merge.vue | 5 +- .../states/unresolved_discussions.vue | 2 +- .../components/states/work_in_progress.vue | 20 +- .../mr_widget_options.vue | 10 +- .../services/mr_widget_service.js | 4 +- .../stores/mr_widget_store.js | 3 +- .../components/changed_file_icon.vue | 3 +- .../vue_shared/components/commit.vue | 7 +- .../content_viewer/lib/viewer_utils.js | 1 + .../content_viewer/viewers/image_viewer.vue | 4 +- .../viewers/markdown_viewer.vue | 2 +- .../components/deprecated_modal.vue | 6 +- .../components/droplab_dropdown_button.vue | 2 +- .../vue_shared/components/file_row.vue | 2 +- .../components/filtered_search_dropdown.vue | 4 +- .../components/header_ci_component.vue | 13 +- .../components/issue/issue_warning.vue | 8 +- .../issue/related_issuable_item.vue | 155 +- .../vue_shared/components/markdown/field.vue | 30 +- .../components/markdown/suggestions.vue | 3 +- .../components/markdown/toolbar.vue | 25 +- .../vue_shared/components/memory_graph.vue | 3 +- .../components/modal_copy_button.vue | 6 + .../components/notes/placeholder_note.vue | 2 +- .../components/notes/system_note.vue | 2 +- .../vue_shared/components/paginated_list.vue | 35 + .../components/pagination/constants.js | 4 +- .../components/project_avatar/image.vue | 25 +- .../sidebar/collapsed_grouped_date_picker.vue | 4 +- .../components/sidebar/date_picker.vue | 8 +- .../components/sidebar/toggle_sidebar.vue | 2 +- .../user_avatar/user_avatar_image.vue | 3 +- .../vue_shared/directives/tooltip.js | 4 + .../javascripts/vue_shared/mixins/is_ee.js | 10 - .../mixins/related_issuable_mixin.js | 3 + app/assets/stylesheets/application.scss | 8 +- app/assets/stylesheets/bootstrap.scss | 37 - .../stylesheets/bootstrap_migration.scss | 7 +- app/assets/stylesheets/components/avatar.scss | 5 + .../stylesheets/components/popover.scss | 7 +- .../components/related_items_list.scss | 83 +- app/assets/stylesheets/components/toast.scss | 15 +- app/assets/stylesheets/csslab.scss | 2 +- app/assets/stylesheets/errors.scss | 12 +- app/assets/stylesheets/framework.scss | 4 +- .../stylesheets/framework/asciidoctor.scss | 27 - app/assets/stylesheets/framework/blocks.scss | 1 - .../stylesheets/framework/dropdowns.scss | 3 +- app/assets/stylesheets/framework/filters.scss | 53 +- app/assets/stylesheets/framework/icons.scss | 3 - app/assets/stylesheets/framework/lists.scss | 2 - app/assets/stylesheets/framework/mixins.scss | 2 +- app/assets/stylesheets/framework/modal.scss | 51 +- app/assets/stylesheets/framework/panels.scss | 1 - .../secondary_navigation_elements.scss | 1 + .../framework/system_messages.scss | 10 - .../stylesheets/framework/typography.scss | 70 +- .../stylesheets/framework/variables.scss | 4 +- app/assets/stylesheets/pages/boards.scss | 72 +- app/assets/stylesheets/pages/branches.scss | 36 - app/assets/stylesheets/pages/builds.scss | 1 + app/assets/stylesheets/pages/commits.scss | 2 +- .../stylesheets/pages/container_registry.scss | 10 + app/assets/stylesheets/pages/diff.scss | 22 +- app/assets/stylesheets/pages/groups.scss | 80 +- app/assets/stylesheets/pages/help.scss | 6 + app/assets/stylesheets/pages/issuable.scss | 6 +- app/assets/stylesheets/pages/issues.scss | 14 + app/assets/stylesheets/pages/labels.scss | 4 + .../stylesheets/pages/merge_requests.scss | 27 +- app/assets/stylesheets/pages/notes.scss | 48 +- app/assets/stylesheets/pages/pipelines.scss | 4 +- app/assets/stylesheets/pages/projects.scss | 5 - app/assets/stylesheets/pages/reports.scss | 9 +- app/assets/stylesheets/pages/wiki.scss | 5 +- .../admin/application_settings_controller.rb | 91 +- app/controllers/application_controller.rb | 6 + app/controllers/boards/issues_controller.rb | 32 +- app/controllers/chaos_controller.rb | 87 +- app/controllers/concerns/boards_responses.rb | 3 +- app/controllers/concerns/continue_params.rb | 2 +- .../enforces_two_factor_authentication.rb | 3 +- app/controllers/concerns/internal_redirect.rb | 4 +- app/controllers/concerns/issuable_actions.rb | 4 +- .../concerns/issuable_collections.rb | 6 + .../concerns/multiple_boards_actions.rb | 90 + .../requires_whitelisted_monitoring_client.rb | 6 +- .../dashboard/projects_controller.rb | 3 +- app/controllers/dashboard/todos_controller.rb | 5 +- app/controllers/graphql_controller.rb | 5 - app/controllers/groups/clusters_controller.rb | 9 - app/controllers/groups_controller.rb | 9 +- .../projects/application_controller.rb | 6 - app/controllers/projects/boards_controller.rb | 2 +- .../projects/branches_controller.rb | 38 +- .../cycle_analytics/events_controller.rb | 2 +- .../projects/cycle_analytics_controller.rb | 2 +- .../projects/deployments_controller.rb | 14 +- .../projects/environments_controller.rb | 19 +- app/controllers/projects/forks_controller.rb | 18 +- .../projects/imports_controller.rb | 8 +- app/controllers/projects/issues_controller.rb | 27 +- app/controllers/projects/jobs_controller.rb | 8 +- .../merge_requests/application_controller.rb | 7 + .../merge_requests/content_controller.rb | 22 + .../projects/merge_requests_controller.rb | 16 +- .../projects/pages_domains_controller.rb | 8 +- app/controllers/projects/refs_controller.rb | 1 + .../registry/repositories_controller.rb | 2 + .../settings/repository_controller.rb | 2 +- app/controllers/projects/tags_controller.rb | 3 +- app/controllers/projects_controller.rb | 2 +- app/controllers/registrations_controller.rb | 30 +- app/controllers/search_controller.rb | 2 + .../acts_as_taggable_on/tags_finder.rb | 3 +- app/finders/boards/visits_finder.rb | 26 + app/finders/branches_finder.rb | 14 + app/finders/environments_finder.rb | 29 + app/finders/issuable_finder.rb | 2 +- app/finders/notes_finder.rb | 16 +- app/finders/runner_jobs_finder.rb | 19 +- app/graphql/gitlab_schema.rb | 3 + app/graphql/mutations/award_emojis/add.rb | 25 + app/graphql/mutations/award_emojis/base.rb | 39 + app/graphql/mutations/award_emojis/remove.rb | 33 + app/graphql/mutations/award_emojis/toggle.rb | 40 + app/graphql/mutations/base_mutation.rb | 8 + app/graphql/mutations/merge_requests/base.rb | 1 - app/graphql/mutations/notes/base.rb | 32 + app/graphql/mutations/notes/create/base.rb | 49 + .../mutations/notes/create/diff_note.rb | 33 + .../mutations/notes/create/image_diff_note.rb | 33 + app/graphql/mutations/notes/create/note.rb | 40 + app/graphql/mutations/notes/destroy.rb | 28 + app/graphql/mutations/notes/update.rb | 38 + .../types/award_emojis/award_emoji_type.rb | 46 + app/graphql/types/base_field.rb | 19 +- app/graphql/types/base_input_object.rb | 1 + app/graphql/types/base_object.rb | 1 + app/graphql/types/ci/detailed_status_type.rb | 3 + app/graphql/types/commit_type.rb | 30 + app/graphql/types/diff_paths_input_type.rb | 12 + app/graphql/types/diff_refs_type.rb | 14 + app/graphql/types/issue_state_enum.rb | 3 + app/graphql/types/issue_type.rb | 2 + app/graphql/types/label_type.rb | 1 + app/graphql/types/merge_request_state_enum.rb | 3 + app/graphql/types/merge_request_type.rb | 5 +- app/graphql/types/mutation_type.rb | 10 +- app/graphql/types/namespace_type.rb | 1 + .../notes/diff_image_position_input_type.rb | 20 + .../notes/diff_position_base_input_type.rb | 22 + .../types/notes/diff_position_input_type.rb | 16 + app/graphql/types/notes/diff_position_type.rb | 10 +- app/graphql/types/notes/discussion_type.rb | 8 + app/graphql/types/notes/note_type.rb | 2 + .../types/permission_types/merge_request.rb | 4 +- app/graphql/types/project_type.rb | 5 +- app/graphql/types/repository_type.rb | 6 +- app/graphql/types/task_completion_status.rb | 4 + app/graphql/types/tree/blob_type.rb | 3 + app/graphql/types/tree/submodule_type.rb | 6 + app/graphql/types/tree/tree_entry_type.rb | 3 + app/graphql/types/tree/tree_type.rb | 14 +- app/helpers/appearances_helper.rb | 5 +- app/helpers/application_settings_helper.rb | 11 +- app/helpers/auth_helper.rb | 2 +- app/helpers/blob_helper.rb | 11 +- app/helpers/boards_helper.rb | 22 +- app/helpers/branches_helper.rb | 8 - app/helpers/groups_helper.rb | 2 +- app/helpers/icons_helper.rb | 21 +- app/helpers/issuables_helper.rb | 11 +- app/helpers/issues_helper.rb | 15 + app/helpers/markup_helper.rb | 14 +- app/helpers/onboarding_experiment_helper.rb | 7 + app/helpers/preferences_helper.rb | 2 +- app/helpers/projects_helper.rb | 2 +- app/helpers/recaptcha_experiment_helper.rb | 7 + app/helpers/search_helper.rb | 5 +- app/helpers/sorting_helper.rb | 83 +- app/helpers/storage_helper.rb | 2 +- app/helpers/submodule_helper.rb | 24 +- app/helpers/todos_helper.rb | 2 +- app/helpers/tree_helper.rb | 39 + app/helpers/visibility_level_helper.rb | 22 +- app/mailers/emails/notes.rb | 4 +- app/models/active_session.rb | 12 +- app/models/application_setting.rb | 26 +- .../application_setting_implementation.rb | 22 +- app/models/board.rb | 5 +- app/models/broadcast_message.rb | 2 +- app/models/chat_team.rb | 2 +- app/models/ci/build.rb | 4 +- app/models/ci/pipeline.rb | 11 +- app/models/ci/pipeline_schedule.rb | 26 +- app/models/ci/trigger.rb | 11 +- app/models/clusters/applications/ingress.rb | 15 +- app/models/clusters/applications/jupyter.rb | 10 +- app/models/clusters/applications/knative.rb | 2 +- .../clusters/applications/prometheus.rb | 8 - app/models/clusters/applications/runner.rb | 17 +- app/models/clusters/clusters_hierarchy.rb | 104 + .../clusters/concerns/application_core.rb | 10 + .../clusters/concerns/application_status.rb | 24 +- app/models/clusters/instance.rb | 4 - app/models/clusters/platforms/kubernetes.rb | 71 +- app/models/concerns/cache_markdown_field.rb | 15 +- app/models/concerns/cacheable_attributes.rb | 12 +- app/models/concerns/ci/contextable.rb | 1 + app/models/concerns/deployable.rb | 1 + app/models/concerns/deployment_platform.rb | 65 +- app/models/concerns/from_union.rb | 6 +- app/models/concerns/has_status.rb | 66 +- app/models/concerns/issuable.rb | 4 +- app/models/concerns/mentionable.rb | 3 + .../concerns/project_api_compatibility.rb | 18 + .../project_features_compatibility.rb | 54 +- app/models/concerns/reactive_caching.rb | 8 +- app/models/concerns/relative_positioning.rb | 6 +- app/models/concerns/routable.rb | 2 +- .../concerns/service_push_data_validations.rb | 43 + app/models/concerns/stepable.rb | 35 + .../concerns/storage/legacy_namespace.rb | 2 +- app/models/concerns/token_authenticatable.rb | 2 +- .../concerns/update_project_statistics.rb | 19 +- app/models/cycle_analytics.rb | 46 - app/models/cycle_analytics/base.rb | 27 + app/models/cycle_analytics/project_level.rb | 22 + app/models/deploy_token.rb | 14 +- app/models/deployment.rb | 31 +- app/models/deployment_metrics.rb | 61 + app/models/discussion.rb | 11 + app/models/email.rb | 3 +- app/models/environment.rb | 23 +- app/models/environment_status.rb | 24 +- app/models/group.rb | 6 +- app/models/issue.rb | 3 - app/models/label_note.rb | 18 +- app/models/list.rb | 1 + app/models/merge_request.rb | 93 +- app/models/merge_requests_closing_issues.rb | 2 +- app/models/namespace.rb | 21 +- app/models/namespace/aggregation_schedule.rb | 55 + .../namespace/root_storage_statistics.rb | 38 + app/models/note.rb | 4 +- app/models/pages_domain.rb | 52 +- app/models/postgresql/replication_slot.rb | 2 +- app/models/project.rb | 71 +- app/models/project_auto_devops.rb | 2 +- app/models/project_feature.rb | 20 + app/models/project_import_state.rb | 2 +- .../project_services/bugzilla_service.rb | 18 +- app/models/project_services/ci_service.rb | 2 +- .../custom_issue_tracker_service.rb | 20 +- .../project_services/drone_ci_service.rb | 24 +- .../gitlab_issue_tracker_service.rb | 10 +- .../project_services/issue_tracker_service.rb | 33 + app/models/project_services/jira_service.rb | 43 +- .../project_services/kubernetes_service.rb | 138 +- .../project_services/redmine_service.rb | 18 +- .../slash_commands_service.rb | 2 +- .../project_services/teamcity_service.rb | 78 +- .../project_services/youtrack_service.rb | 12 +- app/models/project_statistics.rb | 25 +- app/models/prometheus_metric.rb | 65 +- app/models/prometheus_metric_enums.rb | 70 + app/models/release.rb | 10 +- app/models/repository.rb | 53 +- app/models/resource_label_event.rb | 7 +- app/models/service.rb | 2 +- app/models/snippet.rb | 4 + app/models/ssh_host_key.rb | 2 +- app/models/storage/legacy_project.rb | 2 +- app/models/todo.rb | 2 +- app/models/uploads/base.rb | 2 +- app/models/user.rb | 35 +- app/policies/award_emoji_policy.rb | 11 + app/policies/ci/trigger_policy.rb | 2 +- app/policies/clusters/instance_policy.rb | 10 +- app/policies/concerns/clusterable_actions.rb | 14 - app/policies/group_policy.rb | 7 - app/policies/project_policy.rb | 10 +- app/presenters/award_emoji_presenter.rb | 27 + app/presenters/clusterable_presenter.rb | 14 +- app/presenters/commit_presenter.rb | 8 +- app/serializers/board_simple_entity.rb | 1 + app/serializers/current_board_entity.rb | 6 + app/serializers/current_board_serializer.rb | 5 + app/serializers/diff_file_base_entity.rb | 11 +- app/serializers/diffs_entity.rb | 5 +- app/serializers/discussion_serializer.rb | 14 + app/serializers/environment_status_entity.rb | 6 +- .../merge_request_widget_entity.rb | 8 +- app/serializers/submodule_entity.rb | 25 - app/serializers/test_suite_comparer_entity.rb | 29 +- app/services/akismet_service.rb | 4 +- app/services/audit_event_service.rb | 6 +- app/services/auto_merge/base_service.rb | 14 +- .../merge_when_pipeline_succeeds_service.rb | 10 +- app/services/auto_merge_service.rb | 6 + app/services/boards/create_service.rb | 2 +- app/services/boards/destroy_service.rb | 11 + app/services/boards/issues/move_service.rb | 67 +- app/services/boards/update_service.rb | 9 + app/services/boards/visits/latest_service.rb | 19 - .../diverging_commit_counts_service.rb | 32 + app/services/ci/archive_trace_service.rb | 4 +- .../ci/compare_reports_base_service.rb | 6 +- app/services/ci/create_pipeline_service.rb | 2 +- app/services/ci/process_pipeline_service.rb | 4 +- app/services/ci/register_job_service.rb | 2 +- .../check_uninstall_progress_service.rb | 1 + app/services/clusters/create_service.rb | 17 +- .../clusters/gcp/finalize_creation_service.rb | 3 - app/services/clusters/gcp/kubernetes.rb | 2 + ...reate_or_update_service_account_service.rb | 41 +- .../fetch_kubernetes_token_service.rb | 19 +- .../concerns/exclusive_lease_guard.rb | 2 +- app/services/deploy_tokens/create_service.rb | 4 +- .../update_diff_position_service.rb | 3 +- app/services/git/branch_hooks_service.rb | 8 +- app/services/git/wiki_push_service.rb | 9 + app/services/groups/create_service.rb | 3 +- app/services/groups/destroy_service.rb | 2 +- app/services/issuable/bulk_update_service.rb | 10 +- .../issuable/clone/content_rewriter.rb | 6 +- app/services/issuable_base_service.rb | 17 +- app/services/issues/reorder_service.rb | 48 + app/services/issues/update_service.rb | 5 +- app/services/labels/create_service.rb | 2 +- app/services/lfs/file_transformer.rb | 10 +- app/services/merge_requests/base_service.rb | 4 +- app/services/merge_requests/close_service.rb | 2 +- .../create_from_issue_service.rb | 36 +- .../merge_requests/merge_base_service.rb | 11 + app/services/merge_requests/merge_service.rb | 8 +- .../merge_requests/merge_to_ref_service.rb | 48 +- .../mergeability_check_service.rb | 159 ++ app/services/merge_requests/rebase_service.rb | 4 +- .../merge_requests/refresh_service.rb | 6 +- app/services/merge_requests/update_service.rb | 2 +- .../statistics_refresher_service.rb | 22 + ...obtain_lets_encrypt_certificate_service.rb | 12 +- app/services/projects/after_import_service.rb | 2 +- app/services/projects/create_service.rb | 2 +- app/services/projects/destroy_service.rb | 2 +- .../migrate_attachments_service.rb | 2 +- .../rollback_attachments_service.rb | 2 +- .../hashed_storage/rollback_service.rb | 2 +- .../projects/import_export/export_service.rb | 4 +- .../projects/propagate_service_template.rb | 2 +- .../projects/update_statistics_service.rb | 2 +- app/services/prometheus/adapter_service.rb | 7 +- app/services/releases/concerns.rb | 4 + app/services/releases/create_service.rb | 1 + .../self_monitoring/project/create_service.rb | 132 ++ app/services/service_response.rb | 15 +- app/services/submit_usage_ping_service.rb | 2 +- app/services/system_note_service.rb | 31 +- app/services/users/build_service.rb | 10 +- app/services/users/update_service.rb | 25 +- app/services/web_hook_service.rb | 2 +- app/uploaders/file_mover.rb | 2 +- app/uploaders/file_uploader.rb | 2 +- app/uploaders/personal_file_uploader.rb | 2 +- app/validators/namespace_name_validator.rb | 12 - .../application_settings/_abuse.html.haml | 2 +- .../application_settings/_ci_cd.html.haml | 2 +- .../application_settings/_email.html.haml | 2 +- .../application_settings/_gitaly.html.haml | 2 +- .../application_settings/_grafana.html.haml | 17 + .../application_settings/_help_page.html.haml | 2 +- .../application_settings/_influx.html.haml | 2 +- .../application_settings/_ip_limits.html.haml | 2 +- .../_localization.html.haml | 9 +- .../application_settings/_logging.html.haml | 38 - .../application_settings/_outbound.html.haml | 2 +- .../application_settings/_pages.html.haml | 37 +- .../_performance.html.haml | 2 +- .../_performance_bar.html.haml | 2 +- .../application_settings/_plantuml.html.haml | 2 +- .../_prometheus.html.haml | 2 +- .../application_settings/_realtime.html.haml | 2 +- .../application_settings/_registry.html.haml | 2 +- .../_repository_check.html.haml | 2 +- .../_repository_mirrors_form.html.haml | 2 +- .../_repository_storage.html.haml | 2 +- .../application_settings/_spam.html.haml | 5 +- .../_third_party_offers.html.haml | 2 +- .../application_settings/_usage.html.haml | 2 +- .../metrics_and_profiling.html.haml | 11 + .../application_settings/reporting.html.haml | 11 - app/views/admin/groups/show.html.haml | 6 +- app/views/admin/projects/show.html.haml | 6 +- app/views/admin/runners/index.html.haml | 2 +- app/views/admin/services/_form.html.haml | 2 +- app/views/admin/users/show.html.haml | 7 +- app/views/ci/status/_icon.html.haml | 13 +- app/views/clusters/clusters/_form.html.haml | 2 +- .../clusters/clusters/gcp/_form.html.haml | 9 - .../dashboard/milestones/index.html.haml | 2 +- app/views/dashboard/todos/_todo.html.haml | 2 +- app/views/dashboard/todos/index.html.haml | 24 +- app/views/devise/sessions/_new_base.html.haml | 6 +- app/views/devise/shared/_signup_box.html.haml | 22 +- .../devise/shared/_tabs_normal.html.haml | 2 +- app/views/discussions/_discussion.html.haml | 4 +- .../_new_issue_for_discussion.html.haml | 4 +- .../doorkeeper/authorizations/new.html.haml | 2 +- app/views/groups/issues.html.haml | 9 + app/views/groups/settings/_general.html.haml | 2 +- app/views/help/index.html.haml | 2 +- app/views/layouts/_head.html.haml | 2 +- app/views/layouts/_search.html.haml | 4 +- app/views/layouts/devise.html.haml | 2 +- app/views/layouts/fullscreen.html.haml | 4 +- .../header/_current_user_dropdown.html.haml | 2 +- app/views/layouts/header/_default.html.haml | 6 +- app/views/layouts/header/_new_dropdown.haml | 4 +- app/views/layouts/nav/_dashboard.html.haml | 4 +- .../layouts/nav/sidebar/_admin.html.haml | 5 + .../layouts/nav/sidebar/_group.html.haml | 3 +- .../layouts/nav/sidebar/_project.html.haml | 31 +- .../sidebar/_project_packages_link.html.haml | 16 + app/views/notify/_note_email.html.haml | 30 +- app/views/notify/_note_email.text.erb | 28 +- app/views/notify/new_issue_email.html.haml | 5 +- app/views/notify/new_issue_email.text.erb | 12 +- .../notify/new_merge_request_email.html.haml | 18 +- .../notify/new_merge_request_email.text.erb | 6 +- .../pages_domain_disabled_email.html.haml | 2 +- .../pages_domain_disabled_email.text.haml | 2 +- .../pages_domain_enabled_email.html.haml | 2 +- .../pages_domain_enabled_email.text.haml | 2 +- ...domain_verification_failed_email.html.haml | 2 +- ...domain_verification_failed_email.text.haml | 2 +- ...ain_verification_succeeded_email.html.haml | 2 +- ...ain_verification_succeeded_email.text.haml | 2 +- .../personal_access_tokens/index.html.haml | 40 +- app/views/profiles/preferences/show.html.haml | 12 +- app/views/projects/_commit_button.html.haml | 2 +- app/views/projects/_files.html.haml | 7 +- app/views/projects/_flash_messages.html.haml | 1 + ...equest_settings_description_text.html.haml | 1 + .../projects/_new_project_fields.html.haml | 22 +- app/views/projects/blob/_editor.html.haml | 2 +- app/views/projects/branches/_branch.html.haml | 27 +- app/views/projects/branches/index.html.haml | 1 + app/views/projects/commits/_commit.html.haml | 4 +- .../projects/deploy_tokens/_form.html.haml | 5 + app/views/projects/edit.html.haml | 4 +- .../projects/environments/index.html.haml | 1 + .../projects/environments/show.html.haml | 31 +- app/views/projects/issues/_issue.html.haml | 2 +- app/views/projects/issues/_issues.html.haml | 2 +- .../projects/issues/_new_branch.html.haml | 21 +- .../issues/import_csv/_modal.html.haml | 2 +- app/views/projects/issues/show.html.haml | 2 +- .../merge_requests/_merge_request.html.haml | 12 +- app/views/projects/new.html.haml | 37 +- app/views/projects/notes/_actions.html.haml | 2 +- .../projects/pages_domains/_form.html.haml | 28 +- .../pages_domains/_helper_text.html.haml | 8 +- .../projects/pages_domains/show.html.haml | 2 +- app/views/projects/pipelines/charts.html.haml | 7 +- .../projects/pipelines/charts/_overall.haml | 21 +- .../charts/_pipeline_statistics.haml | 14 + .../projects/pipelines/charts/_pipelines.haml | 2 +- .../_built_in_templates.html.haml | 4 +- .../registry/repositories/index.html.haml | 54 +- app/views/projects/services/_form.html.haml | 2 +- .../operations/_external_dashboard.html.haml | 2 +- app/views/projects/tags/_tag.html.haml | 8 +- app/views/projects/tags/index.html.haml | 2 +- app/views/projects/tags/show.html.haml | 4 +- .../projects/tree/_tree_content.html.haml | 2 +- .../projects/tree/_tree_header.html.haml | 3 +- .../projects/triggers/_content.html.haml | 17 +- .../projects/triggers/_trigger.html.haml | 7 +- app/views/projects/wikis/pages.html.haml | 2 +- app/views/projects/wikis/show.html.haml | 2 +- app/views/search/_category.html.haml | 1 + app/views/search/results/_wiki_blob.html.haml | 2 +- app/views/shared/_confirm_modal.html.haml | 6 +- app/views/shared/_issues.html.haml | 2 +- ..._access_tokens_created_container.html.haml | 7 +- .../_personal_access_tokens_form.html.haml | 14 +- .../_personal_access_tokens_table.html.haml | 23 +- .../_storage_counter_statistics.html.haml | 4 + app/views/shared/_visibility_radios.html.haml | 18 +- app/views/shared/boards/_show.html.haml | 3 +- app/views/shared/boards/_switcher.html.haml | 16 + .../shared/boards/components/_board.html.haml | 60 +- .../sidebar/_time_tracker.html.haml | 1 + app/views/shared/issuable/_form.html.haml | 9 +- .../shared/issuable/_search_bar.html.haml | 8 +- app/views/shared/issuable/_sidebar.html.haml | 2 +- .../shared/issuable/_sort_dropdown.html.haml | 3 +- .../_metadata_issuable_assignee.html.haml | 2 +- .../shared/milestones/_sidebar.html.haml | 6 +- .../shared/notes/_comment_button.html.haml | 4 +- app/views/shared/projects/_list.html.haml | 2 +- app/views/shared/projects/_project.html.haml | 4 +- .../shared/tokens/_scopes_list.html.haml | 2 +- app/views/users/show.html.haml | 2 +- app/workers/all_queues.yml | 6 + app/workers/build_success_worker.rb | 12 - .../cleanup_container_repository_worker.rb | 29 +- app/workers/cluster_provision_worker.rb | 2 - app/workers/concerns/application_worker.rb | 6 + app/workers/concerns/new_issuable.rb | 2 +- app/workers/create_gpg_signature_worker.rb | 2 +- app/workers/delete_user_worker.rb | 2 +- app/workers/email_receiver_worker.rb | 2 +- app/workers/expire_build_artifacts_worker.rb | 2 +- .../expire_build_instance_artifacts_worker.rb | 2 +- .../prune_aggregation_schedules_worker.rb | 22 + .../namespaces/root_statistics_worker.rb | 31 + .../namespaces/schedule_aggregation_worker.rb | 45 + app/workers/new_note_worker.rb | 2 +- .../object_storage/migrate_uploads_worker.rb | 4 +- .../pages_domain_ssl_renewal_cron_worker.rb | 14 + .../pages_domain_ssl_renewal_worker.rb | 13 + app/workers/post_receive.rb | 23 +- app/workers/rebase_worker.rb | 2 + app/workers/repository_fork_worker.rb | 2 +- app/workers/repository_import_worker.rb | 2 +- .../repository_update_remote_mirror_worker.rb | 2 +- app/workers/run_pipeline_schedule_worker.rb | 2 + app/workers/stuck_ci_jobs_worker.rb | 4 +- app/workers/stuck_import_jobs_worker.rb | 2 +- app/workers/stuck_merge_jobs_worker.rb | 2 +- app/workers/trending_projects_worker.rb | 2 +- app/workers/update_merge_requests_worker.rb | 2 +- app/workers/upload_checksum_worker.rb | 2 +- bin/bundle | 2 +- bin/setup | 31 +- bin/update | 6 +- bin/web | 68 +- bin/web_unicorn | 58 + bin/yarn | 11 + ...-parameter-to-project-environments-api.yml | 5 + config/README.md | 3 +- config/application.rb | 31 +- config/boot.rb | 2 +- config/brakeman.ignore | 24 + config/database.yml.postgresql | 9 + config/database_geo.yml.postgresql | 51 + config/dependency_decisions.yml | 7 + config/environments/development.rb | 1 + config/environments/test.rb | 3 +- config/gitlab.yml.example | 216 +- config/initializers/0_inflections.rb | 8 + config/initializers/0_license.rb | 19 + config/initializers/0_thread_cache.rb | 3 + config/initializers/1_postgresql_only.rb | 4 + config/initializers/1_settings.rb | 166 +- config/initializers/6_validations.rb | 21 +- config/initializers/7_prometheus_metrics.rb | 47 +- .../initializers/active_record_data_types.rb | 4 +- .../initializers/active_record_lifecycle.rb | 4 +- .../initializers/active_record_preloader.rb | 17 +- .../initializers/active_record_query_cache.rb | 3 + .../active_record_verbose_query_logs.rb | 56 - .../ar_speed_up_migration_checking.rb | 16 +- ...nfig_initializers_active_record_locking.rb | 9 +- config/initializers/console_message.rb | 13 +- config/initializers/deprecations.rb | 2 +- config/initializers/elastic_client_setup.rb | 50 + .../forbid_sidekiq_in_transactions.rb | 15 +- config/initializers/geo.rb | 17 + config/initializers/health_check.rb | 6 + config/initializers/httpclient_patch.rb | 18 + config/initializers/jira.rb | 2 +- config/initializers/load_balancing.rb | 25 + config/initializers/lograge.rb | 2 +- .../mysql_ignore_postgresql_options.rb | 7 - config/initializers/peek.rb | 3 + config/initializers/postgresql_cte.rb | 4 +- config/initializers/rack_attack_logging.rb | 14 +- config/initializers/rack_timeout.rb | 4 +- config/initializers/sentry.rb | 13 +- config/initializers/sidekiq.rb | 17 +- config/initializers/sidekiq_cluster.rb | 20 + config/initializers/transaction_metrics.rb | 3 + config/initializers/zz_metrics.rb | 33 +- config/no_todos_messages.yml | 8 +- config/prometheus/cluster_metrics.yml | 63 + config/prometheus/common_metrics.yml | 4 +- config/pseudonymizer.yml | 475 ++++ config/routes.rb | 55 +- config/routes/admin.rb | 2 +- config/routes/api.rb | 10 +- config/routes/group.rb | 8 - config/routes/profile.rb | 14 + config/routes/project.rb | 116 +- config/routes/repository.rb | 7 +- config/routes/snippets.rb | 2 +- config/routes/user.rb | 25 +- config/settings.rb | 31 + config/sidekiq_queues.yml | 19 + config/unicorn.rb.example | 16 +- config/unicorn.rb.example.development | 16 +- config/webpack.config.js | 9 +- danger/commit_messages/Dangerfile | 15 +- danger/database/Dangerfile | 32 +- danger/metadata/Dangerfile | 12 + danger/only_documentation/Dangerfile | 24 + db/fixtures/development/17_cycle_analytics.rb | 12 +- db/fixtures/development/24_forks.rb | 4 +- db/fixtures/development/99_common_metrics.rb | 4 +- db/fixtures/production/999_common_metrics.rb | 4 +- db/importers/common_metrics_importer.rb | 105 - db/migrate/20140313092127_init_schema.rb | 338 --- db/migrate/20140407135544_fix_namespaces.rb | 16 - ...tate_to_allow_empty_merge_request_diffs.rb | 11 - db/migrate/20140415124820_limits_to_mysql.rb | 1 - db/migrate/20140416074002_add_index_on_iid.rb | 33 - ...40416185734_index_on_current_sign_in_at.rb | 6 - ...140428105831_add_notes_index_updated_at.rb | 6 - .../20140502115131_add_repo_size_to_db.rb | 6 - .../20140502125220_migrate_repo_size.rb | 31 - ...611135229_add_position_to_merge_request.rb | 6 - ...140625115202_create_users_star_projects.rb | 18 - db/migrate/20140729134820_create_labels.rb | 14 - .../20140729140420_create_label_links.rb | 14 - .../20140729145339_migrate_project_tags.rb | 9 - .../20140729152420_migrate_taggable_labels.rb | 36 - .../20140730111702_add_index_to_labels.rb | 8 - .../20140903115954_migrate_to_new_shell.rb | 13 - ...0907220153_serialize_service_properties.rb | 43 - .../20140914113604_add_members_table.rb | 22 - ...0914145549_migrate_to_new_members_model.rb | 12 - ...20140914173417_remove_old_member_tables.rb | 29 - ...006143943_move_slack_service_to_webhook.rb | 22 - ...7100818_add_visibility_level_to_snippet.rb | 24 - db/migrate/20141118150935_add_audit_event.rb | 25 - ...0141121133009_add_timestamps_to_members.rb | 15 - .../20141121161704_add_identity_table.rb | 47 - ...erge_request_rebase_enabled_to_projects.rb | 17 - ...05134006_add_locked_at_to_merge_request.rb | 6 - ...20141216155758_create_doorkeeper_tables.rb | 45 - ...20141217125223_add_owner_to_application.rb | 8 - ...135007_add_import_data_to_project_table.rb | 8 - ...velopers_can_push_to_protected_branches.rb | 6 - ...50108073740_create_application_settings.rb | 16 - ..._home_page_url_for_application_settings.rb | 5 - ...6234545_add_gitlab_access_token_to_user.rb | 5 - ...0_add_default_branch_protection_setting.rb | 6 - ...0205211843_add_timestamps_to_identities.rb | 6 - .../20150206181414_add_index_to_created_at.rb | 17 - ...06222854_add_notification_email_to_user.rb | 11 - .../20150209222013_add_missing_index.rb | 6 - .../20150211172122_add_template_to_service.rb | 6 - ...74341_allow_null_in_services_project_id.rb | 5 - ...sharing_enabled_to_application_settings.rb | 6 - ...0213114800_add_hide_no_password_to_user.rb | 6 - ..._add_password_automatically_set_to_user.rb | 6 - ...tbucket_access_token_and_secret_to_user.rb | 6 - .../20150219004514_add_events_to_services.rb | 9 - ...0223022001_set_missing_last_activity_at.rb | 8 - ...50225065047_add_note_events_to_services.rb | 6 - ...sibility_levels_to_application_settings.rb | 5 - ...0150306023106_fix_namespace_duplication.rb | 22 - ...306023112_add_unique_index_to_namespace.rb | 10 - ...d_version_check_to_application_settings.rb | 6 - ...150313012111_create_subscriptions_table.rb | 19 - .../20150320234437_add_location_to_user.rb | 5 - ...55957_set_incorrect_assignee_id_to_null.rb | 6 - .../20150327122227_add_public_to_key.rb | 6 - ...150327150017_add_import_data_to_project.rb | 5 - ...27223628_add_devise_two_factor_to_users.rb | 8 - ...attachment_size_to_application_settings.rb | 5 - ...d_devise_two_factor_backupable_to_users.rb | 5 - ...0150406133311_add_invite_data_to_member.rb | 24 - db/migrate/20150411000035_fix_identities.rb | 45 - .../20150411180045_rename_buildbox_service.rb | 9 - ...0150413192223_add_public_email_to_users.rb | 6 - ...150417121913_create_project_import_data.rb | 8 - ...7122318_remove_import_data_from_project.rb | 10 - ...000_remove_periods_at_ends_of_usernames.rb | 89 - ...ect_visibililty_to_application_settings.rb | 11 - ...or_tag_names.acts_as_taggable_on_engine.rb | 10 - .../20150425164647_remove_duplicate_tags.rb | 18 - ...ique_indices.acts_as_taggable_on_engine.rb | 28 - ...ache_to_tags.acts_as_taggable_on_engine.rb | 16 - ...ggable_index.acts_as_taggable_on_engine.rb | 10 - ...or_tag_names.acts_as_taggable_on_engine.rb | 10 - ...ault_snippet_visibility_to_app_settings.rb | 11 - ..._remove_abandoned_group_members_records.rb | 9 - ..._signup_domains_to_application_settings.rb | 5 - ...09180749_convert_legacy_reference_notes.rb | 17 - ...0516060434_add_note_events_to_web_hooks.rb | 10 - ...th_applications_to_application_settings.rb | 5 - ..._sign_out_path_for_application_settings.rb | 6 - ...n_expire_delay_for_application_settings.rb | 7 - .../20150610065936_add_dashboard_to_users.rb | 10 - ...dd_default_otp_required_for_login_value.rb | 11 - ...0150713160110_add_project_view_to_users.rb | 6 - ...0717130904_add_commits_count_to_project.rb | 6 - ...6_add_updated_by_to_issuables_and_notes.rb | 7 - .../20150806104937_create_abuse_reports.rb | 14 - ...50812080800_add_settings_import_sources.rb | 12 - ...14065925_remove_oauth_tokens_from_users.rb | 9 - ...50817163600_deduplicate_user_identities.rb | 15 - .../20150818213832_add_sent_notifications.rb | 13 - ...50824002011_add_enable_ssl_verification.rb | 6 - db/migrate/20150826001931_add_ci_tables.rb | 191 -- ...1444_add_fast_forward_option_to_project.rb | 23 - .../20150902001023_add_template_to_label.rb | 6 - db/migrate/20150914215247_add_ci_tags.rb | 24 - ...1905_enable_ssl_verification_by_default.rb | 5 - ...5_enable_ssl_verification_for_web_hooks.rb | 8 - ..._help_page_text_to_application_settings.rb | 5 - ...45038_add_index_for_committed_at_and_id.rb | 6 - ..._add_ci_enabled_to_application_settings.rb | 5 - ..._invalid_milestones_from_merge_requests.rb | 5 - ...20010715_add_consumed_timestep_to_users.rb | 5 - ...1119_add_line_code_to_sent_notification.rb | 5 - ...50924125150_add_project_id_to_ci_commit.rb | 5 - ...25436_migrate_project_id_for_ci_commits.rb | 6 - ...0150930001110_merge_request_error_field.rb | 5 - ...095736_add_null_to_name_for_ci_projects.rb | 9 - .../20150930110012_add_group_share_lock.rb | 6 - .../20151002112914_add_stage_idx_to_builds.rb | 5 - .../20151002121400_add_index_for_builds.rb | 6 - ...0151002122929_add_ref_and_tag_to_builds.rb | 6 - ...1002122943_migrate_ref_and_tag_to_build.rb | 7 - .../20151005075649_add_user_id_to_build.rb | 5 - ...51005150751_add_layout_option_for_users.rb | 6 - ...ve_ci_enabled_from_application_settings.rb | 6 - ..._namespaces_projects_path_lower_indexes.rb | 18 - ..._add_users_lower_username_email_indexes.rb | 18 - ...3042_add_type_and_description_to_builds.rb | 10 - ..._migrate_name_to_description_for_builds.rb | 6 - ...19_add_admin_notification_email_setting.rb | 5 - ...20151012173029_set_jira_service_api_url.rb | 51 - ...1013092124_add_artifacts_file_to_builds.rb | 5 - ...433_add_ci_projects_gl_project_id_index.rb | 6 - ...5451_add_ci_builds_and_projects_indexes.rb | 10 - ...0151016195706_add_notes_line_code_index.rb | 6 - db/migrate/20151019111551_fix_build_tags.rb | 9 - ...20151019111703_fail_build_without_names.rb | 8 - ...51020145526_add_services_template_index.rb | 6 - .../20151020173516_ci_limits_to_mysql.rb | 9 - ...20173906_add_ci_builds_index_for_status.rb | 6 - ...151023112551_fail_build_with_empty_name.rb | 8 - .../20151023144219_remove_satellites.rb | 17 - .../20151026182941_add_project_path_index.rb | 10 - ...ge_when_build_succeeds_to_merge_request.rb | 8 - .../20151103001141_add_public_to_group.rb | 6 - ...151103133339_add_shared_runners_setting.rb | 5 - .../20151103134857_create_lfs_objects.rb | 13 - ...51103134958_create_lfs_objects_projects.rb | 15 - .../20151104105513_add_file_to_lfs_objects.rb | 5 - db/migrate/20151105094515_create_releases.rb | 17 - .../20151106000015_add_is_award_to_notes.rb | 7 - ..._artifacts_size_to_application_settings.rb | 5 - .../20151109134526_add_issues_state_index.rb | 6 - ...916_add_projects_visibility_level_index.rb | 6 - ...51110125604_add_import_error_to_project.rb | 5 - ...14113410_add_index_for_lfs_oid_and_size.rb | 7 - ...1116144118_add_unique_for_lfs_oid_index.rb | 8 - ...0151118162244_add_projects_public_index.rb | 6 - .../20151201203948_raise_hook_url_limit.rb | 5 - ...3162133_add_hide_project_limit_to_users.rb | 6 - ...1203162134_add_build_events_to_services.rb | 7 - .../20151209144329_migrate_ci_web_hooks.rb | 16 - .../20151209145909_migrate_ci_emails.rb | 45 - ...20151210030143_add_unlock_token_to_user.rb | 5 - ...istration_token_to_application_settings.rb | 5 - ...20151210125232_migrate_ci_slack_service.rb | 33 - ...51210125927_migrate_ci_hip_chat_service.rb | 34 - .../20151210125928_add_ci_to_project.rb | 12 - .../20151210125929_add_project_id_to_ci.rb | 8 - .../20151210125930_migrate_ci_to_project.rb | 42 - .../20151210125931_add_index_to_ci_tables.rb | 13 - .../20151210125932_drop_null_for_ci_tables.rb | 10 - ..._add_pages_size_to_application_settings.rb | 14 - ...8154042_add_tfa_to_application_settings.rb | 8 - ...0151221234414_add_tfa_additional_fields.rb | 7 - db/migrate/20151224123230_rename_emojis.rb | 15 - ...1228111122_remove_public_from_namespace.rb | 7 - .../20151228150906_influxdb_settings.rb | 19 - ...9_add_recaptcha_to_application_settings.rb | 9 - ...0151229102248_influxdb_udp_port_setting.rb | 5 - ...112614_influxdb_remote_database_setting.rb | 6 - ...2518_add_artifacts_metadata_to_ci_build.rb | 5 - ...326_add_akismet_to_application_settings.rb | 8 - ...move_alert_type_from_broadcast_messages.rb | 6 - ...160106162223_add_index_milestones_title.rb | 6 - ...60106164438_remove_influxdb_credentials.rb | 7 - db/migrate/20160109054846_create_spam_logs.rb | 17 - ...60113111034_add_metrics_sample_interval.rb | 6 - ...5830_add_sentry_to_application_settings.rb | 8 - ...ocking_settings_to_application_settings.rb | 7 - .../20160119111158_add_services_category.rb | 40 - .../20160119112418_add_services_default.rb | 21 - .../20160119145451_add_ldap_email_to_users.rb | 31 - ..._base_commit_sha_to_merge_request_diffs.rb | 5 - ..._author_in_body_to_application_settings.rb | 6 - ...122185421_add_pending_delete_to_project.rb | 6 - ...king_settings_from_application_settings.rb | 7 - ...28233227_change_lfs_objects_size_column.rb | 5 - ...remove_dot_atom_path_ending_of_projects.rb | 80 - ..._add_merge_commit_sha_to_merge_requests.rb | 5 - ...20160202091601_add_erasable_to_ci_build.rb | 7 - ...dd_allow_guest_to_access_builds_project.rb | 6 - ...58_add_real_size_to_merge_request_diffs.rb | 5 - .../20160209130428_add_index_to_snippet.rb | 6 - .../20160210105555_create_pages_domain.rb | 16 - db/migrate/20160212123307_create_tasks.rb | 17 - ...20160217100506_add_description_to_label.rb | 5 - .../20160217174422_add_note_to_tasks.rb | 5 - .../20160220123949_rename_tasks_to_todos.rb | 5 - .../20160222153918_create_appearances_ce.rb | 15 - ...160223192159_add_confidential_to_issues.rb | 7 - .../20160225090018_add_delete_at_to_issues.rb | 7 - ...5101956_add_delete_at_to_merge_requests.rb | 7 - ...14608_add_trigram_indexes_for_searching.rb | 65 - ...0227120001_add_event_field_for_web_hook.rb | 6 - .../20160227120047_add_event_to_services.rb | 6 - ...9193553_add_main_language_to_repository.rb | 5 - ...01124843_add_visibility_level_to_groups.rb | 30 - .../20160301174731_add_fingerprint_index.rb | 17 - ...port_credentials_to_project_import_data.rb | 7 - ...8_remove_wrong_import_url_from_projects.rb | 138 -- ...5220806_remove_expires_at_from_snippets.rb | 6 - ...221555_disallow_blank_line_code_on_note.rb | 9 - ...roup_visibility_to_application_settings.rb | 32 - db/migrate/20160309140734_fix_todos.rb | 17 - .../20160310124959_add_due_date_to_issues.rb | 7 - ...160310185910_add_external_flag_to_users.rb | 6 - .../20160314094147_add_priority_to_label.rb | 7 - ...60314114439_add_requested_at_to_members.rb | 6 - ...0314143402_projects_add_pushes_since_gc.rb | 6 - ...0315135439_project_add_repository_check.rb | 9 - .../20160316123110_ci_runners_token_index.rb | 14 - ...92622_change_target_id_to_null_on_todos.rb | 5 - .../20160316204731_add_commit_id_to_todos.rb | 7 - .../20160317092222_add_moved_to_to_issue.rb | 5 - ...12_index_namespaces_on_visibility_level.rb | 8 - ...4020319_remove_todos_for_deleted_issues.rb | 17 - ...0328112808_create_notification_settings.rb | 12 - ...115649_migrate_new_notification_setting.rb | 17 - ...28121138_add_notification_setting_index.rb | 7 - ...52_add_index_on_pending_delete_projects.rb | 7 - ...remove_todos_for_deleted_merge_requests.rb | 17 - ...aring_enabled_from_application_settings.rb | 6 - ...07120251_add_images_enabled_for_project.rb | 5 - ...0_add_repository_checks_enabled_setting.rb | 6 - .../20160412173416_add_fields_to_ci_commit.rb | 9 - db/migrate/20160412173417_update_ci_commit.rb | 36 - .../20160412173418_add_ci_commit_indexes.rb | 20 - .../20160413115152_add_token_to_web_hooks.rb | 5 - ...415062917_create_personal_access_tokens.rb | 14 - ...ed_runners_text_to_application_settings.rb | 5 - db/migrate/20160416180807_add_award_emoji.rb | 17 - ...82152_convert_award_note_to_emoji_award.rb | 36 - .../20160419120017_add_metrics_packet_size.rb | 5 - ...low_merge_if_build_succeeds_to_projects.rb | 16 - ...0160421130527_disable_repository_checks.rb | 12 - ...20160425045124_create_u2f_registrations.rb | 14 - ...sign_in_sources_to_application_settings.rb | 5 - ...504112519_add_run_untagged_to_ci_runner.rb | 13 - ...94200_remove_wall_enabled_from_projects.rb | 6 - ...d_head_commit_id_to_merge_request_diffs.rb | 5 - .../20160508215820_add_type_to_notes.rb | 5 - ...60508215920_add_positions_to_diff_notes.rb | 6 - ...508221410_set_type_on_legacy_diff_notes.rb | 6 - .../20160509091049_add_locked_to_ci_runner.rb | 13 - ...ck_access_token_to_application_settings.rb | 5 - ...firmation_email_to_application_settings.rb | 13 - ..._start_commit_id_to_merge_request_diffs.rb | 5 - ..._add_artifacts_expire_date_to_ci_builds.rb | 6 - ...elopers_can_merge_to_protected_branches.rb | 15 - ..._type_and_position_to_sent_notification.rb | 22 - ...5328_remove_main_language_from_projects.rb | 22 - ...ification_settings_for_deleted_projects.rb | 13 - .../20160528043124_add_users_state_index.rb | 10 - ...en_expire_delay_to_application_settings.rb | 9 - ..._has_external_issue_tracker_to_projects.rb | 10 - ...remove_duplicated_notification_settings.rb | 32 - ...2247_add_index_to_notification_settings.rb | 10 - ...er_sign_up_text_to_application_settings.rb | 5 - ...5742_add_repository_storage_to_projects.rb | 13 - ...efault_external_to_application_settings.rb | 13 - ...tification_setting_not_null_constraints.rb | 11 - ...ed_issues_tracker_columns_from_projects.rb | 7 - ...201627_migrate_users_notification_level.rb | 25 - db/migrate/20160610204157_add_deployments.rb | 26 - db/migrate/20160610204158_add_environments.rb | 16 - ...0160610211845_add_environment_to_builds.rb | 10 - ...27_remove_notification_level_from_users.rb | 8 - ...ository_storage_to_application_settings.rb | 5 - ...10_add_index_on_requested_at_to_members.rb | 16 - ...ccess_protocols_to_application_settings.rb | 10 - ...15191922_set_missing_stage_on_ci_builds.rb | 13 - ...616084004_change_project_of_environment.rb | 21 - .../20160616102642_remove_duplicated_keys.rb | 18 - ...remove_keys_fingerprint_index_if_exists.rb | 22 - ...48_add_unique_index_to_keys_fingerprint.rb | 14 - ...627_add_events_to_notification_settings.rb | 7 - ...60620115026_add_index_on_runners_locked.rb | 19 - ...add_rebase_commit_sha_to_merge_requests.rb | 22 - ...8085157_add_artifacts_size_to_ci_builds.rb | 7 - ...ress_merge_commit_sha_to_merge_requests.rb | 8 - ..._add_index_on_award_emoji_user_and_name.rb | 11 - ...4938_add_protected_branches_push_access.rb | 18 - ...952_add_protected_branches_merge_access.rb | 18 - ...erge_to_protected_branches_merge_access.rb | 29 - ..._push_to_protected_branches_push_access.rb | 29 - ...lopers_can_push_from_protected_branches.rb | 20 - ...opers_can_merge_from_protected_branches.rb | 20 - ...63108_remove_requesters_that_are_owners.rb | 40 - .../20160707104333_add_lock_to_issuables.rb | 18 - ...171823_remove_award_emojis_with_no_user.rb | 21 - ...38_add_repository_read_only_to_projects.rb | 9 - ...omain_blacklist_to_application_settings.rb | 23 - ..._add_usage_ping_to_application_settings.rb | 9 - .../20160715132507_add_user_id_to_pipeline.rb | 7 - ...15134306_add_index_for_pipeline_user_id.rb | 16 - ..._add_request_access_enabled_to_projects.rb | 13 - ...16_add_request_access_enabled_to_groups.rb | 13 - ...tion_settings_restricted_signup_domains.rb | 21 - ...dd_when_and_yaml_variables_to_ci_builds.rb | 8 - ...160716115711_add_queued_at_to_ci_builds.rb | 10 - ...53603_add_has_external_wiki_to_projects.rb | 7 - ...and_readd_has_external_wiki_in_projects.rb | 19 - ...60722221922_nullify_blank_type_on_notes.rb | 9 - .../20160724205507_add_resolved_to_notes.rb | 11 - ...5083350_add_external_url_to_enviroments.rb | 9 - ...25104020_merge_request_diff_remove_uniq.rb | 36 - ...0725104452_merge_request_diff_add_index.rb | 18 - ...0160727163552_create_user_agent_details.rb | 19 - db/migrate/20160727191041_create_boards.rb | 14 - db/migrate/20160727193336_create_lists.rb | 17 - ...081025_add_pipeline_events_to_web_hooks.rb | 16 - ...8103734_add_pipeline_events_to_services.rb | 16 - ...173930_remove_project_id_from_spam_logs.rb | 30 - ...20160801163421_add_expires_at_to_member.rb | 29 - ...63709_add_submitted_as_ham_to_spam_logs.rb | 24 - ..._remove_builds_enable_index_on_projects.rb | 10 - ...1903_add_unique_index_to_lists_label_id.rb | 16 - ...804142904_add_ci_config_file_to_project.rb | 11 - ...4150737_add_timestamps_to_members_again.rb | 21 - ...0805041956_add_deleted_at_to_namespaces.rb | 21 - .../20160808085531_add_token_to_build.rb | 10 - ...0160808085602_add_index_for_build_token.rb | 17 - ...102349_remove_ci_runner_trigram_indexes.rb | 27 - ...20160810142633_remove_redundant_indexes.rb | 113 - .../20160811172945_add_can_push_to_keys.rb | 14 - ...12_add_column_name_to_u2f_registrations.rb | 29 - ...3006_add_koding_to_application_settings.rb | 11 - ...60817154936_add_discussion_ids_to_notes.rb | 13 - ...8_add_expires_at_to_project_group_links.rb | 29 - ...9221631_add_index_to_note_discussion_id.rb | 19 - ...on_id_because_it_was_calculated_wrongly.rb | 12 - ...32256_add_incoming_email_token_to_users.rb | 24 - ...160823081327_change_merge_error_to_text.rb | 10 - ...column_scopes_to_personal_access_tokens.rb | 19 - ...60823213309_add_lfs_enabled_to_projects.rb | 29 - .../20160824103857_drop_unused_ci_tables.rb | 11 - .../20160824124900_add_table_issue_metrics.rb | 37 - ...5052008_add_table_merge_request_metrics.rb | 38 - ...1312_ensure_lock_version_has_no_default.rb | 16 - ...160829114652_add_markdown_cache_columns.rb | 38 - ...confidential_issues_events_to_web_hooks.rb | 15 - ..._confidential_issues_events_to_services.rb | 15 - ...0830232601_change_lock_version_not_null.rb | 13 - .../20160831214002_create_project_features.rb | 17 - ...20160831214543_migrate_project_features.rb | 44 - ...0_remove_features_enabled_from_projects.rb | 31 - ..._confidential_issues_events_on_webhooks.rb | 18 - ...torious_field_from_application_settings.rb | 39 - ...11_add_environment_type_to_environments.rb | 9 - ...3162434_remove_projects_pushes_since_gc.rb | 21 - ...0913212128_change_artifacts_size_column.rb | 15 - ...w_merge_if_all_discussions_are_resolved.rb | 14 - ...21_create_merge_requests_closing_issues.rb | 35 - .../20160919144305_add_type_to_labels.rb | 17 - .../20160919145149_add_group_id_to_labels.rb | 20 - ...0160920160832_add_index_to_labels_title.rb | 16 - ...20160926145521_add_organization_to_user.rb | 12 - ...20161006104309_add_state_to_environment.rb | 15 - .../20161007073613_create_user_activities.rb | 28 - ...07133303_precalculate_trending_projects.rb | 38 - ...010142410_create_project_authorizations.rb | 15 - ...ository_access_level_to_project_feature.rb | 14 - .../20161014173530_create_label_priorities.rb | 26 - ..._authorized_projects_populated_to_users.rb | 9 - ...1017095000_add_properties_to_deployment.rb | 9 - ...161017125927_add_unique_index_to_labels.rb | 33 - .../20161018024215_migrate_labels_priority.rb | 36 - ...61018024550_remove_priority_from_labels.rb | 18 - ...61018124658_make_project_owners_masters.rb | 18 - ...736_migrate_sidekiq_queues_from_default.rb | 109 - ...5_generate_project_feature_for_projects.rb | 28 - ...020075734_default_request_access_groups.rb | 12 - ...0075830_default_request_access_projects.rb | 12 - ...dd_pipeline_id_to_merge_request_metrics.rb | 40 - ...imum_key_length_to_application_settings.rb | 29 - ...add_lock_version_to_build_and_pipelines.rb | 14 - ...317_migrate_mailroom_queue_from_default.rb | 63 - .../20161025231710_migrate_jira_to_gem.rb | 73 - ...dd_housekeeping_to_application_settings.rb | 32 - ...1171301_add_project_id_to_subscriptions.rb | 15 - ...174110_migrate_subscriptions_project_id.rb | 44 - ...81638_add_unique_index_to_subscriptions.rb | 19 - ...171205_rename_repository_storage_column.rb | 29 - ...ekiq_throttling_to_application_settings.rb | 32 - ...0_add_project_import_data_project_index.rb | 17 - ...1113184239_create_user_chat_names_table.rb | 22 - ...1114024742_add_coverage_regex_to_builds.rb | 13 - ...1115173905_add_start_date_to_milestones.rb | 12 - ...118183841_add_commit_events_to_services.rb | 15 - ...161124111390_add_parent_id_to_namespace.rb | 12 - .../20161124111395_add_index_to_parent_id.rb | 19 - db/migrate/20161124111402_add_routes_table.rb | 19 - ...1322_migrate_process_commit_worker_jobs.rb | 105 - ..._to_discussion_id_to_sent_notifications.rb | 29 - ...161128142110_remove_unnecessary_indexes.rb | 34 - ..._emails_enabled_to_application_settings.rb | 30 - .../20161130095245_fill_routes_table.rb | 21 - ...161130101252_fill_projects_routes_table.rb | 30 - ...d_plant_uml_url_to_application_settings.rb | 12 - ...0161201155511_create_project_statistics.rb | 20 - ...161201160452_migrate_project_statistics.rb | 25 - ...202152031_remove_duplicates_from_routes.rb | 29 - .../20161202152035_add_index_to_routes.rb | 22 - ...ant_uml_enabled_to_application_settings.rb | 13 - ...9_remove_uniq_path_index_from_namespace.rb | 37 - ...61206153751_add_path_index_to_namespace.rb | 21 - ...3_remove_uniq_name_index_from_namespace.rb | 37 - ...61206153754_add_name_index_to_namespace.rb | 21 - ...31620_fixup_environment_name_uniqueness.rb | 53 - ...21_create_environment_name_unique_index.rb | 19 - .../20161207231626_add_environment_slug.rb | 68 - ...0_add_unique_index_for_environment_slug.rb | 20 - ...create_doorkeeper_openid_connect_tables.rb | 37 - ...12142807_add_lower_path_index_to_routes.rb | 23 - ...k_service_to_slack_notification_service.rb | 11 - ...0141214_remove_dot_git_from_group_names.rb | 82 - .../20161221152132_add_last_used_at_to_key.rb | 10 - ...1223034433_add_estimate_to_issuables_ce.rb | 25 - .../20161223034646_create_timelogs_ce.rb | 25 - ...226122833_remove_dot_git_from_usernames.rb | 110 - ...ck_and_mattermost_notification_services.rb | 28 - ...es_at_to_date_in_personal_access_tokens.rb | 19 - ...impersonation_to_personal_access_tokens.rb | 18 - .../20170120131253_create_chat_teams.rb | 19 - ...ci_builds_for_status_runner_id_and_type.rb | 18 - ...5_add_index_to_ci_runners_for_is_shared.rb | 18 - ...0124174637_add_foreign_keys_to_timelogs.rb | 57 - ...47_add_two_factor_columns_to_namespaces.rb | 22 - ...4193205_add_two_factor_columns_to_users.rb | 18 - ...ax_session_time_to_application_settings.rb | 33 - ...032550_remove_backlog_lists_from_boards.rb | 17 - ...620_add_index_to_project_authorizations.rb | 19 - db/migrate/20170130221926_create_uploads.rb | 20 - ...1221752_add_relative_position_to_issues.rb | 38 - .../20170204172458_add_name_to_route.rb | 12 - ...dd_index_to_labels_for_type_and_project.rb | 16 - ...414_add_recaptcha_verified_to_spam_logs.rb | 15 - ...0170206115204_add_column_ghost_to_users.rb | 11 - ...d_index_to_labels_for_title_and_project.rb | 18 - ...ex_to_ci_trigger_requests_for_commit_id.rb | 16 - ...10103609_add_index_to_user_agent_detail.rb | 19 - ...nique_ips_limit_to_application_settings.rb | 17 - ...acts_expiration_to_application_settings.rb | 11 - ...dd_index_for_latest_successful_pipeline.rb | 15 - ...40_drop_index_for_builds_project_status.rb | 9 - ...132157_rename_merge_when_build_succeeds.rb | 29 - ...name_only_allow_merge_if_build_succeeds.rb | 29 - ...20170217151948_add_owner_id_to_triggers.rb | 9 - ...70217151949_add_description_to_triggers.rb | 9 - db/migrate/20170222111732_create_gpg_keys.rb | 21 - db/migrate/20170222143317_drop_ci_projects.rb | 34 - ...222143500_remove_old_project_id_columns.rb | 30 - ...3603_rename_gl_project_id_to_project_id.rb | 14 - ...20170301101006_add_ci_runner_namespaces.rb | 17 - ...g_merge_request_link_enabled_to_project.rb | 19 - ...95939_rename_ci_commits_to_ci_pipelines.rb | 10 - ...639_remove_unused_ci_tables_and_columns.rb | 84 - ...uto_cancel_pending_pipelines_to_project.rb | 16 - ...20170305203726_add_owner_id_foreign_key.rb | 15 - ...307125949_add_last_activity_on_to_users.rb | 9 - .../20170309173138_create_protected_tags.rb | 28 - ...329_add_auto_canceled_by_id_to_pipeline.rb | 9 - ..._canceled_by_id_foreign_key_to_pipeline.rb | 22 - .../20170313213916_add_index_to_user_ghost.rb | 25 - ...70314082049_create_system_note_metadata.rb | 24 - ...t_add_notified_of_own_activity_to_users.rb | 26 - .../20170315194013_add_closed_at_to_issues.rb | 8 - ...readd_notified_of_own_activity_to_users.rb | 10 - ...170316163845_move_uploads_to_system_dir.rb | 59 - ...170317203554_index_routes_path_for_like.rb | 28 - .../20170320173259_migrate_assignees.rb | 43 - ...70322013926_create_container_repository.rb | 17 - ...750_add_created_at_index_to_deployments.rb | 15 - ...010804_add_uuid_to_application_settings.rb | 16 - .../20170329095325_add_ref_to_triggers.rb | 9 - ...70329095907_create_ci_trigger_schedules.rb | 21 - ...rval_multiplier_to_application_settings.rb | 33 - ...1723_disable_invalid_service_templates2.rb | 18 - ...move_index_for_users_current_sign_in_at.rb | 18 - ...170404163427_add_trigger_id_foreign_key.rb | 15 - ...170405080720_add_import_jid_to_projects.rb | 9 - ...58_add_auto_canceled_by_id_to_ci_builds.rb | 9 - ...canceled_by_id_foreign_key_to_ci_builds.rb | 22 - ...07114956_add_ref_to_ci_trigger_schedule.rb | 9 - ...22426_add_active_to_ci_trigger_schedule.rb | 9 - ...dd_foreigh_key_trigger_requests_trigger.rb | 15 - ...450_add_index_to_next_run_at_and_active.rb | 18 - ...135_add_version_field_to_markdown_cache.rb | 25 - ...3035209_add_preferred_language_to_users.rb | 16 - ...908_delete_orphan_notification_settings.rb | 24 - ...01229_add_index_to_system_note_metadata.rb | 17 - ...20170421102337_remove_nil_type_services.rb | 12 - ...24095707_add_index_on_ci_builds_user_id.rb | 19 - ...70424142900_add_index_to_web_hooks_type.rb | 15 - ...5112128_create_pipeline_schedules_table.rb | 29 - ...remove_foreigh_key_ci_trigger_schedules.rb | 23 - ...1_add_pipeline_schedule_id_to_pipelines.rb | 9 - ...ll_missing_uuid_on_application_settings.rb | 10 - ...40_add_index_on_ci_runners_contacted_at.rb | 19 - .../20170427103502_create_web_hook_logs.rb | 22 - .../20170427215854_create_redirect_routes.rb | 15 - ...307_add_column_delete_error_to_projects.rb | 7 - ..._cancel_pending_pipelines_on_by_default.rb | 13 - ...02091007_markdown_cache_limits_to_mysql.rb | 1 - ..._index_ci_pipelines_auto_canceled_by_id.rb | 21 - ...ate_index_ci_builds_auto_canceled_by_id.rb | 21 - ..._last_repository_updated_at_to_projects.rb | 8 - ..._last_repository_updated_at_on_projects.rb | 15 - .../20170503004426_add_retried_to_ci_build.rb | 9 - ...ited_at_and_last_edited_by_id_to_issues.rb | 15 - ...and_last_edited_by_id_to_merge_requests.rb | 15 - ...d_repository_update_events_to_web_hooks.rb | 15 - ...70503114228_add_description_to_snippets.rb | 12 - ...40201_reschedule_project_authorizations.rb | 44 - ...ed_groups_into_regular_groups_for_mysql.rb | 116 - ...0503184421_add_index_to_redirect_routes.rb | 21 - ...032_index_redirect_routes_path_for_like.rb | 28 - ...ientside_sentry_to_application_settings.rb | 33 - ..._add_index_project_group_links_group_id.rb | 19 - ..._index_to_pipeline_pipeline_schedule_id.rb | 19 - ...4_add_foreign_key_to_pipeline_schedules.rb | 15 - ...gn_key_pipeline_schedules_and_pipelines.rb | 23 - ..._add_head_pipeline_id_to_merge_requests.rb | 7 - ...add_not_null_contraints_to_ci_variables.rb | 12 - ...8190732_add_foreign_key_to_ci_variables.rb | 24 - ...me_web_hooks_build_events_to_job_events.rb | 18 - ...ame_services_build_events_to_job_events.rb | 18 - ...3305_migrate_assignee_to_separate_table.rb | 83 - ...16183131_add_indices_to_issue_assignees.rb | 41 - ...prometheus_settings_to_metrics_settings.rb | 16 - ...0521184006_add_change_position_to_notes.rb | 13 - .../20170523091700_add_rss_token_to_users.rb | 19 - ...onversational_development_index_metrics.rb | 40 - ...0170524125940_add_source_to_ci_pipeline.rb | 9 - ...524161101_add_protected_to_ci_variables.rb | 15 - ...0525130346_create_group_variables_table.rb | 23 - ...0758_add_foreign_key_to_group_variables.rb | 15 - .../20170525132202_create_pipeline_stages.rb | 26 - .../20170525174156_create_feature_tables.rb | 26 - ...0170526185602_add_stage_id_to_ci_builds.rb | 13 - ...ect_foreign_keys_with_cascading_deletes.rb | 198 -- ...ed_keys_enabled_to_application_settings.rb | 19 - ...name_users_ldap_email_to_external_email.rb | 16 - ...1163708_add_artifacts_store_to_ci_build.rb | 10 - ...mercial_content_to_application_settings.rb | 10 - ...age_support_url_to_application_settings.rb | 9 - ...70603200744_add_email_provider_to_users.rb | 9 - ...154216_add_notification_setting_columns.rb | 26 - ..._events_table_for_push_events_migration.rb | 51 - ...52748_create_push_event_payloads_tables.rb | 46 - ...8171156_create_merge_request_diff_files.rb | 22 - .../20170613154149_create_gpg_signatures.rb | 25 - ...merge_request_diff_file_limits_to_mysql.rb | 1 - ...33147_create_merge_request_diff_commits.rb | 20 - ...d_index_for_head_pipeline_merge_request.rb | 15 - ...8_create_ci_pipeline_schedule_variables.rb | 25 - ...n_key_to_ci_pipeline_schedule_variables.rb | 15 - ...correct_protected_branches_foreign_keys.rb | 40 - ...add_foreign_key_for_merge_request_diffs.rb | 30 - ...22135451_rename_duplicated_variable_key.rb | 38 - ...8_add_environment_scope_to_ci_variables.rb | 15 - ...8_add_unique_constraint_to_ci_variables.rb | 35 - ...162730_add_ref_fetched_to_merge_request.rb | 9 - ...05_remove_ci_variables_project_id_index.rb | 19 - ...bled_to_password_authentication_enabled.rb | 15 - ...2400_add_stage_id_foreign_key_to_builds.rb | 27 - ...llowed_group_id_to_application_settings.rb | 9 - ...170707183807_add_group_id_to_milestones.rb | 20 - ...07184243_add_group_milestone_id_indexes.rb | 21 - ...ove_wrong_versions_from_schema_versions.rb | 10 - ...3355_clean_stage_id_reference_migration.rb | 18 - .../20170711145320_add_status_to_ci_stages.rb | 9 - ...04829_add_foreign_key_to_merge_requests.rb | 37 - ...0170717074009_move_system_upload_folder.rb | 70 - ...dd_trusted_column_to_oauth_applications.rb | 15 - ...720111708_add_lock_version_to_ci_stages.rb | 9 - ...720122741_create_user_custom_attributes.rb | 17 - ...0720130522_create_ci_pipeline_variables.rb | 20 - ...dd_foreign_key_to_ci_pipeline_variables.rb | 15 - ...add_lower_path_index_to_redirect_routes.rb | 35 - ..._add_binary_to_merge_request_diff_files.rb | 9 - ...23534_add_index_on_events_project_id_id.rb | 37 - ...70731175128_add_percentages_to_conv_dev.rb | 32 - ...1183033_add_merge_jid_to_merge_requests.rb | 7 - ...802013652_add_storage_fields_to_project.rb | 16 - ...anise_issues_indexes_for_faster_sorting.rb | 43 - ...07071105_add_hashed_storage_to_settings.rb | 18 - ..._broadcast_message_not_null_constraints.rb | 29 - ...170809142252_cleanup_appearances_schema.rb | 33 - ..._export_enabled_to_application_settings.rb | 14 - ...21154_add_discussion_locked_to_issuable.rb | 13 - ...16133938_add_access_level_to_ci_runners.rb | 16 - ...170816133940_add_protected_to_ci_builds.rb | 7 - ...816143940_add_protected_to_ci_pipelines.rb | 7 - ...153940_add_index_on_ci_builds_protected.rb | 15 - .../20170816234252_add_theme_id_to_users.rb | 10 - ...d_verification_status_to_gpg_signatures.rb | 20 - ...558_correct_protected_tags_foreign_keys.rb | 35 - ..._create_user_synced_attributes_metadata.rb | 15 - ..._devops_enabled_to_application_settings.rb | 15 - ...allow_appearances_description_html_null.rb | 18 - ...825015534_add_file_store_to_lfs_objects.rb | 31 - ...0825104051_migrate_issues_to_ghost_user.rb | 37 - ...54015_resolve_outdated_diff_discussions.rb | 9 - ..._index_on_merge_request_diff_commit_sha.rb | 17 - ...70828093725_create_project_auto_dev_ops.rb | 19 - ...8135939_migrate_user_external_mail_data.rb | 57 - ...0125940_add_failure_reason_to_ci_builds.rb | 9 - ...19_steal_remaining_event_migration_jobs.rb | 18 - ...70830131015_swap_event_migration_tables.rb | 47 - ...31092813_add_config_source_to_pipelines.rb | 7 - ...1071411_add_foreign_key_to_issue_author.rb | 14 - .../20170904092148_add_email_confirmation.rb | 33 - ...905112933_add_resolved_by_push_to_notes.rb | 9 - ...70906133745_add_runners_token_to_groups.rb | 9 - ...0909090114_add_email_confirmation_index.rb | 36 - ...20170909150936_add_spent_at_to_timelogs.rb | 11 - ...2113435_clean_stages_statuses_migration.rb | 26 - ...131410_environments_project_id_not_null.rb | 16 - ...135630_add_index_for_recent_push_events.rb | 40 - .../20170918072948_create_job_artifacts.rb | 23 - ...0918072949_add_file_store_job_artifacts.rb | 10 - ...111708_create_project_custom_attributes.rb | 15 - ...18140927_create_group_custom_attributes.rb | 19 - ...18222253_reorganize_deployments_indexes.rb | 28 - ...d_deployments_index_for_last_deployment.rb | 21 - ...211300_remove_temporary_ci_builds_index.rb | 28 - ...09_add_project_repository_storage_index.rb | 19 - .../20170924094327_create_gcp_clusters.rb | 45 - ...170925184228_add_favicon_to_appearances.rb | 7 - ..._add_ci_builds_index_for_jobscontroller.rb | 39 - ...9_add_partial_index_for_labels_template.rb | 45 - .../20170927161718_create_gpg_key_subkeys.rb | 25 - ...ndex_on_merge_requests_merge_commit_sha.rb | 33 - .../20170928124105_create_fork_networks.rb | 29 - ...70928133643_create_fork_network_members.rb | 27 - ...9080234_add_failure_reason_to_pipelines.rb | 9 - .../20170929131201_populate_fork_networks.rb | 16 - ...44_make_sure_fast_forward_option_exists.rb | 25 - ...06090001_create_ci_build_trace_sections.rb | 19 - ..._foreign_key_to_ci_build_trace_sections.rb | 15 - ...100_create_ci_build_trace_section_names.rb | 19 - ..._foreign_key_to_ci_build_trace_sections.rb | 15 - ...bal_rate_limits_to_application_settings.rb | 38 - ...aker_properties_to_application_settings.rb | 27 - ...tication_token_to_personal_access_token.rb | 78 - ...94327_create_new_clusters_architectures.rb | 68 - ...reaker_settings_to_application_settings.rb | 16 - .../20171019141859_fix_dev_timezone_schema.rb | 25 - ...merge_request_diff_id_to_merge_requests.rb | 26 - ...10_create_clusters_kubernetes_helm_apps.rb | 18 - ...eout_properties_to_application_settings.rb | 31 - ...3000000_set_uploads_path_size_for_mysql.rb | 25 - ...create_clusters_kubernetes_ingress_apps.rb | 21 - ...1106132212_issues_confidential_not_null.rb | 23 - ...password_authentication_enabled_for_web.rb | 15 - ...enabled_for_git_to_application_settings.rb | 9 - ...6135924_issues_milestone_id_foreign_key.rb | 39 - ...150657_issues_updated_by_id_foreign_key.rb | 45 - ...06151218_issues_moved_to_id_foreign_key.rb | 56 - ..._issues_due_date_index_to_partial_index.rb | 35 - ...171453_add_timezone_to_issues_closed_at.rb | 20 - ...59_merge_requests_author_id_foreign_key.rb | 43 - ..._merge_requests_assignee_id_foreign_key.rb | 39 - ...erge_requests_updated_by_id_foreign_key.rb | 46 - ...erge_requests_merge_user_id_foreign_key.rb | 46 - ..._requests_source_project_id_foreign_key.rb | 45 - ...merge_requests_milestone_id_foreign_key.rb | 39 - ...s_latest_merge_request_diff_id_take_two.rb | 30 - ...35628_add_environment_scope_to_clusters.rb | 15 - ...lines_index_on_project_id_ref_status_id.rb | 35 - ...d_new_project_guidelines_to_appearances.rb | 18 - ..._check_interval_to_application_settings.rb | 20 - ..._default_values_to_merge_request_states.rb | 19 - ...populate_missing_merge_request_statuses.rb | 50 - ...36_make_merge_request_statuses_not_null.rb | 14 - ...elated_columns_to_merge_request_metrics.rb | 37 - ...4204233_add_permanent_to_redirect_route.rb | 18 - ...9_add_permanent_index_to_redirect_route.rb | 19 - ...207185153_add_merge_request_state_index.rb | 18 - ...ization_settings_to_appliction_settings.rb | 29 - ...25_add_can_push_to_deploy_keys_projects.rb | 15 - ...create_clusters_applications_prometheus.rb | 18 - ...71214144320_add_store_column_to_uploads.rb | 12 - ...late_can_push_from_deploy_keys_projects.rb | 64 - ...71216112339_add_foreign_key_for_members.rb | 21 - ...ervice_classification_label_to_projects.rb | 11 - ...1323_add_index_on_namespaces_lower_name.rb | 32 - ...d_confidential_note_events_to_web_hooks.rb | 15 - ...2183504_add_jobs_cache_index_to_project.rb | 13 - ...oject_limit_not_null_and_remove_default.rb | 38 - ..._rebase_commit_sha_to_merge_requests_ce.rb | 15 - db/migrate/20171230123729_init_schema.rb | 1854 ++++++++++++++++ .../20180831164910_import_common_metrics.rb | 4 +- ...6004100_import_common_metrics_nginx_vts.rb | 4 +- ...326164045_import_common_metrics_knative.rb | 4 +- ...20190408163745_prometheus_knative05_fix.rb | 4 +- ...nable_create_incident_issues_by_default.rb | 19 + ..._template_name_to_application_settings.rb} | 8 +- ...reate_namespace_root_storage_statistics.rb | 22 + ..._create_namespace_aggregation_schedules.rb | 14 + ...ns_feature_flags_clients_token_not_null.rb | 11 + ...ted_to_operations_feature_flags_clients.rb | 11 + ...s_feature_flags_clients_token_encrypted.rb | 18 + ...0607085356_add_source_to_pages_domains.rb} | 10 +- ...45325_add_pages_domains_ssl_renew_index.rb | 25 + ...205656_add_wiki_columns_to_index_status.rb | 12 + ...limit_to_hours_to_application_settings.rb} | 8 +- ...613044655_add_username_to_deploy_tokens.rb | 9 + .../20190613073003_create_project_aliases.rb | 16 + .../20190617123615_add_grafana_to_settings.rb | 18 + ...27_change_null_private_profile_to_false.rb | 33 + ..._usage_notification_level_to_namespaces.rb | 9 + ...0621151636_add_merge_request_rebase_jid.rb | 9 + ...623212503_add_cluster_id_to_deployments.rb | 9 + ...90624123615_add_grafana_url_to_settings.rb | 18 + ...0625115224_add_description_to_services.rb} | 6 +- ..._add_cluster_id_index_fk_to_deployments.rb | 21 + ...egies_to_operations_feature_flag_scopes.rb | 17 + ...85000_add_released_at_to_releases_table.rb | 11 + ...to_released_at_column_on_releases_table.rb | 18 + ...90703130053_remove_gitaly_feature_flags.rb | 48 + ...add_rule_type_to_approval_project_rules.rb | 17 + ...dex_to_approval_project_rules_rule_type.rb | 17 + ...16151221_add_active_jobs_limit_to_plans.rb | 2 +- ...cess_tokens_default_back_to_empty_array.rb | 19 - ...remove_inactive_jira_service_properties.rb | 10 - ...project_records_with_invalid_visibility.rb | 49 - ...161128170531_drop_user_activities_table.rb | 33 - ...20161221140236_remove_unneeded_services.rb | 15 - ...221153951_rename_reserved_project_names.rb | 137 -- ...4150317_requeue_pending_delete_projects.rb | 49 - ...20170106142508_fill_authorized_projects.rb | 30 - ...remove_project_authorizations_id_column.rb | 12 - ...set_users_authorized_projects_populated.rb | 18 - ..._remove_inactive_default_email_services.rb | 41 - ..._remove_trackable_columns_from_timelogs.rb | 24 - ...01030_validate_foreign_keys_on_timelogs.rb | 32 - ...e_foreign_keys_on_oauth_openid_requests.rb | 20 - ...73944_disable_invalid_service_templates.rb | 13 - ...112_delete_deprecated_gitlab_ci_service.rb | 15 - ...170215200045_remove_theme_id_from_users.rb | 9 - ...migrate_build_events_to_pipeline_events.rb | 86 - ...306170512_migrate_legacy_manual_actions.rb | 23 - ...71644_reset_relative_position_for_issue.rb | 19 - ...3418_rename_more_reserved_project_names.rb | 79 - ...317162059_update_upload_paths_to_system.rb | 57 - ...er_activities_to_users_last_activity_on.rb | 88 - ...532_remove_notes_original_discussion_id.rb | 23 - .../20170406111121_clean_upload_symlinks.rb | 53 - ...0170406142253_migrate_user_project_view.rb | 22 - ...0408033905_remove_old_cache_directories.rb | 23 - ...412174900_rename_reserved_dynamic_paths.rb | 62 - ...trigger_schedules_to_pipeline_schedules.rb | 48 - ...5130047_drop_ci_trigger_schedules_table.rb | 32 - ...e_auto_cancel_pending_pipelines_for_all.rb | 19 - ...70503004427_update_retried_for_ci_build.rb | 69 - ...dd_head_pipeline_for_each_merge_request.rb | 28 - ..._foreign_key_on_pipeline_schedule_owner.rb | 35 - ...me_web_hooks_build_events_to_job_events.rb | 18 - ...ame_services_build_events_to_job_events.rb | 18 - ...170516165238_cleanup_trigger_for_issues.rb | 39 - ...dd_constraints_to_issue_assignees_table.rb | 37 - ...835_rename_users_with_renamed_namespace.rb | 51 - ...170518231126_fix_wrongly_renamed_routes.rb | 105 - ...523073948_remove_assignee_id_from_issue.rb | 48 - .../20170523083112_migrate_old_artifacts.rb | 72 - ...5140254_rename_all_reserved_paths_again.rb | 102 - .../20170526185842_migrate_pipeline_stages.rb | 22 - ...6185858_create_index_in_pipeline_stages.rb | 15 - ...85901_remove_stage_id_index_from_builds.rb | 18 - ...526185921_migrate_build_stage_reference.rb | 19 - ...000_migrate_build_stage_reference_again.rb | 28 - ...1203055_cleanup_users_ldap_email_rename.rb | 16 - ...606202615_move_appearance_to_system_dir.rb | 57 - ...custom_notification_settings_to_columns.rb | 55 - ...09183112_remove_position_from_issuables.rb | 8 - ...0612071012_move_personal_snippets_files.rb | 92 - ...0170613111224_clean_appearance_symlinks.rb | 53 - ...0621102400_add_stage_id_index_to_builds.rb | 17 - ...0170627101016_schedule_event_migrations.rb | 40 - ...igrate_stage_id_reference_in_background.rb | 33 - ...lication_settings_signin_enabled_rename.rb | 15 - .../20170711145558_migrate_stages_statuses.rb | 34 - ...eanup_move_system_upload_folder_symlink.rb | 40 - ...ue_migrate_system_uploads_to_new_folder.rb | 20 - ...rge_issuable_reopened_into_opened_state.rb | 32 - ...emove_events_from_notification_settings.rb | 9 - ...03_calculate_conv_dev_index_percentages.rb | 30 - ...ve_locked_at_column_from_merge_requests.rb | 11 - ...sonal_snippet_files_into_correct_folder.rb | 29 - ...170815060945_remove_duplicate_mr_events.rb | 26 - ...sting_namespace_pending_delete_projects.rb | 54 - ...2101017_migrate_pipeline_sidekiq_queues.rb | 17 - ..._deploy_migrate_user_external_mail_data.rb | 57 - ...70513_remove_user_email_provider_column.rb | 12 - ...70516_remove_user_external_mail_columns.rb | 12 - .../20170830084744_destroy_gpg_signatures.rb | 10 - ...0150306_drop_events_for_migration_table.rb | 47 - ...ove_valid_signature_from_gpg_signatures.rb | 11 - ...0235_delete_conflicting_redirect_routes.rb | 13 - ...00_fix_projects_without_project_feature.rb | 33 - ...170921101004_normalize_ldap_extern_uids.rb | 29 - ...pdate_legacy_diff_notes_type_for_import.rb | 17 - ...0927112319_update_notes_type_for_import.rb | 17 - ...150314_remove_user_authentication_token.rb | 20 - ..._clusters_to_new_clusters_architectures.rb | 98 - ...latest_merge_request_diff_id_migrations.rb | 29 - ..._remove_ref_fetched_from_merge_requests.rb | 14 - .../20171103140253_track_untracked_uploads.rb | 21 - ..._password_authentication_enabled_rename.rb | 15 - ...0171106154015_remove_issues_branch_name.rb | 13 - ...leanup_add_timezone_to_issues_closed_at.rb | 20 - ...171114104051_remove_empty_fork_networks.rb | 36 - ...ge_request_diff_st_commits_and_st_diffs.rb | 10 - ...23101020_update_circuitbreaker_defaults.rb | 34 - ...101046_remove_old_circuitbreaker_config.rb | 26 - ...e_request_diffs_merge_request_id_and_id.rb | 17 - ...rge_request_diffs_merge_request_diff_id.rb | 17 - ...s_service_to_new_clusters_architectures.rb | 151 -- ...150326_reschedule_fork_network_creation.rb | 13 - ...reschedule_fork_network_creation_caller.rb | 27 - ...300_remove_project_labels_group_id_copy.rb | 21 - ...0171207150344_remove_deleted_at_columns.rb | 31 - ...ub_importer_advance_stage_sidekiq_queue.rb | 16 - ...late_can_push_from_deploy_keys_projects.rb | 63 - ...0171215121259_remove_can_push_from_keys.rb | 17 - ...01_normalize_extern_uid_from_identities.rb | 29 - ...0_schedule_issues_closed_at_type_change.rb | 45 - ...02111106_remove_project_labels_group_id.rb | 19 - ...27_build_user_interacted_projects_table.rb | 4 +- ...te_legacy_managed_clusters_to_unmanaged.rb | 48 + ...50_encrypt_feature_flags_clients_tokens.rb | 27 + ...ged_clusters_with_no_token_to_unmanaged.rb | 48 + ...20190618171120_update_geo_nodes_primary.rb | 20 + ...843_remove_import_columns_from_projects.rb | 14 + ...8_enqueue_reset_merge_status_second_run.rb | 25 + ...remove_sentry_from_application_settings.rb | 38 + ...chedule_fixing_names_of_user_namespaces.rb | 48 + ...ulate_remaining_merge_request_assignees.rb | 20 + ...0703185326_fix_wrong_pages_access_level.rb | 28 + ...ect_features_pages_access_level_default.rb | 12 + db/schema.rb | 167 +- doc/README.md | 68 +- doc/administration/audit_events.md | 10 +- doc/administration/auditor_users.md | 4 +- doc/administration/auth/README.md | 39 +- doc/administration/auth/authentiq.md | 79 +- doc/administration/auth/crowd.md | 71 +- doc/administration/auth/google_secure_ldap.md | 27 +- .../how_to_configure_ldap_gitlab_ce/index.md | 24 +- .../how_to_configure_ldap_gitlab_ee/index.md | 24 +- doc/administration/auth/jwt.md | 112 +- doc/administration/auth/ldap-ee.md | 270 +-- doc/administration/auth/ldap.md | 111 +- doc/administration/auth/oidc.md | 153 +- doc/administration/auth/okta.md | 190 +- doc/administration/auth/smartcard.md | 96 +- doc/administration/container_registry.md | 307 +-- doc/administration/database_load_balancing.md | 48 +- doc/administration/dependency_proxy.md | 5 +- doc/administration/environment_variables.md | 4 +- .../background_verification.md | 29 +- .../disaster_recovery/bring_primary_back.md | 28 +- .../geo/disaster_recovery/index.md | 229 +- .../geo/disaster_recovery/planned_failover.md | 43 +- .../geo/replication/configuration.md | 177 +- .../geo/replication/database.md | 558 ++--- .../geo/replication/docker_registry.md | 2 +- .../geo/replication/external_database.md | 147 +- doc/administration/geo/replication/faq.md | 18 +- .../geo/replication/high_availability.md | 252 +-- doc/administration/geo/replication/index.md | 12 +- .../geo/replication/object_storage.md | 6 +- .../geo/replication/remove_geo_node.md | 55 +- .../geo/replication/security_review.md | 4 +- .../geo/replication/troubleshooting.md | 437 ++-- doc/administration/geo/replication/tuning.md | 2 +- .../geo/replication/updating_the_geo_nodes.md | 343 +-- .../geo/replication/using_a_geo_server.md | 2 +- doc/administration/gitaly/index.md | 32 +- .../high_availability/README.md | 23 +- .../high_availability/alpha_database.md | 3 +- .../high_availability/consul.md | 104 +- .../high_availability/database.md | 547 ++--- .../high_availability/gitaly.md | 58 +- .../high_availability/gitlab.md | 143 +- .../high_availability/load_balancer.md | 16 + .../high_availability/monitoring_node.md | 90 +- doc/administration/high_availability/nfs.md | 52 +- .../nfs_host_client_setup.md | 16 + .../high_availability/pgbouncer.md | 161 +- doc/administration/high_availability/redis.md | 470 ++-- .../high_availability/redis_source.md | 299 +-- doc/administration/housekeeping.md | 3 - doc/administration/{ => img}/audit_log.png | Bin .../{ => img}/auditor_access_form.png | Bin doc/administration/incoming_email.md | 44 +- doc/administration/index.md | 49 +- doc/administration/instance_review.md | 2 +- doc/administration/integration/plantuml.md | 71 +- doc/administration/integration/terminal.md | 4 +- doc/administration/issue_closing_pattern.md | 17 +- doc/administration/job_artifacts.md | 168 +- doc/administration/job_traces.md | 54 +- doc/administration/logs.md | 7 +- doc/administration/merge_request_diffs.md | 126 +- doc/administration/monitoring/ip_whitelist.md | 20 +- .../performance/gitlab_configuration.md | 6 - .../performance/grafana_configuration.md | 19 +- .../performance/influxdb_configuration.md | 2 +- .../monitoring/performance/performance_bar.md | 4 - .../monitoring/prometheus/gitlab_metrics.md | 6 +- .../prometheus/gitlab_monitor_exporter.md | 6 +- .../monitoring/prometheus/index.md | 140 +- .../monitoring/prometheus/node_exporter.md | 6 +- .../prometheus/pgbouncer_exporter.md | 6 +- .../prometheus/postgres_exporter.md | 6 +- .../monitoring/prometheus/redis_exporter.md | 6 +- .../operations/extra_sidekiq_processes.md | 221 +- .../operations/fast_ssh_key_lookup.md | 108 +- .../operations/filesystem_benchmarking.md | 33 +- doc/administration/operations/index.md | 2 +- doc/administration/operations/unicorn.md | 2 +- doc/administration/packages.md | 144 +- .../img/lets_encrypt_integration_v12_1.png | Bin 0 -> 98409 bytes doc/administration/pages/index.md | 193 +- doc/administration/pages/source.md | 248 +-- doc/administration/pseudonymizer.md | 66 +- doc/administration/raketasks/geo.md | 6 +- doc/administration/raketasks/maintenance.md | 23 +- .../raketasks/project_import_export.md | 18 +- doc/administration/raketasks/storage.md | 29 +- .../raketasks/uploads/sanitize.md | 16 +- .../reply_by_email_postfix_setup.md | 384 ++-- doc/administration/repository_checks.md | 4 +- .../repository_storage_paths.md | 46 +- .../repository_storage_types.md | 33 +- doc/administration/restart_gitlab.md | 4 +- doc/administration/troubleshooting/debug.md | 108 +- doc/administration/uploads.md | 164 +- doc/api/README.md | 53 +- doc/api/boards.md | 11 +- doc/api/commits.md | 1 + doc/api/container_registry.md | 5 + doc/api/dependencies.md | 50 + doc/api/deploy_keys.md | 4 +- doc/api/discussions.md | 234 +- doc/api/environments.md | 4 +- doc/api/epic_issues.md | 2 +- doc/api/epic_links.md | 2 +- doc/api/epics.md | 4 +- doc/api/geo_nodes.md | 2 +- doc/api/graphql/index.md | 28 +- doc/api/graphql/reference/index.md | 507 +++++ doc/api/group_boards.md | 289 ++- doc/api/group_clusters.md | 280 +++ doc/api/group_milestones.md | 29 +- doc/api/groups.md | 215 +- doc/api/issue_links.md | 5 +- doc/api/issues.md | 162 +- doc/api/issues_statistics.md | 19 +- doc/api/jobs.md | 27 +- doc/api/license.md | 3 +- doc/api/lint.md | 38 +- doc/api/managed_licenses.md | 4 +- doc/api/merge_request_approvals.md | 14 +- doc/api/merge_requests.md | 228 +- doc/api/milestones.md | 29 +- doc/api/namespaces.md | 16 +- doc/api/notes.md | 16 +- doc/api/notification_settings.md | 52 +- doc/api/oauth2.md | 2 +- doc/api/packages.md | 4 +- doc/api/pages_domains.md | 2 +- doc/api/pipeline_schedules.md | 12 +- doc/api/pipelines.md | 10 +- doc/api/project_aliases.md | 111 + doc/api/project_badges.md | 2 +- doc/api/project_clusters.md | 4 +- doc/api/project_level_variables.md | 4 +- doc/api/project_snippets.md | 8 +- doc/api/project_statistics.md | 2 +- doc/api/project_templates.md | 6 +- doc/api/projects.md | 307 ++- doc/api/protected_branches.md | 154 +- doc/api/protected_tags.md | 1 + .../releases/img/upcoming_release_v12_1.png | Bin 0 -> 22635 bytes doc/api/releases/index.md | 18 +- doc/api/repositories.md | 30 +- doc/api/repository_submodules.md | 2 +- doc/api/resource_label_events.md | 2 +- doc/api/runners.md | 46 +- doc/api/scim.md | 4 +- doc/api/search.md | 20 +- doc/api/services.md | 35 +- doc/api/settings.md | 81 +- doc/api/system_hooks.md | 8 +- doc/api/tags.md | 1 + doc/api/users.md | 239 +- doc/api/v3_to_v4.md | 4 +- doc/api/vulnerabilities.md | 18 +- doc/ci/README.md | 25 +- doc/ci/caching/index.md | 2 +- .../bitbucket_integration.md | 2 +- .../github_integration.md | 4 +- doc/ci/ci_cd_for_external_repos/index.md | 2 +- doc/ci/docker/using_docker_build.md | 9 +- doc/ci/docker/using_docker_images.md | 184 +- doc/ci/environments.md | 6 +- doc/ci/environments/protected_environments.md | 2 +- doc/ci/examples/README.md | 5 +- .../examples/artifactory_and_gitlab/index.md | 2 +- .../index.md | 4 +- .../end_to_end_testing_webdriverio/index.md | 8 +- .../laravel_with_gitlab_and_envoy/index.md | 1 + doc/ci/examples/php.md | 8 +- doc/ci/examples/test-clojure-application.md | 2 +- doc/ci/examples/test-scala-application.md | 8 +- .../index.md | 10 +- doc/ci/git_submodules.md | 28 +- doc/ci/img/collapsible_log.png | Bin 0 -> 174697 bytes doc/ci/interactive_web_terminal/index.md | 5 +- doc/ci/introduction/index.md | 18 +- doc/ci/merge_request_pipelines/index.md | 147 +- .../img/merge_request_pipeline.png | Bin .../img/merge_request_pipeline_config.png | Bin .../pipelines_for_merged_results/index.md | 78 + .../img/merge_train_cancel_v12_0.png} | Bin .../img/merge_train_config_v12_0.png} | Bin .../img/merge_train_start_v12_0.png} | Bin ...in_start_when_pipeline_succeeds_v12_0.png} | Bin .../merge_trains/index.md | 88 + doc/ci/metrics_reports.md | 4 +- doc/ci/multi_project_pipelines.md | 2 +- doc/ci/pipelines.md | 16 +- doc/ci/quick_start/README.md | 2 +- .../review_apps/img/toolbar_feeback_form.png | Bin 71676 -> 24599 bytes doc/ci/review_apps/index.md | 138 +- doc/ci/runners/README.md | 4 +- doc/ci/services/postgres.md | 4 +- doc/ci/triggers/README.md | 4 +- doc/ci/variables/README.md | 17 +- doc/ci/variables/predefined_variables.md | 5 +- doc/ci/yaml/README.md | 108 +- doc/customization/index.md | 2 +- doc/customization/issue_closing.md | 4 +- doc/customization/libravatar.md | 12 +- .../system_header_and_footer_messages.md | 7 +- doc/development/README.md | 10 +- doc/development/api_graphql_styleguide.md | 25 +- doc/development/api_styleguide.md | 2 +- doc/development/architecture.md | 36 +- doc/development/automatic_ce_ee_merge.md | 53 +- doc/development/changelog.md | 17 +- doc/development/chaos_endpoints.md | 59 +- doc/development/chatops_on_gitlabcom.md | 15 +- doc/development/code_comments.md | 14 + doc/development/code_review.md | 39 +- .../contributing/community_roles.md | 4 +- doc/development/contributing/index.md | 2 +- .../contributing/issue_workflow.md | 145 +- .../contributing/merge_request_workflow.md | 17 +- doc/development/contributing/style_guides.md | 12 +- doc/development/database_debugging.md | 54 +- doc/development/diffs.md | 9 + .../documentation/feature-change-workflow.md | 30 +- doc/development/documentation/index.md | 27 +- .../site_architecture/global_nav.md | 44 +- .../documentation/site_architecture/index.md | 46 +- doc/development/documentation/structure.md | 4 +- doc/development/documentation/styleguide.md | 182 +- doc/development/documentation/workflow.md | 2 +- doc/development/ee_features.md | 109 +- doc/development/elasticsearch.md | 57 +- doc/development/emails.md | 84 +- doc/development/fe_guide/accessibility.md | 12 +- doc/development/fe_guide/architecture.md | 2 +- doc/development/fe_guide/design_patterns.md | 3 + .../fe_guide/development_process.md | 24 +- doc/development/fe_guide/droplab/droplab.md | 8 + .../fe_guide/droplab/plugins/ajax.md | 19 +- .../fe_guide/droplab/plugins/filter.md | 31 +- .../fe_guide/droplab/plugins/input_setter.md | 45 +- doc/development/fe_guide/emojis.md | 4 +- doc/development/fe_guide/event_tracking.md | 2 +- doc/development/fe_guide/graphql.md | 4 +- doc/development/fe_guide/icons.md | 16 +- doc/development/fe_guide/index.md | 10 - doc/development/fe_guide/security.md | 7 +- doc/development/fe_guide/style_guide_scss.md | 9 +- doc/development/fe_guide/vue.md | 12 +- doc/development/feature_flags.md | 128 +- doc/development/feature_flags/controls.md | 123 ++ doc/development/feature_flags/development.md | 131 ++ doc/development/feature_flags/index.md | 12 + doc/development/feature_flags/process.md | 131 ++ doc/development/file_storage.md | 10 +- doc/development/geo.md | 64 +- doc/development/git_object_deduplication.md | 110 +- doc/development/gitaly.md | 41 +- doc/development/go_guide/index.md | 45 +- doc/development/gotchas.md | 8 +- doc/development/i18n/externalization.md | 48 +- doc/development/i18n/proofreader.md | 29 +- doc/development/integrations/jira_connect.md | 6 +- doc/development/lfs.md | 11 + .../licensed_feature_availability.md | 22 +- doc/development/logging.md | 80 +- doc/development/migration_style_guide.md | 2 +- .../new_fe_guide/development/components.md | 2 +- .../new_fe_guide/development/performance.md | 4 +- .../new_fe_guide/development/testing.md | 4 +- doc/development/new_fe_guide/index.md | 1 - doc/development/new_fe_guide/style/html.md | 2 +- .../new_fe_guide/style/javascript.md | 5 +- .../new_fe_guide/style/prettier.md | 3 +- doc/development/new_fe_guide/tips.md | 10 +- doc/development/newlines_styleguide.md | 4 +- doc/development/packages.md | 40 +- doc/development/performance.md | 3 +- doc/development/profiling.md | 12 +- doc/development/prometheus_metrics.md | 4 +- doc/development/pry_debugging.md | 2 +- doc/development/python_guide/index.md | 3 +- doc/development/query_recorder.md | 4 +- doc/development/rake_tasks.md | 26 +- doc/development/repository_mirroring.md | 11 + doc/development/reusing_abstractions.md | 36 + ...rolling_out_changes_using_feature_flags.md | 226 +- doc/development/routing.md | 34 +- doc/development/sql.md | 4 +- doc/development/swapping_tables.md | 8 - .../testing_guide/best_practices.md | 2 +- doc/development/testing_guide/ci.md | 4 +- .../end_to_end/dynamic_element_validation.md | 12 +- .../testing_guide/end_to_end/index.md | 38 +- .../testing_guide/end_to_end/page_objects.md | 44 +- .../end_to_end/quick_start_guide.md | 59 +- .../testing_guide/end_to_end/style_guide.md | 13 +- .../testing_guide/frontend_testing.md | 55 +- ...qa_on_merge_requests_cicd_architecture.png | Bin 64862 -> 0 bytes .../img/review_apps_cicd_architecture.png | Bin 136431 -> 0 bytes doc/development/testing_guide/index.md | 23 +- doc/development/testing_guide/review_apps.md | 33 +- .../understanding_explain_plans.md | 1 - doc/development/ux_guide/resources.md | 4 +- doc/downgrade_ee_to_ce/README.md | 2 +- doc/gitlab-basics/README.md | 2 +- doc/gitlab-basics/command-line-commands.md | 17 +- doc/gitlab-basics/create-issue.md | 4 +- doc/gitlab-basics/create-project.md | 36 +- doc/install/README.md | 2 +- doc/install/aws/index.md | 139 +- doc/install/azure/index.md | 31 +- doc/install/database_mysql.md | 319 --- doc/install/digitaloceandocker.md | 32 +- doc/install/google_cloud_platform/index.md | 46 +- doc/install/installation.md | 114 +- doc/install/kubernetes/gitlab_chart.md | 2 +- doc/install/kubernetes/gitlab_omnibus.md | 2 +- doc/install/kubernetes/gitlab_runner_chart.md | 2 +- doc/install/kubernetes/index.md | 2 +- doc/install/kubernetes/preparation/connect.md | 2 +- doc/install/kubernetes/preparation/eks.md | 2 +- .../kubernetes/preparation/networking.md | 2 +- doc/install/kubernetes/preparation/rbac.md | 2 +- doc/install/kubernetes/preparation/tiller.md | 2 +- .../preparation/tools_installation.md | 2 +- doc/install/openshift_and_gitlab/index.md | 129 +- doc/install/pivotal/index.md | 2 +- doc/install/relative_url.md | 84 +- doc/install/requirements.md | 42 +- doc/integration/README.md | 8 +- doc/integration/akismet.md | 2 +- doc/integration/auth0.md | 82 +- doc/integration/azure.md | 96 +- doc/integration/bitbucket.md | 142 +- doc/integration/cas.md | 84 +- doc/integration/elasticsearch.md | 146 +- doc/integration/facebook.md | 66 +- doc/integration/github.md | 180 +- doc/integration/gitlab.md | 96 +- doc/integration/google.md | 104 +- doc/integration/jenkins.md | 42 +- doc/integration/jenkins_deprecated.md | 8 +- doc/integration/jira_development_panel.md | 2 +- doc/integration/kerberos.md | 106 +- doc/integration/oauth2_generic.md | 36 +- doc/integration/oauth_provider.md | 16 +- doc/integration/omniauth.md | 126 +- doc/integration/openid_connect_provider.md | 6 +- doc/integration/salesforce.md | 98 +- doc/integration/shibboleth.md | 160 +- doc/integration/twitter.md | 99 +- doc/integration/ultra_auth.md | 123 +- doc/intro/README.md | 8 +- doc/migrate_ci_to_ce/README.md | 14 +- doc/pages/getting_started_part_three.md | 4 +- doc/policy/maintenance.md | 2 +- doc/public_access/public_access.md | 6 + doc/push_rules/push_rules.md | 6 +- doc/raketasks/README.md | 4 +- doc/raketasks/backup_restore.md | 358 +-- doc/raketasks/cleanup.md | 45 + doc/raketasks/import.md | 2 +- doc/raketasks/web_hooks.md | 62 +- doc/security/information_exclusivity.md | 1 + doc/security/password_length_limits.md | 30 +- doc/security/rack_attack.md | 78 +- doc/security/reset_root_password.md | 1 + doc/security/ssh_keys_restrictions.md | 1 + doc/security/two_factor_authentication.md | 7 +- doc/security/unlock_user.md | 47 +- doc/security/user_email_confirmation.md | 1 + doc/security/user_file_uploads.md | 3 +- doc/security/webhooks.md | 1 + doc/ssh/README.md | 81 +- doc/subscriptions/index.md | 20 +- doc/system_hooks/system_hooks.md | 1 + doc/tools/email.md | 2 +- .../application_development_platform/index.md | 62 + doc/topics/authentication/index.md | 10 +- doc/topics/autodevops/index.md | 107 +- doc/topics/autodevops/quick_start_guide.md | 14 +- doc/university/README.md | 5 +- doc/university/process/README.md | 6 +- doc/university/support/README.md | 4 +- doc/university/training/index.md | 8 +- doc/university/training/topics/env_setup.md | 2 + .../training/topics/getting_started.md | 19 +- doc/update/README.md | 7 +- doc/update/mysql_to_postgresql.md | 10 +- doc/update/patch_versions.md | 8 +- doc/update/upgrading_from_ce_to_ee.md | 24 +- doc/update/upgrading_from_source.md | 53 +- .../admin_area/custom_project_templates.md | 4 +- doc/user/admin_area/geo_nodes.md | 10 +- doc/user/admin_area/index.md | 75 +- doc/user/admin_area/labels.md | 2 +- doc/user/admin_area/license.md | 2 +- .../admin_area/monitoring/health_check.md | 51 +- .../settings/account_and_limit_settings.md | 8 +- .../settings/continuous_integration.md | 61 +- doc/user/admin_area/settings/email.md | 2 +- .../settings/external_authorization.md | 12 +- .../settings/img/admin_required_pipeline.png | Bin 0 -> 64548 bytes doc/user/admin_area/settings/index.md | 6 +- .../settings/instance_template_repository.md | 4 +- .../settings/sign_up_restrictions.md | 22 +- doc/user/admin_area/settings/terms.md | 2 +- .../admin_area/settings/usage_statistics.md | 6 +- .../visibility_and_access_controls.md | 2 +- .../container_scanning/index.md | 160 +- doc/user/application_security/dast/index.md | 134 +- .../dependency_scanning/analyzers.md | 133 ++ .../dependency_scanning/index.md | 180 +- doc/user/application_security/index.md | 39 +- .../img/license_management_add_license.png | Bin 0 -> 87049 bytes .../img/license_management_search.png | Bin 0 -> 104278 bytes .../img/license_management_settings.png | Bin 13300 -> 171592 bytes .../license_management/index.md | 141 +- doc/user/application_security/sast/index.md | 125 +- .../security_dashboard/index.md | 2 +- doc/user/asciidoc.md | 13 +- doc/user/award_emojis.md | 2 +- doc/user/clusters/applications.md | 6 +- ...matically_resolve_outdated_discussions.png | Bin 38001 -> 57642 bytes .../img/btn_new_issue_for_all_discussions.png | Bin 9555 -> 0 bytes .../img/btn_new_issue_for_all_threads.png | Bin 0 -> 19431 bytes .../img/commit_comment_mr_context.png | Bin 25854 -> 365956 bytes .../img/commit_comment_mr_discussions_tab.png | Bin 15139 -> 276385 bytes .../discussions/img/discussion_comment.png | Bin 37351 -> 60561 bytes doc/user/discussions/img/discussion_view.png | Bin 73807 -> 0 bytes .../img/image_resolved_discussion.png | Bin 48234 -> 199539 bytes .../img/merge_request_commits_tab.png | Bin 12792 -> 169010 bytes .../discussions/img/mr_review_resolve.png | Bin 21941 -> 247868 bytes .../discussions/img/mr_review_resolve2.png | Bin 9430 -> 232589 bytes .../img/mr_review_second_comment.png | Bin 11188 -> 183733 bytes .../img/mr_review_second_comment_added.png | Bin 9673 -> 161924 bytes doc/user/discussions/img/mr_review_start.png | Bin 23491 -> 274186 bytes .../discussions/img/mr_review_unresolve.png | Bin 11302 -> 298513 bytes .../discussions/img/new_issue_for_thread.png | Bin 0 -> 21119 bytes doc/user/discussions/img/onion_skin_view.png | Bin 45053 -> 95809 bytes ...llow_merge_if_all_threads_are_resolved.png | Bin 0 -> 53804 bytes .../img/pending_review_comment.png | Bin 8793 -> 247865 bytes .../img/preview_issue_for_thread.png | Bin 0 -> 119608 bytes .../img/preview_issue_for_threads.png | Bin 0 -> 131506 bytes .../img/resolve_comment_button.png | Bin 4713 -> 11680 bytes .../discussions/img/resolve_thread_button.png | Bin 0 -> 34562 bytes .../img/resolve_thread_issue_notice.png | Bin 0 -> 44429 bytes .../img/resolve_thread_open_issue.png | Bin 0 -> 57089 bytes .../img/review_comment_quickactions.png | Bin 12392 -> 270228 bytes doc/user/discussions/img/review_preview.png | Bin 19769 -> 84789 bytes doc/user/discussions/img/swipe_view.png | Bin 16483 -> 71076 bytes doc/user/discussions/img/thread_view.png | Bin 0 -> 556169 bytes doc/user/discussions/img/threads_resolved.png | Bin 0 -> 12667 bytes doc/user/discussions/img/two_up_view.png | Bin 61759 -> 118688 bytes doc/user/discussions/index.md | 222 +- doc/user/gitlab_com/index.md | 18 +- doc/user/group/clusters/index.md | 12 +- .../group/contribution_analytics/index.md | 20 +- doc/user/group/custom_project_templates.md | 6 +- doc/user/group/dependency_proxy/index.md | 2 +- doc/user/group/epics/index.md | 12 +- doc/user/group/index.md | 63 +- doc/user/group/insights/index.md | 5 +- doc/user/group/issues_analytics/index.md | 2 +- doc/user/group/roadmap/index.md | 6 +- doc/user/group/saml_sso/index.md | 2 +- doc/user/group/saml_sso/scim_setup.md | 80 +- doc/user/group/subgroups/index.md | 13 +- .../img/color_inline_colorchip_render_gfm.png | Bin 4684 -> 0 bytes .../markdown_inline_diffs_tags_rendered.png | Bin 1804 -> 0 bytes doc/user/img/math_inline_sup_render_gfm.png | Bin 1119 -> 0 bytes doc/user/img/task_list_ordered_render_gfm.png | Bin 2855 -> 0 bytes doc/user/index.md | 12 +- doc/user/markdown.md | 1852 +++++++++------- doc/user/operations_dashboard/index.md | 13 +- doc/user/permissions.md | 53 +- doc/user/profile/account/img/2fa.png | Bin 22047 -> 0 bytes doc/user/profile/account/img/2fa_auth.png | Bin 14535 -> 0 bytes .../account/img/2fa_u2f_authenticate.png | Bin 17582 -> 0 bytes .../profile/account/img/2fa_u2f_register.png | Bin 35186 -> 0 bytes .../account/two_factor_authentication.md | 183 +- doc/user/profile/preferences.md | 2 +- doc/user/project/autocomplete_characters.md | 48 + doc/user/project/canary_deployments.md | 5 +- .../project/clusters/eks_and_gitlab/index.md | 148 +- doc/user/project/clusters/index.md | 226 +- .../project/clusters/kubernetes_pod_logs.md | 6 +- doc/user/project/clusters/runbooks/index.md | 61 +- .../serverless/img/function-endpoint.png | Bin 0 -> 42436 bytes doc/user/project/clusters/serverless/index.md | 442 +++- doc/user/project/code_owners.md | 21 +- doc/user/project/container_registry.md | 24 +- doc/user/project/cycle_analytics.md | 2 +- doc/user/project/deploy_boards.md | 23 +- .../deploy_tokens/img/deploy_tokens.png | Bin 23087 -> 218635 bytes doc/user/project/deploy_tokens/index.md | 15 +- doc/user/project/description_templates.md | 17 +- doc/user/project/file_lock.md | 85 +- ...autocomplete_characters_example1_v12_0.png | Bin 0 -> 17510 bytes ...autocomplete_characters_example2_v12_0.png | Bin 0 -> 14623 bytes doc/user/project/img/file_lock.png | Bin 26973 -> 46281 bytes doc/user/project/img/file_lock_folders.png | Bin 22900 -> 0 bytes doc/user/project/img/file_lock_list.png | Bin 18243 -> 0 bytes .../file_lock_merge_request_error_message.png | Bin 24573 -> 16254 bytes .../project/img/file_lock_repository_view.png | Bin 22947 -> 17644 bytes doc/user/project/import/bitbucket_server.md | 5 +- doc/user/project/import/gemnasium.md | 6 +- doc/user/project/import/github.md | 4 +- doc/user/project/import/index.md | 6 +- doc/user/project/import/phabricator.md | 6 + doc/user/project/import/svn.md | 2 +- doc/user/project/import/tfs.md | 10 +- doc/user/project/index.md | 50 +- doc/user/project/insights/index.md | 5 +- .../integrations/custom_issue_tracker.md | 4 +- doc/user/project/integrations/github.md | 6 +- .../integrations/gitlab_slack_application.md | 2 +- doc/user/project/integrations/hipchat.md | 2 +- .../integrations/img/jira_api_token.png | Bin 61394 -> 21318 bytes .../integrations/img/jira_api_token_menu.png | Bin 25056 -> 41876 bytes .../integrations/img/jira_issue_reference.png | Bin 18399 -> 64064 bytes .../img/jira_merge_request_close.png | Bin 21172 -> 64305 bytes .../img/jira_service_close_comment.png | Bin 11890 -> 0 bytes .../img/jira_service_close_issue.png | Bin 30570 -> 29632 bytes .../integrations/img/jira_service_page.png | Bin 30395 -> 70807 bytes .../prometheus_dashboard_area_panel_type.png | Bin 0 -> 65101 bytes ...theus_dashboard_single_stat_panel_type.png | Bin 0 -> 26781 bytes doc/user/project/integrations/jira.md | 30 +- .../integrations/jira_cloud_configuration.md | 22 +- .../integrations/jira_server_configuration.md | 28 +- doc/user/project/integrations/mattermost.md | 4 + .../integrations/mattermost_slash_commands.md | 3 + .../project/integrations/project_services.md | 16 +- doc/user/project/integrations/prometheus.md | 174 +- .../prometheus_library/cloudwatch.md | 4 +- .../prometheus_library/haproxy.md | 4 +- .../prometheus_library/kubernetes.md | 26 +- .../integrations/prometheus_library/nginx.md | 6 +- .../prometheus_library/nginx_ingress.md | 6 +- .../prometheus_library/nginx_ingress_vts.md | 6 +- doc/user/project/integrations/slack.md | 2 +- .../integrations/slack_slash_commands.md | 2 +- doc/user/project/integrations/webhooks.md | 6 +- doc/user/project/issue_board.md | 18 +- .../project/issues/automatic_issue_closing.md | 64 +- doc/user/project/issues/closing_issues.md | 62 +- doc/user/project/issues/create_new_issue.md | 107 +- .../project/issues/crosslinking_issues.md | 25 +- doc/user/project/issues/csv_export.md | 4 +- doc/user/project/issues/csv_import.md | 55 +- doc/user/project/issues/deleting_issues.md | 16 +- doc/user/project/issues/due_dates.md | 29 +- doc/user/project/issues/index.md | 103 +- .../project/issues/issue_data_and_actions.md | 53 +- doc/user/project/issues/managing_issues.md | 225 ++ doc/user/project/issues/moving_issues.md | 38 +- .../issues/multiple_assignees_for_issues.md | 2 +- doc/user/project/issues/related_issues.md | 2 +- doc/user/project/issues/similar_issues.md | 19 +- doc/user/project/labels.md | 10 +- doc/user/project/members/index.md | 22 - .../browser_performance_testing.md | 4 +- .../project/merge_requests/code_quality.md | 2 +- doc/user/project/merge_requests/index.md | 53 +- .../merge_requests/merge_request_approvals.md | 22 +- .../merge_when_pipeline_succeeds.md | 19 +- .../merge_requests/squash_and_merge.md | 5 +- .../work_in_progress_merge_requests.md | 10 +- .../project/milestones/burndown_charts.md | 2 +- doc/user/project/milestones/index.md | 14 +- .../project/new_ci_build_permissions_model.md | 6 +- doc/user/project/operations/feature_flags.md | 2 +- doc/user/project/operations/index.md | 4 +- doc/user/project/operations/tracing.md | 10 +- doc/user/project/packages/maven_repository.md | 98 +- doc/user/project/packages/npm_registry.md | 19 +- .../dns_concepts.md | 95 + .../img/add_certificate_to_pages.png | Bin ..._add_new_a_record_example_updated_2018.png | Bin .../img/dns_cname_record_example.png | Bin .../get_domain_verification_code_v12_0.png | Bin 0 -> 194433 bytes .../img/lets_encrypt_integration_v12_1.png | Bin 0 -> 35040 bytes .../img/retry_domain_verification_v12_0.png | Bin 0 -> 191712 bytes .../index.md | 277 +++ .../lets_encrypt_integration.md | 68 + .../ssl_tls_concepts.md | 75 + .../pages/getting_started_part_four.md | 2 +- .../pages/getting_started_part_three.md | 304 +-- .../project/pages/getting_started_part_two.md | 22 +- ....png => pages_project_templates_v11_8.png} | Bin .../project/pages/img/verify_your_domain.png | Bin 12082 -> 0 bytes doc/user/project/pages/index.md | 19 +- doc/user/project/pages/introduction.md | 8 +- .../pages/lets_encrypt_for_gitlab_pages.md | 149 +- doc/user/project/pipelines/job_artifacts.md | 22 +- doc/user/project/pipelines/settings.md | 20 +- doc/user/project/protected_branches.md | 4 +- doc/user/project/quick_actions.md | 49 +- doc/user/project/repository/branches/index.md | 2 +- .../repository/gpg_signed_commits/index.md | 157 +- doc/user/project/repository/index.md | 15 +- .../reducing_the_repo_size_using_git.md | 105 +- doc/user/project/repository/web_editor.md | 15 +- doc/user/project/service_desk.md | 47 +- doc/user/project/settings/import_export.md | 73 +- doc/user/project/settings/index.md | 20 +- doc/user/project/web_ide/index.md | 113 +- doc/user/search/advanced_global_search.md | 2 +- doc/user/search/advanced_search_syntax.md | 2 +- doc/user/search/index.md | 10 +- doc/workflow/README.md | 16 +- doc/workflow/file_finder.md | 4 - doc/workflow/gitlab_flow.md | 37 +- doc/workflow/{ => img}/ci_mr.png | Bin doc/workflow/{ => img}/close_issue_mr.png | Bin .../{ => img}/environment_branches.png | Bin doc/workflow/{ => img}/four_stages.png | Bin doc/workflow/{ => img}/git_pull.png | Bin doc/workflow/{ => img}/gitdashflow.png | Bin doc/workflow/{ => img}/github_flow.png | Bin doc/workflow/{ => img}/gitlab_flow.png | Bin doc/workflow/{ => img}/good_commit.png | Bin doc/workflow/{ => img}/merge_commits.png | Bin doc/workflow/{ => img}/merge_request.png | Bin doc/workflow/{ => img}/messy_flow.png | Bin doc/workflow/{ => img}/mr_inline_comments.png | Bin doc/workflow/{ => img}/production_branch.png | Bin doc/workflow/{ => img}/rebase.png | Bin doc/workflow/{ => img}/release_branches.png | Bin doc/workflow/{ => img}/remove_checkbox.png | Bin doc/workflow/issue_weight.md | 4 +- doc/workflow/lfs/lfs_administration.md | 62 +- .../lfs/manage_large_binaries_with_git_lfs.md | 2 +- doc/workflow/notifications.md | 38 +- doc/workflow/repository_mirroring.md | 30 +- doc/workflow/shortcuts.md | 2 +- doc/workflow/time_tracking.md | 10 +- doc/workflow/timezone.md | 8 +- doc/workflow/todos.md | 140 +- jest.config.js | 11 +- lib/after_commit_queue.rb | 14 +- lib/api/api.rb | 10 +- lib/api/boards.rb | 2 +- lib/api/boards_responses.rb | 2 +- lib/api/branches.rb | 5 +- lib/api/commits.rb | 7 +- lib/api/container_registry.rb | 10 + lib/api/discussions.rb | 18 +- lib/api/entities.rb | 39 +- lib/api/environments.rb | 7 +- lib/api/group_boards.rb | 2 +- lib/api/group_clusters.rb | 140 ++ lib/api/helpers.rb | 13 +- lib/api/helpers/graphql_helpers.rb | 2 - lib/api/helpers/internal_helpers.rb | 2 +- lib/api/helpers/notes_helpers.rb | 29 +- lib/api/helpers/pagination.rb | 4 +- lib/api/helpers/projects_helpers.rb | 49 +- lib/api/helpers/runner.rb | 3 +- lib/api/helpers/services_helpers.rb | 10 +- lib/api/import_github.rb | 2 +- lib/api/merge_requests.rb | 27 +- lib/api/notes.rb | 12 +- lib/api/pages_domains.rb | 15 +- lib/api/project_clusters.rb | 2 +- lib/api/projects.rb | 6 +- lib/api/releases.rb | 2 + lib/api/resource_label_events.rb | 4 +- lib/api/runners.rb | 2 + lib/api/settings.rb | 12 +- lib/api/tags.rb | 4 +- lib/api/todos.rb | 2 +- lib/api/user_counts.rb | 18 + lib/api/users.rb | 26 +- .../filter/ascii_doc_sanitization_filter.rb | 111 + lib/banzai/filter/base_sanitization_filter.rb | 68 + lib/banzai/filter/inline_embeds_filter.rb | 67 + lib/banzai/filter/inline_metrics_filter.rb | 43 + .../filter/inline_metrics_redactor_filter.rb | 98 + ...filter.rb => reference_redactor_filter.rb} | 4 +- lib/banzai/filter/relative_link_filter.rb | 6 +- lib/banzai/filter/sanitization_filter.rb | 51 +- lib/banzai/filter/syntax_highlight_filter.rb | 2 +- lib/banzai/object_renderer.rb | 2 +- lib/banzai/pipeline/ascii_doc_pipeline.rb | 3 +- lib/banzai/pipeline/gfm_pipeline.rb | 1 + lib/banzai/pipeline/post_process_pipeline.rb | 3 +- .../{redactor.rb => reference_redactor.rb} | 2 +- lib/banzai/renderer.rb | 44 +- lib/container_registry/client.rb | 9 +- lib/feature.rb | 32 +- lib/feature/gitaly.rb | 9 +- lib/gitaly/server.rb | 18 +- lib/gitlab.rb | 20 +- lib/gitlab/asciidoc.rb | 4 +- lib/gitlab/asciidoc/html5_converter.rb | 9 +- .../html_pipeline_adapter.rb | 15 + lib/gitlab/auth.rb | 2 + lib/gitlab/auth/ip_rate_limiter.rb | 17 +- lib/gitlab/auth/ldap/adapter.rb | 4 +- lib/gitlab/auth/ldap/config.rb | 4 +- lib/gitlab/auth/ldap/person.rb | 6 +- lib/gitlab/auth/o_auth/provider.rb | 4 + .../add_merge_request_diff_commits_count.rb | 2 +- .../archive_legacy_traces.rb | 2 +- .../calculate_wiki_sizes.rb | 2 +- .../create_fork_network_memberships_range.rb | 85 - ...elete_conflicting_redirect_routes_range.rb | 13 - ...valid_time_for_pages_domain_certificate.rb | 2 +- .../fix_cross_project_label_links.rb | 2 +- .../fix_pages_access_level.rb | 128 ++ .../fix_user_namespace_names.rb | 68 + .../fix_user_project_route_names.rb | 38 + .../migrate_events_to_push_event_payloads.rb | 179 -- .../migrate_null_private_profile_to_false.rb | 17 + .../migrate_system_uploads_to_new_folder.rb | 29 - .../move_personal_snippet_files.rb | 82 - .../normalize_ldap_extern_uids_range.rb | 319 --- .../populate_fork_networks_range.rb | 128 -- .../populate_merge_request_assignees_table.rb | 8 + ...e_requests_latest_merge_request_diff_id.rb | 33 - .../populate_untracked_uploads.rb | 2 +- .../prepare_untracked_uploads.rb | 2 +- lib/gitlab/batch_pop_queueing.rb | 112 + lib/gitlab/bitbucket_import/importer.rb | 28 +- lib/gitlab/checks/tag_check.rb | 2 +- lib/gitlab/ci/ansi2html.rb | 27 +- .../prerequisite/kubernetes_namespace.rb | 1 - lib/gitlab/ci/config.rb | 53 +- lib/gitlab/ci/config/entry/default.rb | 74 + lib/gitlab/ci/config/entry/global.rb | 79 - lib/gitlab/ci/config/entry/hidden.rb | 8 + lib/gitlab/ci/config/entry/job.rb | 38 +- lib/gitlab/ci/config/entry/jobs.rb | 31 +- lib/gitlab/ci/config/entry/root.rb | 146 ++ lib/gitlab/ci/pipeline/chain/command.rb | 6 + .../ci/pipeline/chain/validate/abilities.rb | 4 + .../ci/pipeline/expression/lexeme/pattern.rb | 11 +- lib/gitlab/ci/pipeline/expression/lexer.rb | 17 +- lib/gitlab/ci/pipeline/expression/parser.rb | 39 +- .../ci/templates/Auto-DevOps.gitlab-ci.yml | 22 +- .../ci/templates/Code-Quality.gitlab-ci.yml | 19 +- .../Browser-Performance-Testing.gitlab-ci.yml | 2 + .../ci/templates/Jobs/Build.gitlab-ci.yml | 2 + .../templates/Jobs/Code-Quality.gitlab-ci.yml | 19 +- .../ci/templates/Jobs/Deploy.gitlab-ci.yml | 1 - lib/gitlab/ci/templates/PHP.gitlab-ci.yml | 2 +- .../ci/templates/Pages/Jekyll.gitlab-ci.yml | 1 + .../Security/Container-Scanning.gitlab-ci.yml | 6 +- .../Dependency-Scanning.gitlab-ci.yml | 4 + .../ci/templates/Security/SAST.gitlab-ci.yml | 2 + lib/gitlab/ci/trace.rb | 2 +- lib/gitlab/ci/yaml_processor.rb | 7 +- .../cleanup/orphan_job_artifact_files.rb | 132 ++ .../orphan_job_artifact_files_batch.rb | 80 + .../cleanup/project_upload_file_finder.rb | 2 +- lib/gitlab/cleanup/project_uploads.rb | 2 +- lib/gitlab/cleanup/remote_uploads.rb | 2 +- lib/gitlab/cluster/lifecycle_events.rb | 3 + lib/gitlab/config/entry/configurable.rb | 14 +- lib/gitlab/config/entry/factory.rb | 12 + lib/gitlab/current_settings.rb | 2 +- .../cycle_analytics/base_event_fetcher.rb | 18 +- lib/gitlab/cycle_analytics/base_query.rb | 4 +- lib/gitlab/cycle_analytics/base_stage.rb | 49 +- .../cycle_analytics/code_event_fetcher.rb | 2 +- .../cycle_analytics/issue_event_fetcher.rb | 2 +- lib/gitlab/cycle_analytics/issue_helper.rb | 2 +- lib/gitlab/cycle_analytics/permissions.rb | 2 +- .../cycle_analytics/plan_event_fetcher.rb | 2 +- lib/gitlab/cycle_analytics/plan_helper.rb | 2 +- .../production_event_fetcher.rb | 2 +- .../cycle_analytics/production_helper.rb | 2 +- .../cycle_analytics/review_event_fetcher.rb | 2 +- lib/gitlab/cycle_analytics/test_helper.rb | 2 +- lib/gitlab/cycle_analytics/usage_data.rb | 2 +- lib/gitlab/danger/helper.rb | 6 +- lib/gitlab/database.rb | 71 +- lib/gitlab/database/grant.rb | 2 +- lib/gitlab/database/median.rb | 2 +- lib/gitlab/database/migration_helpers.rb | 17 +- .../v1/rename_namespaces.rb | 2 +- .../v1/rename_projects.rb | 2 +- .../database_importers/common_metrics.rb | 8 + .../common_metrics/importer.rb | 78 + .../common_metrics/prometheus_metric.rb | 12 + .../common_metrics/prometheus_metric_enums.rb | 40 + lib/gitlab/diff/lines_unfolder.rb | 2 +- lib/gitlab/diff/position.rb | 4 + lib/gitlab/diff/position_tracer.rb | 192 +- .../diff/position_tracer/base_strategy.rb | 26 + .../diff/position_tracer/image_strategy.rb | 50 + .../diff/position_tracer/line_strategy.rb | 201 ++ .../email/hook/disable_email_interceptor.rb | 2 +- lib/gitlab/encoding_helper.rb | 2 +- lib/gitlab/exclusive_lease_helpers.rb | 5 +- lib/gitlab/external_authorization/client.rb | 3 +- lib/gitlab/favicon.rb | 8 +- lib/gitlab/git/raw_diff_change.rb | 4 +- lib/gitlab/git/repository.rb | 42 +- lib/gitlab/git/rugged_impl/blob.rb | 5 +- lib/gitlab/git/rugged_impl/commit.rb | 14 +- lib/gitlab/git/rugged_impl/repository.rb | 5 +- lib/gitlab/git/rugged_impl/tree.rb | 5 +- lib/gitlab/git/rugged_impl/use_rugged.rb | 22 + lib/gitlab/gitaly_client.rb | 54 +- lib/gitlab/gitaly_client/commit_service.rb | 36 +- lib/gitlab/gitaly_client/operation_service.rb | 5 +- .../gitaly_client/repository_service.rb | 2 +- .../importer/lfs_objects_importer.rb | 2 +- .../importer/pull_requests_importer.rb | 2 +- lib/gitlab/global_id.rb | 14 + lib/gitlab/gon_helper.rb | 9 +- lib/gitlab/graphql.rb | 4 - lib/gitlab/graphql/authorize.rb | 2 +- .../graphql/authorize/authorize_resource.rb | 12 +- lib/gitlab/graphql/calls_gitaly.rb | 15 + .../graphql/calls_gitaly/instrumentation.rb | 40 + lib/gitlab/graphql/copy_field_description.rb | 21 + lib/gitlab/graphql/docs/helper.rb | 50 + lib/gitlab/graphql/docs/renderer.rb | 43 + .../graphql/docs/templates/default.md.haml | 25 + lib/gitlab/graphql/errors.rb | 1 + lib/gitlab/graphql/find_argument_in_parent.rb | 32 + .../loaders/pipeline_for_sha_loader.rb | 25 + lib/gitlab/graphql/markdown_field.rb | 26 + lib/gitlab/graphql/markdown_field/resolver.rb | 22 + lib/gitlab/graphql/mount_mutation.rb | 5 +- .../representation/submodule_tree_entry.rb | 34 + lib/gitlab/hashed_storage/migrator.rb | 4 + lib/gitlab/hashed_storage/rake_helper.rb | 6 +- .../health_checks/simple_abstract_check.rb | 2 +- lib/gitlab/http.rb | 6 +- lib/gitlab/import_export/attribute_cleaner.rb | 2 +- lib/gitlab/import_export/attributes_finder.rb | 2 +- lib/gitlab/import_export/import_export.yml | 1 + lib/gitlab/import_export/json_hash_builder.rb | 2 +- lib/gitlab/import_export/members_mapper.rb | 2 +- .../import_export/merge_request_parser.rb | 2 +- .../import_export/project_tree_restorer.rb | 2 +- lib/gitlab/import_export/relation_factory.rb | 11 +- lib/gitlab/import_export/saver.rb | 2 +- lib/gitlab/import_export/version_checker.rb | 2 +- lib/gitlab/json_cache.rb | 2 +- lib/gitlab/kubernetes.rb | 13 +- lib/gitlab/kubernetes/helm/client_command.rb | 14 +- lib/gitlab/kubernetes/helm/install_command.rb | 11 - lib/gitlab/kubernetes/kube_client.rb | 7 + lib/gitlab/kubernetes/role.rb | 24 + lib/gitlab/kubernetes/role_binding.rb | 7 +- .../legacy_github_import/release_formatter.rb | 1 + lib/gitlab/lets_encrypt.rb | 9 + lib/gitlab/lets_encrypt/client.rb | 10 +- .../markdown_cache/active_record/extension.rb | 4 - lib/gitlab/markdown_cache/redis/extension.rb | 4 +- lib/gitlab/metrics/dashboard/base_service.rb | 19 +- .../dashboard/dynamic_dashboard_service.rb | 65 + lib/gitlab/metrics/dashboard/finder.rb | 32 +- lib/gitlab/metrics/dashboard/url.rb | 40 + lib/gitlab/metrics/samplers/base_sampler.rb | 2 +- lib/gitlab/metrics/samplers/puma_sampler.rb | 2 +- lib/gitlab/metrics/samplers/ruby_sampler.rb | 7 +- .../metrics/samplers/unicorn_sampler.rb | 11 +- lib/gitlab/metrics/system.rb | 30 +- lib/gitlab/middleware/read_only/controller.rb | 2 +- lib/gitlab/namespaced_session_store.rb | 15 +- lib/gitlab/omniauth_initializer.rb | 10 + lib/gitlab/optimistic_locking.rb | 1 + lib/gitlab/pages_client.rb | 2 +- lib/gitlab/patch/active_record_query_cache.rb | 39 + lib/gitlab/path_regex.rb | 1 - lib/gitlab/performance_bar.rb | 28 +- .../redis_adapter_when_peek_enabled.rb | 12 + lib/gitlab/phabricator_import/cache/map.rb | 10 +- lib/gitlab/phabricator_import/conduit/user.rb | 31 + .../conduit/users_response.rb | 23 + .../issues/task_importer.rb | 12 +- .../phabricator_import/representation/task.rb | 12 + .../phabricator_import/representation/user.rb | 25 + lib/gitlab/phabricator_import/user_finder.rb | 52 + lib/gitlab/quick_actions/issuable_actions.rb | 4 +- lib/gitlab/reference_counter.rb | 4 +- lib/gitlab/regex.rb | 8 - lib/gitlab/repository_cache_adapter.rb | 2 +- lib/gitlab/sanitizers/exif.rb | 2 +- lib/gitlab/search/found_blob.rb | 11 +- lib/gitlab/sentry.rb | 2 +- lib/gitlab/shell.rb | 12 +- lib/gitlab/sidekiq_status.rb | 6 +- lib/gitlab/sql/pattern.rb | 24 +- lib/gitlab/submodule_links.rb | 31 + lib/gitlab/thread_memory_cache.rb | 15 + lib/gitlab/time_tracking_formatter.rb | 10 +- lib/gitlab/url_blocker.rb | 111 +- lib/gitlab/usage_data.rb | 5 +- .../usage_data_counters/redis_counter.rb | 15 + .../usage_data_counters/web_ide_counter.rb | 21 + lib/gitlab/user_access.rb | 2 +- lib/gitlab/user_extractor.rb | 56 - lib/gitlab/web_ide_commits_counter.rb | 17 - lib/gitlab/zoom_link_extractor.rb | 21 + lib/mattermost/session.rb | 2 +- lib/microsoft_teams/notifier.rb | 2 +- lib/peek/views/redis.rb | 86 + lib/rspec_flaky/listener.rb | 2 + lib/support/init.d/gitlab | 15 +- lib/system_check/ldap_check.rb | 9 +- lib/tasks/gitlab/cleanup.rake | 27 + lib/tasks/gitlab/features.rake | 14 +- lib/tasks/gitlab/graphql.rake | 26 + lib/tasks/gitlab/seed.rake | 7 +- lib/tasks/gitlab/storage.rake | 80 +- lib/tasks/migrate/schema_check.rake | 20 + lib/tasks/migrate/setup_postgresql.rake | 14 - lib/tasks/yarn.rake | 2 +- locale/ar_SA/gitlab.po | 82 +- locale/bg/gitlab.po | 82 +- locale/bn_BD/gitlab.po | 82 +- locale/bn_IN/gitlab.po | 82 +- locale/ca_ES/gitlab.po | 82 +- locale/cs_CZ/gitlab.po | 82 +- locale/cy_GB/gitlab.po | 82 +- locale/da_DK/gitlab.po | 82 +- locale/de/gitlab.po | 82 +- locale/el_GR/gitlab.po | 82 +- locale/eo/gitlab.po | 82 +- locale/es/gitlab.po | 124 +- locale/et_EE/gitlab.po | 82 +- locale/fil_PH/gitlab.po | 82 +- locale/fr/gitlab.po | 82 +- locale/gitlab.pot | 899 +++++++- locale/gl_ES/gitlab.po | 82 +- locale/he_IL/gitlab.po | 82 +- locale/hi_IN/gitlab.po | 82 +- locale/hr_HR/gitlab.po | 82 +- locale/hu_HU/gitlab.po | 82 +- locale/id_ID/gitlab.po | 82 +- locale/it/gitlab.po | 82 +- locale/ja/gitlab.po | 116 +- locale/ka_GE/gitlab.po | 82 +- locale/ko/gitlab.po | 98 +- locale/mn_MN/gitlab.po | 82 +- locale/nb_NO/gitlab.po | 82 +- locale/nl_NL/gitlab.po | 82 +- locale/pa_IN/gitlab.po | 82 +- locale/pl_PL/gitlab.po | 82 +- locale/pt_BR/gitlab.po | 120 +- locale/pt_PT/gitlab.po | 622 +++--- locale/ro_RO/gitlab.po | 82 +- locale/ru/gitlab.po | 82 +- locale/sk_SK/gitlab.po | 82 +- locale/sq_AL/gitlab.po | 82 +- locale/sr_CS/gitlab.po | 82 +- locale/sr_SP/gitlab.po | 82 +- locale/sv_SE/gitlab.po | 82 +- locale/sw_KE/gitlab.po | 82 +- locale/tr_TR/gitlab.po | 82 +- locale/uk/gitlab.po | 120 +- locale/zh_CN/gitlab.po | 82 +- locale/zh_HK/gitlab.po | 82 +- locale/zh_TW/gitlab.po | 82 +- package.json | 14 +- qa/.rspec_parallel | 5 + qa/Gemfile | 3 + qa/Gemfile.lock | 9 + qa/README.md | 27 +- qa/Rakefile | 5 +- qa/qa.rb | 6 + qa/qa/page/base.rb | 15 +- qa/qa/page/component/confirm_modal.rb | 25 + qa/qa/page/component/note.rb | 10 + qa/qa/page/component/select2.rb | 4 + qa/qa/page/element.rb | 4 +- qa/qa/page/file/edit.rb | 13 + qa/qa/page/file/form.rb | 27 +- qa/qa/page/file/shared/commit_button.rb | 21 + qa/qa/page/file/shared/editor.rb | 33 + qa/qa/page/file/show.rb | 2 + qa/qa/page/main/login.rb | 6 +- qa/qa/page/main/menu.rb | 10 +- qa/qa/page/main/oauth.rb | 4 +- qa/qa/page/main/sign_up.rb | 26 +- qa/qa/page/project/new.rb | 2 +- .../project/operations/kubernetes/show.rb | 2 +- qa/qa/page/project/pipeline/index.rb | 2 +- qa/qa/page/project/settings/advanced.rb | 16 + qa/qa/page/project/settings/main.rb | 2 + qa/qa/page/project/show.rb | 1 + qa/qa/page/project/sub_menus/ci_cd.rb | 2 + qa/qa/page/project/sub_menus/common.rb | 6 +- qa/qa/page/project/sub_menus/issues.rb | 2 + qa/qa/page/project/sub_menus/operations.rb | 2 + qa/qa/page/project/sub_menus/project.rb | 29 + qa/qa/page/project/sub_menus/repository.rb | 2 + qa/qa/page/project/sub_menus/settings.rb | 11 + qa/qa/page/settings/common.rb | 2 +- qa/qa/resource/api_fabricator.rb | 7 +- qa/qa/resource/group.rb | 4 + qa/qa/resource/issue.rb | 6 +- qa/qa/resource/merge_request.rb | 3 + qa/qa/resource/merge_request_from_fork.rb | 2 +- qa/qa/resource/project.rb | 28 +- qa/qa/resource/user.rb | 2 +- qa/qa/runtime/api/client.rb | 19 +- qa/qa/runtime/browser.rb | 6 +- qa/qa/runtime/env.rb | 12 +- qa/qa/runtime/logger.rb | 1 + qa/qa/runtime/scenario.rb | 6 + qa/qa/scenario/shared_attributes.rb | 1 + qa/qa/service/kubernetes_cluster.rb | 14 +- qa/qa/service/shellout.rb | 2 +- .../project_archive_compare_spec.rb | 75 + .../1_manage/group/transfer_project_spec.rb | 57 + .../browser_ui/1_manage/login/log_in_spec.rb | 8 +- .../login/log_into_gitlab_via_ldap_spec.rb | 2 +- .../login_via_instance_wide_saml_sso_spec.rb | 4 +- .../1_manage/login/login_via_oauth_spec.rb | 3 +- .../project/add_project_member_spec.rb | 2 +- .../1_manage/project/create_project_spec.rb | 2 +- .../project/import_github_repo_spec.rb | 12 +- .../issue/check_mentions_for_xss_spec.rb | 44 + .../collapse_comments_in_discussions_spec.rb | 26 +- .../2_plan/issue/comment_issue_spec.rb | 31 + .../2_plan/issue/create_issue_spec.rb | 7 +- .../issue/filter_issue_comments_spec.rb | 25 +- .../2_plan/issue/issue_suggestions_spec.rb | 2 +- .../merge_merge_request_from_fork_spec.rb | 3 +- .../squash_merge_request_spec.rb | 3 +- .../view_merge_request_diff_patch_spec.rb | 3 +- .../repository/add_file_template_spec.rb | 3 +- .../add_list_delete_branches_spec.rb | 5 +- .../3_create/repository/add_ssh_key_spec.rb | 6 +- .../create_edit_delete_file_via_web_spec.rb | 4 +- .../push_mirroring_over_http_spec.rb | 3 +- .../push_over_http_file_size_spec.rb | 3 +- .../repository/push_protected_branch_spec.rb | 2 +- .../3_create/snippet/create_snippet_spec.rb | 8 +- .../web_ide/add_file_template_spec.rb | 3 +- .../ci_variable/add_ci_variable_spec.rb | 4 +- .../4_verify/runner/register_runner_spec.rb | 2 +- .../deploy_key/add_deploy_key_spec.rb | 3 +- .../deploy_token/add_deploy_token_spec.rb | 4 +- .../create_project_with_auto_devops_spec.rb | 58 +- .../create_group_with_mattermost_team_spec.rb | 4 +- qa/qa/specs/parallel_runner.rb | 33 + qa/qa/specs/runner.rb | 70 +- qa/qa/support/api.rb | 5 +- qa/qa/support/retrier.rb | 19 + qa/qa/tools/generate_perf_testdata.rb | 218 +- qa/spec/page/element_spec.rb | 13 +- qa/spec/page/logging_spec.rb | 8 +- qa/spec/runtime/api/client_spec.rb | 36 +- qa/spec/spec_helper.rb | 4 + qa/spec/specs/parallel_runner_spec.rb | 58 + qa/spec/specs/runner_spec.rb | 8 +- rubocop/cop/gitlab/rails_logger.rb | 51 + rubocop/cop/graphql/authorize_types.rb | 61 + rubocop/cop/qa/element_with_pattern.rb | 2 +- rubocop/rubocop.rb | 2 + scripts/frontend/test.js | 23 +- scripts/gather-test-memory-data | 21 + scripts/generate-gems-memory-metrics-static | 18 + scripts/generate-gems-size-metrics-static | 30 + scripts/generate-memory-metrics-on-boot | 11 + scripts/lint-doc.sh | 4 +- scripts/merge-html-reports | 84 + scripts/prepare_build.sh | 10 +- scripts/review_apps/review-apps.sh | 237 +- scripts/trigger-build | 9 +- scripts/trigger-build-docs | 10 +- .../application_settings_controller_spec.rb | 35 +- .../clusters/applications_controller_spec.rb | 10 - .../admin/clusters_controller_spec.rb | 92 +- .../admin/runners_controller_spec.rb | 5 +- .../application_controller_spec.rb | 9 +- .../boards/issues_controller_spec.rb | 217 +- .../boards/lists_controller_spec.rb | 4 +- .../concerns/continue_params_spec.rb | 8 + .../concerns/internal_redirect_spec.rb | 77 +- .../concerns/issuable_collections_spec.rb | 11 + .../dashboard/projects_controller_spec.rb | 18 +- .../dashboard/todos_controller_spec.rb | 28 + .../groups/boards_controller_spec.rb | 6 +- .../groups/clusters_controller_spec.rb | 96 +- .../groups/milestones_controller_spec.rb | 2 +- spec/controllers/groups_controller_spec.rb | 7 +- .../health_check_controller_spec.rb | 1 - spec/controllers/health_controller_spec.rb | 1 - spec/controllers/metrics_controller_spec.rb | 1 - .../projects/blob_controller_spec.rb | 4 +- .../projects/boards_controller_spec.rb | 6 +- .../projects/branches_controller_spec.rb | 99 +- .../projects/ci/lints_controller_spec.rb | 2 +- .../projects/clusters_controller_spec.rb | 2 - .../projects/commit_controller_spec.rb | 4 +- .../projects/compare_controller_spec.rb | 9 +- .../projects/deploy_keys_controller_spec.rb | 10 +- .../projects/deployments_controller_spec.rb | 74 +- .../projects/discussions_controller_spec.rb | 4 +- .../prometheus_api_controller_spec.rb | 2 +- .../projects/environments_controller_spec.rb | 220 +- .../projects/find_file_controller_spec.rb | 5 +- .../projects/forks_controller_spec.rb | 16 +- .../projects/issues_controller_spec.rb | 148 +- .../projects/jobs_controller_spec.rb | 16 +- .../merge_requests/content_controller_spec.rb | 60 + .../merge_requests/diffs_controller_spec.rb | 2 +- .../merge_requests_controller_spec.rb | 85 +- .../projects/notes_controller_spec.rb | 4 +- .../projects/pages_domains_controller_spec.rb | 64 +- .../projects/services_controller_spec.rb | 10 +- .../settings/repository_controller_spec.rb | 20 + .../projects/templates_controller_spec.rb | 9 +- .../projects/wikis_controller_spec.rb | 2 +- spec/controllers/projects_controller_spec.rb | 76 +- .../registrations_controller_spec.rb | 25 +- spec/controllers/search_controller_spec.rb | 17 + .../snippets/notes_controller_spec.rb | 6 +- spec/controllers/snippets_controller_spec.rb | 2 +- .../user_callouts_controller_spec.rb | 4 +- spec/controllers/users_controller_spec.rb | 2 +- spec/factories/award_emoji.rb | 2 +- spec/factories/ci/bridge.rb | 2 +- spec/factories/clusters/clusters.rb | 2 +- spec/factories/deployments.rb | 4 + .../namespace/aggregation_schedules.rb | 7 + .../namespace/root_storage_statistics.rb | 7 + spec/factories/namespaces.rb | 8 + spec/factories/pages_domains.rb | 89 + spec/factories/project_statistics.rb | 15 + spec/factories/projects.rb | 26 +- spec/factories/releases.rb | 1 + spec/factories/services.rb | 46 +- spec/factories/services_data.rb | 8 +- spec/fast_spec_helper.rb | 1 + .../admin_sees_project_statistics_spec.rb | 2 +- spec/features/admin/admin_settings_spec.rb | 111 +- spec/features/admin/admin_users_spec.rb | 26 + spec/features/boards/sidebar_spec.rb | 22 +- spec/features/container_registry_spec.rb | 6 +- spec/features/dashboard/milestones_spec.rb | 14 + spec/features/dashboard/shortcuts_spec.rb | 2 +- spec/features/dashboard/todos/todos_spec.rb | 14 +- .../discussion_comments/commit_spec.rb | 20 +- .../discussion_comments/issue_spec.rb | 4 +- .../discussion_comments/merge_request_spec.rb | 4 +- .../discussion_comments/snippets_spec.rb | 4 +- spec/features/groups/issues_spec.rb | 78 + .../issues/bulk_assignment_labels_spec.rb | 2 +- ...e_for_discussions_in_merge_request_spec.rb | 32 +- ...single_discussion_in_merge_request_spec.rb | 24 +- spec/features/issues/gfm_autocomplete_spec.rb | 70 +- spec/features/issues/todo_spec.rb | 8 +- ...r_creates_branch_and_merge_request_spec.rb | 13 +- ...creates_confidential_merge_request_spec.rb | 54 + .../issues/user_uses_quick_actions_spec.rb | 32 +- spec/features/markdown/mermaid_spec.rb | 18 + .../user_comments_on_merge_request_spec.rb | 2 +- .../user_creates_merge_request_spec.rb | 2 +- ...diff_notes_and_discussions_resolve_spec.rb | 174 +- .../user_sees_discussions_spec.rb | 8 +- ...epending_on_unresolved_discussions_spec.rb | 12 +- .../user_sees_merge_widget_spec.rb | 62 +- .../user_suggests_changes_on_diff_spec.rb | 4 +- .../user_uses_quick_actions_spec.rb | 30 +- spec/features/oauth_login_spec.rb | 12 +- .../projects/clusters/applications_spec.rb | 23 +- spec/features/projects/clusters/gcp_spec.rb | 5 - .../environments/environment_metrics_spec.rb | 39 +- .../projects/files/user_edits_files_spec.rb | 41 +- .../files/user_reads_pipeline_status_spec.rb | 2 + spec/features/projects/fork_spec.rb | 2 +- spec/features/projects/new_project_spec.rb | 550 ++--- .../projects/pages_lets_encrypt_spec.rb | 167 +- spec/features/projects/pages_spec.rb | 20 +- .../releases/user_views_releases_spec.rb | 12 + ...er_activates_jetbrains_teamcity_ci_spec.rb | 2 + .../services/user_activates_jira_spec.rb | 28 +- .../settings/repository_settings_spec.rb | 6 + .../user_sees_last_commit_ci_status_spec.rb | 4 + spec/features/raven_js_spec.rb | 2 +- .../user_searches_for_wiki_pages_spec.rb | 6 +- .../user_uses_header_search_field_spec.rb | 124 +- ..._spec.rb => developer_creates_tag_spec.rb} | 7 +- ..._spec.rb => developer_deletes_tag_spec.rb} | 7 +- ..._spec.rb => developer_updates_tag_spec.rb} | 7 +- ...s_spec.rb => developer_views_tags_spec.rb} | 7 +- spec/features/triggers_spec.rb | 78 +- spec/features/users/signup_spec.rb | 44 +- spec/features/users/terms_spec.rb | 19 +- .../acts_as_taggable_on/tags_finder_spec.rb | 8 +- .../boards/visits_finder_spec.rb} | 24 +- spec/finders/branches_finder_spec.rb | 9 + spec/finders/notes_finder_spec.rb | 26 + spec/finders/releases_finder_spec.rb | 6 +- spec/finders/runner_jobs_finder_spec.rb | 22 + spec/fixtures/api/schemas/current-board.json | 16 + .../entities/merge_request_widget.json | 3 +- .../api/schemas/public_api/v4/release.json | 4 +- .../v4/release/release_for_guest.json | 4 +- .../dashboard/schemas/embedded_dashboard.json | 13 + .../schemas/embedded_panel_groups.json | 11 + .../phabricator_responses/user.search.json | 62 + spec/frontend/api_spec.js | 39 + spec/frontend/boards/modal_store_spec.js | 2 +- .../boards/services/board_service_spec.js | 551 +++++ .../divergence_graph_spec.js.snap | 37 + .../components/divergence_graph_spec.js | 67 + .../branches/components/graph_bar_spec.js | 89 + .../branches/divergence_graph_spec.js | 40 + .../application_state_machine_spec.js | 16 +- .../commons/nav/user_merge_requests_spec.js | 113 + .../project_form_group_spec.js.snap | 101 + .../components/dropdown_spec.js | 56 + .../components/project_form_group_spec.js | 77 + .../create_merge_request_dropdown_spec.js | 43 +- .../components/diff_discussion_reply_spec.js | 90 + .../components/diff_gutter_avatars_spec.js | 113 + .../diffs/mock_data/diff_discussions.js | 529 +++++ .../components/app_spec.js | 2 +- .../components/error_tracking_form_spec.js | 0 .../components/project_dropdown_spec.js | 0 .../error_tracking_settings/mock.js | 2 +- .../store/actions_spec.js | 11 +- .../store/getters_spec.js | 0 .../store/mutation_spec.js | 2 +- .../error_tracking_settings/utils_spec.js | 0 spec/frontend/filterable_list_spec.js | 53 + spec/frontend/helpers/vuex_action_helper.js | 7 +- .../helpers/vuex_action_helper_spec.js | 166 ++ spec/frontend/ide/lib/files_spec.js | 4 +- spec/frontend/ide/utils_spec.js | 44 + .../components/pinned_links_spec.js | 52 +- .../lib/utils/datetime_utility_spec.js | 6 + spec/frontend/lib/utils/text_utility_spec.js | 19 +- .../mocks/ce/lib/utils/axios_utils.js | 15 + spec/frontend/mocks/mocks_helper.js | 60 + spec/frontend/mocks/mocks_helper_spec.js | 147 ++ spec/frontend/mocks/node/jquery.js | 13 + spec/frontend/mocks_spec.js | 13 + .../dashboard_state_spec.js.snap | 37 + .../monitoring/dashboard_state_spec.js | 43 + .../discussion_notes_replies_wrapper_spec.js | 51 + .../notes/components/discussion_notes_spec.js | 40 +- .../discussion_reply_placeholder_spec.js | 14 +- .../components/external_dashboard_spec.js | 5 +- .../projects/projects_filterable_list_spec.js | 31 + .../__snapshots__/last_commit_spec.js.snap | 98 + .../repository/components/breadcrumbs_spec.js | 20 +- .../repository/components/last_commit_spec.js | 110 + .../table/__snapshots__/row_spec.js.snap | 14 +- .../repository/components/table/row_spec.js | 18 +- spec/frontend/repository/log_tree_spec.js | 129 ++ spec/frontend/test_setup.js | 35 +- .../issue/related_issuable_item_spec.js | 6 +- .../components/markdown/header_spec.js | 14 +- .../components/paginated_list_spec.js | 56 + spec/graphql/gitlab_schema_spec.rb | 26 +- .../award_emojis/award_emoji_type_spec.rb | 11 + spec/graphql/types/base_field_spec.rb | 59 + spec/graphql/types/commit_type_spec.rb | 11 + spec/graphql/types/diff_refs_type_spec.rb | 9 + spec/graphql/types/issue_type_spec.rb | 5 +- spec/graphql/types/label_type_spec.rb | 6 + spec/graphql/types/merge_request_type_spec.rb | 17 +- spec/graphql/types/namespace_type_spec.rb | 9 +- .../types/notes/diff_position_type_spec.rb | 2 +- .../types/notes/discussion_type_spec.rb | 2 +- spec/graphql/types/notes/note_type_spec.rb | 2 +- spec/graphql/types/project_type_spec.rb | 30 +- .../graphql/types/tree/submodule_type_spec.rb | 2 +- spec/graphql/types/tree/tree_type_spec.rb | 2 +- spec/helpers/appearances_helper_spec.rb | 16 + spec/helpers/avatars_helper_spec.rb | 2 +- spec/helpers/blob_helper_spec.rb | 38 +- spec/helpers/boards_helper_spec.rb | 16 +- spec/helpers/emails_helper_spec.rb | 2 +- spec/helpers/icons_helper_spec.rb | 20 + spec/helpers/issuables_helper_spec.rb | 41 + spec/helpers/markup_helper_spec.rb | 116 +- .../onboarding_experiment_helper_spec.rb | 38 + spec/helpers/preferences_helper_spec.rb | 2 +- .../recaptcha_experiment_helper_spec.rb | 23 + spec/helpers/search_helper_spec.rb | 6 +- spec/helpers/sorting_helper_spec.rb | 148 +- spec/helpers/storage_helper_spec.rb | 2 +- spec/helpers/submodule_helper_spec.rb | 94 +- spec/helpers/visibility_level_helper_spec.rb | 72 +- spec/initializers/6_validations_spec.rb | 20 - spec/javascripts/boards/boards_store_spec.js | 23 + .../boards/components/board_form_spec.js | 56 + .../boards/components/board_spec.js | 67 +- .../boards/components/boards_selector_spec.js | 205 ++ .../components/issue_time_estimate_spec.js | 70 +- spec/javascripts/boards/mock_data.js | 5 +- .../collapsed_sidebar_todo_spec.js | 16 +- .../diffs/components/diff_file_header_spec.js | 6 +- .../components/diff_gutter_avatars_spec.js | 146 -- .../diffs/components/inline_diff_view_spec.js | 4 +- spec/javascripts/diffs/store/actions_spec.js | 1 + .../environment_terminal_button_spec.js | 40 +- .../visual_token_value_spec.js | 2 +- .../groups/components/group_item_spec.js | 7 + .../groups/components/item_stats_spec.js | 12 - .../javascripts/helpers/vuex_action_helper.js | 4 +- .../ide/components/ide_tree_list_spec.js | 14 + .../ide/components/repo_editor_spec.js | 103 +- .../ide/stores/actions/file_spec.js | 37 + spec/javascripts/ide/stores/actions_spec.js | 78 +- .../ide/stores/mutations/file_spec.js | 33 + spec/javascripts/ide/stores/mutations_spec.js | 79 +- spec/javascripts/ide/stores/utils_spec.js | 26 + spec/javascripts/issuable_spec.js | 12 +- .../jobs/components/stages_dropdown_spec.js | 8 +- .../monitoring/charts/area_spec.js | 15 +- .../monitoring/charts/column_spec.js | 58 + .../monitoring/charts/single_stat_spec.js | 9 +- spec/javascripts/monitoring/dashboard_spec.js | 96 +- .../monitoring/dashboard_state_spec.js | 101 - spec/javascripts/monitoring/mock_data.js | 85 + .../monitoring/store/actions_spec.js | 17 +- .../monitoring/store/mutations_spec.js | 17 +- .../monitoring/store/utils_spec.js | 37 + spec/javascripts/monitoring/utils_spec.js | 27 +- .../notes/components/comment_form_spec.js | 15 + .../notes/components/diff_with_note_spec.js | 13 + .../components/noteable_discussion_spec.js | 52 +- spec/javascripts/notes/stores/actions_spec.js | 44 +- spec/javascripts/notes/stores/getters_spec.js | 20 + .../components/promote_label_modal_spec.js | 4 +- .../promote_milestone_modal_spec.js | 4 +- .../components/simple_metric_spec.js | 47 - spec/javascripts/pipelines/pipelines_spec.js | 8 +- .../registry/components/app_spec.js | 33 +- .../components/collapsible_container_spec.js | 16 +- .../components/table_registry_spec.js | 23 +- .../registry/stores/actions_spec.js | 24 + .../releases/components/release_block_spec.js | 18 +- .../time_tracking/time_tracker_spec.js | 25 + spec/javascripts/sidebar/todo_spec.js | 8 +- spec/javascripts/test_bundle.js | 7 +- .../components/mr_widget_pipeline_spec.js | 14 +- .../states/mr_widget_ready_to_merge_spec.js | 3 + .../mr_widget_unresolved_discussions_spec.js | 8 +- spec/javascripts/vue_mr_widget/mock_data.js | 3 +- .../vue_mr_widget/mr_widget_options_spec.js | 2 +- .../vue_shared/components/file_row_spec.js | 13 + .../components/table_pagination_spec.js | 4 +- .../components/tooltip_on_truncate_spec.js | 176 +- spec/lib/api/helpers/pagination_spec.rb | 10 +- .../filter/inline_metrics_filter_spec.rb | 55 + .../inline_metrics_redactor_filter_spec.rb | 58 + ...c.rb => reference_redactor_filter_spec.rb} | 2 +- spec/lib/banzai/object_renderer_spec.rb | 8 +- spec/lib/banzai/pipeline/gfm_pipeline_spec.rb | 6 +- ...tor_spec.rb => reference_redactor_spec.rb} | 2 +- spec/lib/banzai/renderer_spec.rb | 18 + spec/lib/container_registry/client_spec.rb | 36 + spec/lib/container_registry/tag_spec.rb | 2 +- spec/lib/feature_spec.rb | 71 +- spec/lib/gitaly/server_spec.rb | 6 + spec/lib/gitlab/asciidoc_spec.rb | 286 ++- spec/lib/gitlab/auth/ip_rate_limiter_spec.rb | 65 + spec/lib/gitlab/auth_spec.rb | 73 + ...ate_fork_network_memberships_range_spec.rb | 125 -- ..._conflicting_redirect_routes_range_spec.rb | 35 - .../fix_user_namespace_names_spec.rb | 104 + .../fix_user_project_route_names_spec.rb | 98 + ...rate_events_to_push_event_payloads_spec.rb | 433 ---- ...rate_null_private_profile_to_false_spec.rb | 23 + .../migrate_stage_status_spec.rb | 92 - ...grate_system_uploads_to_new_folder_spec.rb | 21 - .../move_personal_snippet_files_spec.rb | 74 - .../normalize_ldap_extern_uids_range_spec.rb | 36 - .../populate_fork_networks_range_spec.rb | 97 - ...late_merge_request_assignees_table_spec.rb | 26 +- ...uests_latest_merge_request_diff_id_spec.rb | 62 - spec/lib/gitlab/batch_pop_queueing_spec.rb | 147 ++ .../gitlab/bitbucket_import/importer_spec.rb | 27 +- spec/lib/gitlab/checks/tag_check_spec.rb | 5 +- spec/lib/gitlab/ci/ansi2html_spec.rb | 43 +- .../prerequisite/kubernetes_namespace_spec.rb | 28 +- .../gitlab/ci/config/entry/default_spec.rb | 109 + .../lib/gitlab/ci/config/entry/hidden_spec.rb | 76 +- spec/lib/gitlab/ci/config/entry/job_spec.rb | 58 +- spec/lib/gitlab/ci/config/entry/jobs_spec.rb | 111 +- .../entry/{global_spec.rb => root_spec.rb} | 232 +- .../pipeline/chain/validate/abilities_spec.rb | 44 +- .../ci/pipeline/chain/validate/config_spec.rb | 11 +- .../expression/lexeme/pattern_spec.rb | 36 - .../ci/pipeline/expression/lexer_spec.rb | 28 - .../ci/pipeline/expression/statement_spec.rb | 52 +- .../lib/gitlab/ci/pipeline/seed/build_spec.rb | 298 ++- .../ci/reports/test_reports_comparer_spec.rb | 8 +- .../ci/reports/test_suite_comparer_spec.rb | 23 +- spec/lib/gitlab/ci/trace/stream_spec.rb | 16 +- spec/lib/gitlab/ci/yaml_processor_spec.rb | 50 +- .../orphan_job_artifact_files_batch_spec.rb | 66 + .../cleanup/orphan_job_artifact_files_spec.rb | 68 + .../gitlab/config/entry/configurable_spec.rb | 27 +- spec/lib/gitlab/config/entry/factory_spec.rb | 25 +- spec/lib/gitlab/current_settings_spec.rb | 4 +- .../lib/gitlab/cycle_analytics/events_spec.rb | 2 +- .../gitlab/cycle_analytics/test_stage_spec.rb | 34 + .../gitlab/cycle_analytics/usage_data_spec.rb | 2 +- spec/lib/gitlab/danger/helper_spec.rb | 21 +- .../gitlab/database/migration_helpers_spec.rb | 22 +- .../common_metrics/importer_spec.rb} | 21 +- .../common_metrics/prometheus_metric_spec.rb | 16 + spec/lib/gitlab/diff/lines_unfolder_spec.rb | 33 + spec/lib/gitlab/diff/position_spec.rb | 13 + .../position_tracer/image_strategy_spec.rb | 238 ++ .../position_tracer/line_strategy_spec.rb | 1805 +++++++++++++++ spec/lib/gitlab/diff/position_tracer_spec.rb | 1930 +---------------- .../handler/create_issue_handler_spec.rb | 1 + .../gitlab/exclusive_lease_helpers_spec.rb | 17 +- .../external_authorization/client_spec.rb | 29 +- spec/lib/gitlab/git/commit_spec.rb | 2 +- spec/lib/gitlab/git/repository_spec.rb | 41 +- .../gitlab/git/rugged_impl/use_rugged_spec.rb | 98 + spec/lib/gitlab/git_access_spec.rb | 2 +- .../gitaly_client/commit_service_spec.rb | 13 + .../gitaly_client/operation_service_spec.rb | 4 +- spec/lib/gitlab/gitaly_client_spec.rb | 34 +- spec/lib/gitlab/global_id_spec.rb | 37 + .../authorize/authorize_resource_spec.rb | 53 +- .../calls_gitaly/instrumentation_spec.rb | 23 + .../graphql/copy_field_description_spec.rb | 21 + .../graphql/find_argument_in_parent_spec.rb | 44 + .../loaders/pipeline_for_sha_loader_spec.rb | 20 + .../graphql/markdown_field/resolver_spec.rb | 33 + .../lib/gitlab/graphql/markdown_field_spec.rb | 55 + .../submodule_tree_entry_spec.rb | 30 + spec/lib/gitlab/highlight_spec.rb | 13 +- spec/lib/gitlab/import_export/all_models.yml | 1 + .../import_export/attribute_cleaner_spec.rb | 10 +- .../gitlab/import_export/project.group.json | 6 +- spec/lib/gitlab/import_export/project.json | 10 +- .../project_tree_restorer_spec.rb | 17 +- .../import_export/safe_model_attributes.yml | 2 + spec/lib/gitlab/issuable_sorter_spec.rb | 2 +- spec/lib/gitlab/json_cache_spec.rb | 35 +- .../kubernetes/helm/delete_command_spec.rb | 16 +- .../kubernetes/helm/install_command_spec.rb | 12 +- .../lib/gitlab/kubernetes/kube_client_spec.rb | 3 + .../gitlab/kubernetes/role_binding_spec.rb | 4 +- spec/lib/gitlab/kubernetes/role_spec.rb | 30 + spec/lib/gitlab/kubernetes_spec.rb | 34 +- .../legacy_github_import/importer_spec.rb | 2 + .../release_formatter_spec.rb | 4 +- spec/lib/gitlab/lets_encrypt/client_spec.rb | 36 - spec/lib/gitlab/lets_encrypt_spec.rb | 27 + .../active_record/extension_spec.rb | 7 +- .../dynamic_dashboard_service_spec.rb | 36 + .../gitlab/metrics/dashboard/finder_spec.rb | 15 +- .../project_dashboard_service_spec.rb | 6 +- .../system_dashboard_service_spec.rb | 10 +- spec/lib/gitlab/metrics/dashboard/url_spec.rb | 56 + .../metrics/samplers/ruby_sampler_spec.rb | 16 +- .../metrics/samplers/unicorn_sampler_spec.rb | 33 +- spec/lib/gitlab/metrics/system_spec.rb | 16 +- .../gitlab/namespaced_session_store_spec.rb | 30 +- spec/lib/gitlab/omniauth_initializer_spec.rb | 28 + spec/lib/gitlab/performance_bar_spec.rb | 27 +- .../phabricator_import/cache/map_spec.rb | 17 + .../phabricator_import/conduit/user_spec.rb | 49 + .../conduit/users_response_spec.rb | 21 + .../issues/importer_spec.rb | 32 +- .../issues/task_importer_spec.rb | 36 +- .../representation/task_spec.rb | 16 + .../representation/user_spec.rb | 28 + .../phabricator_import/user_finder_spec.rb | 89 + spec/lib/gitlab/reference_extractor_spec.rb | 6 +- spec/lib/gitlab/search/found_blob_spec.rb | 39 +- spec/lib/gitlab/sql/pattern_spec.rb | 12 + spec/lib/gitlab/submodule_links_spec.rb | 47 + .../gitlab/time_tracking_formatter_spec.rb | 43 + spec/lib/gitlab/url_blocker_spec.rb | 4 +- .../web_ide_counter_spec.rb | 21 + spec/lib/gitlab/usage_data_spec.rb | 7 +- spec/lib/gitlab/user_extractor_spec.rb | 78 - .../gitlab/web_ide_commits_counter_spec.rb | 19 - spec/lib/gitlab/zoom_link_extractor_spec.rb | 24 + spec/lib/gitlab_spec.rb | 32 +- spec/lib/peek/views/redis_detailed_spec.rb | 36 + spec/mailers/emails/pages_domains_spec.rb | 6 +- spec/mailers/notify_spec.rb | 42 +- spec/migrations/active_record/schema_spec.rb | 2 +- .../add_foreign_key_to_merge_requests_spec.rb | 39 - ...ad_pipeline_for_each_merge_request_spec.rb | 32 - ...leased_at_column_on_releases_table_spec.rb | 28 + ...ll_store_project_full_path_in_repo_spec.rb | 2 +- ...lculate_conv_dev_index_percentages_spec.rb | 59 - .../clean_appearance_symlinks_spec.rb | 46 - ...clean_stage_id_reference_migration_spec.rb | 34 - .../clean_stages_statuses_migration_spec.rb | 51 - spec/migrations/clean_upload_symlinks_spec.rb | 46 - ..._move_system_upload_folder_symlink_spec.rb | 35 - ..._namespace_pending_delete_projects_spec.rb | 29 - ...m_notification_settings_to_columns_spec.rb | 120 - ...delete_conflicting_redirect_routes_spec.rb | 42 - ...crypt_feature_flags_clients_tokens_spec.rb | 36 + ...ueue_reset_merge_status_second_run_spec.rb | 52 + .../fix_wrong_pages_access_level_spec.rb | 97 + .../fix_wrongly_renamed_routes_spec.rb | 86 - .../issues_moved_to_id_foreign_key_spec.rb | 24 - ...igrate_build_stage_reference_again_spec.rb | 62 - ...ters_to_new_clusters_architectures_spec.rb | 181 -- .../migrate_issues_to_ghost_user_spec.rb | 51 - ...vice_to_new_clusters_architectures_spec.rb | 312 --- ...gacy_managed_clusters_to_unmanaged_spec.rb | 55 + ...lusters_with_no_token_to_unmanaged_spec.rb | 59 + spec/migrations/migrate_old_artifacts_spec.rb | 140 -- .../migrate_pipeline_sidekiq_queues_spec.rb | 49 - .../migrate_pipeline_stages_spec.rb | 56 - ...migrate_process_commit_worker_jobs_spec.rb | 197 -- ...e_stage_id_reference_in_background_spec.rb | 55 - .../migrate_stages_statuses_spec.rb | 68 - ...tivities_to_users_last_activity_on_spec.rb | 49 - ...ion_token_to_personal_access_token_spec.rb | 25 - .../migrate_user_project_view_spec.rb | 17 - .../move_personal_snippets_files_spec.rb | 197 -- .../move_system_upload_folder_spec.rb | 80 - .../move_uploads_to_system_dir_spec.rb | 68 - .../normalize_ldap_extern_uids_spec.rb | 56 - ...can_push_from_deploy_keys_projects_spec.rb | 43 - .../remove_assignee_id_from_issue_spec.rb | 37 - .../remove_dot_git_from_usernames_spec.rb | 58 - .../remove_duplicate_mr_events_spec.rb | 26 - .../remove_empty_fork_networks_spec.rb | 35 - .../remove_project_labels_group_id_spec.rb | 21 - .../rename_duplicated_variable_key_spec.rb | 34 - ...rename_more_reserved_project_names_spec.rb | 57 - .../rename_reserved_project_names_spec.rb | 61 - ...ename_users_with_renamed_namespace_spec.rb | 22 - ...t_merge_request_diff_id_migrations_spec.rb | 64 - .../track_untracked_uploads_spec.rb | 15 - ...oups_into_regular_groups_for_mysql_spec.rb | 70 - ..._legacy_diff_notes_type_for_import_spec.rb | 22 - .../update_notes_type_for_import_spec.rb | 22 - .../update_retried_for_ci_build_spec.rb | 17 - .../update_upload_paths_to_system_spec.rb | 59 - spec/models/active_session_spec.rb | 13 + spec/models/application_setting_spec.rb | 30 - spec/models/broadcast_message_spec.rb | 6 +- spec/models/ci/build_spec.rb | 1 + spec/models/ci/pipeline_schedule_spec.rb | 55 +- spec/models/ci/pipeline_spec.rb | 35 + spec/models/ci/trigger_spec.rb | 20 +- .../clusters/applications/ingress_spec.rb | 16 +- .../clusters/applications/jupyter_spec.rb | 2 +- .../clusters/applications/knative_spec.rb | 2 +- .../clusters/applications/runner_spec.rb | 33 +- .../clusters/clusters_hierarchy_spec.rb | 73 + .../clusters/platforms/kubernetes_spec.rb | 98 +- spec/models/commit_range_spec.rb | 12 +- .../concerns/cache_markdown_field_spec.rb | 30 + .../concerns/cacheable_attributes_spec.rb | 9 +- spec/models/concerns/deployable_spec.rb | 14 +- .../concerns/deployment_platform_spec.rb | 63 +- spec/models/concerns/issuable_spec.rb | 10 + spec/models/concerns/mentionable_spec.rb | 2 +- .../project_api_compatibility_spec.rb | 59 + .../project_features_compatibility_spec.rb | 18 +- spec/models/concerns/reactive_caching_spec.rb | 61 +- spec/models/concerns/routable_spec.rb | 47 +- spec/models/concerns/stepable_spec.rb | 111 + spec/models/container_repository_spec.rb | 2 +- spec/models/cycle_analytics/code_spec.rb | 3 +- spec/models/cycle_analytics/issue_spec.rb | 5 +- spec/models/cycle_analytics/plan_spec.rb | 5 +- .../models/cycle_analytics/production_spec.rb | 3 +- .../project_level_spec.rb} | 8 +- spec/models/cycle_analytics/review_spec.rb | 3 +- spec/models/cycle_analytics/staging_spec.rb | 2 +- spec/models/cycle_analytics/test_spec.rb | 3 +- spec/models/deploy_token_spec.rb | 35 +- spec/models/deployment_metrics_spec.rb | 126 ++ spec/models/deployment_spec.rb | 93 +- spec/models/discussion_spec.rb | 14 + spec/models/environment_spec.rb | 75 +- spec/models/environment_status_spec.rb | 3 +- spec/models/group_spec.rb | 29 - spec/models/internal_id_spec.rb | 2 +- spec/models/issue/metrics_spec.rb | 6 +- spec/models/merge_request_spec.rb | 229 +- .../namespace/aggregation_schedule_spec.rb | 107 + .../namespace/root_storage_statistics_spec.rb | 75 + spec/models/namespace_spec.rb | 18 + spec/models/note_spec.rb | 2 + spec/models/pages_domain_spec.rb | 175 +- .../postgresql/replication_slot_spec.rb | 8 + spec/models/project_feature_spec.rb | 28 + .../project_services/bugzilla_service_spec.rb | 47 + .../custom_issue_tracker_service_spec.rb | 45 + .../project_services/drone_ci_service_spec.rb | 9 + .../gitlab_issue_tracker_service_spec.rb | 45 + .../project_services/jira_service_spec.rb | 154 +- .../kubernetes_service_spec.rb | 237 +- .../project_services/redmine_service_spec.rb | 45 + .../project_services/teamcity_service_spec.rb | 94 +- .../project_services/youtrack_service_spec.rb | 45 + spec/models/project_spec.rb | 12 +- spec/models/project_statistics_spec.rb | 43 + spec/models/release_spec.rb | 10 + spec/models/repository_spec.rb | 67 +- spec/models/service_spec.rb | 9 +- spec/models/user_spec.rb | 72 +- spec/policies/award_emoji_policy_spec.rb | 54 + spec/policies/ci/trigger_policy_spec.rb | 94 +- .../policies/clusters/instance_policy_spec.rb | 18 +- spec/policies/project_policy_spec.rb | 2 +- spec/presenters/award_emoji_presenter_spec.rb | 36 + spec/requests/api/branches_spec.rb | 10 +- spec/requests/api/commits_spec.rb | 16 +- spec/requests/api/container_registry_spec.rb | 21 + spec/requests/api/environments_spec.rb | 41 + .../mutations/award_emojis/add_spec.rb | 100 + .../mutations/award_emojis/remove_spec.rb | 80 + .../mutations/award_emojis/toggle_spec.rb | 142 ++ .../mutations/notes/create/diff_note_spec.rb | 64 + .../notes/create/image_diff_note_spec.rb | 70 + .../mutations/notes/create/note_spec.rb | 64 + .../graphql/mutations/notes/destroy_spec.rb | 52 + .../graphql/mutations/notes/update_spec.rb | 72 + .../api/graphql/project/tree/tree_spec.rb | 18 + spec/requests/api/graphql_spec.rb | 41 +- spec/requests/api/group_clusters_spec.rb | 452 ++++ spec/requests/api/helpers_spec.rb | 6 +- spec/requests/api/internal_spec.rb | 12 +- spec/requests/api/merge_requests_spec.rb | 93 +- spec/requests/api/pages_domains_spec.rb | 8 + spec/requests/api/project_clusters_spec.rb | 79 +- spec/requests/api/projects_spec.rb | 105 +- spec/requests/api/releases_spec.rb | 81 +- spec/requests/api/runners_spec.rb | 44 + spec/requests/api/search_spec.rb | 4 +- spec/requests/api/services_spec.rb | 13 +- spec/requests/api/tags_spec.rb | 2 +- spec/requests/api/user_counts_spec.rb | 40 + spec/requests/api/users_spec.rb | 35 +- spec/requests/lfs_http_spec.rb | 4 - spec/requests/lfs_locks_api_spec.rb | 4 - spec/requests/rack_attack_global_spec.rb | 43 +- spec/routing/api_routing_spec.rb | 23 - spec/routing/environments_spec.rb | 9 +- spec/routing/group_routing_spec.rb | 113 +- spec/routing/project_routing_spec.rb | 6 + spec/routing/routing_spec.rb | 30 +- spec/rubocop/cop/gitlab/rails_logger_spec.rb | 42 + .../cop/graphql/authorize_types_spec.rb | 66 + .../cop/qa/element_with_pattern_spec.rb | 4 +- .../serializers/diff_file_base_entity_spec.rb | 26 + .../environment_status_entity_spec.rb | 12 +- spec/serializers/test_case_entity_spec.rb | 2 +- .../test_reports_comparer_entity_spec.rb | 8 +- .../test_reports_comparer_serializer_spec.rb | 8 +- .../test_suite_comparer_entity_spec.rb | 92 +- spec/services/audit_event_service_spec.rb | 32 +- spec/services/auto_merge/base_service_spec.rb | 45 +- ...rge_when_pipeline_succeeds_service_spec.rb | 16 +- spec/services/auto_merge_service_spec.rb | 25 + .../boards/issues/move_service_spec.rb | 86 + .../diverging_commit_counts_service_spec.rb | 31 + .../check_uninstall_progress_service_spec.rb | 8 +- .../gcp/finalize_creation_service_spec.rb | 10 - ...create_or_update_namespace_service_spec.rb | 2 + ..._or_update_service_account_service_spec.rb | 20 + .../fetch_kubernetes_token_service_spec.rb | 56 +- spec/services/clusters/update_service_spec.rb | 1 - .../deploy_tokens/create_service_spec.rb | 16 + .../services/git/branch_hooks_service_spec.rb | 34 + .../issuable/bulk_update_service_spec.rb | 682 +++--- .../issuable/clone/content_rewriter_spec.rb | 13 + spec/services/issues/reorder_service_spec.rb | 88 + spec/services/issues/update_service_spec.rb | 32 + .../create_from_issue_service_spec.rb | 263 ++- .../merge_requests/get_urls_service_spec.rb | 6 +- .../merge_requests/merge_service_spec.rb | 19 +- .../merge_to_ref_service_spec.rb | 100 +- .../mergeability_check_service_spec.rb | 336 +++ .../merge_requests/rebase_service_spec.rb | 28 +- .../merge_requests/update_service_spec.rb | 2 +- .../statistics_refresher_service_spec.rb | 58 + spec/services/notes/create_service_spec.rb | 145 +- spec/services/notification_service_spec.rb | 56 +- ...n_lets_encrypt_certificate_service_spec.rb | 24 +- spec/services/projects/update_service_spec.rb | 4 +- .../project/create_service_spec.rb | 201 ++ spec/services/service_response_spec.rb | 16 + spec/services/system_note_service_spec.rb | 102 +- spec/spec_helper.rb | 17 +- spec/support/api/boards_shared_examples.rb | 10 + spec/support/database_cleaner.rb | 31 +- spec/support/db_cleaner.rb | 4 + .../discussion_comments_shared_example.rb | 40 +- ...g_discussions_in_issues_shared_examples.rb | 2 +- spec/support/helpers/devise_helpers.rb | 12 + spec/support/helpers/email_helpers.rb | 15 +- spec/support/helpers/fake_u2f_device.rb | 4 + spec/support/helpers/git_http_helpers.rb | 4 + spec/support/helpers/graphql_helpers.rb | 20 +- spec/support/helpers/jira_service_helper.rb | 6 +- spec/support/helpers/kubernetes_helpers.rb | 29 +- spec/support/helpers/login_helpers.rb | 12 +- spec/support/helpers/memory_usage_helper.rb | 37 + .../helpers/metrics_dashboard_helpers.rb | 24 +- spec/support/helpers/migrations_helpers.rb | 13 +- .../helpers/position_tracer_helpers.rb | 93 + spec/support/helpers/prometheus_helpers.rb | 4 + spec/support/helpers/query_recorder.rb | 4 + .../helpers/reactive_caching_helpers.rb | 2 +- spec/support/helpers/stub_configuration.rb | 15 + spec/support/helpers/test_env.rb | 25 +- spec/support/inspect_squelch.rb | 7 + spec/support/json_response.rb | 2 +- spec/support/matchers/abort_matcher.rb | 46 + spec/support/matchers/be_n_plus_1_query.rb | 62 + spec/support/matchers/gitaly_matchers.rb | 2 +- .../shared_contexts/email_shared_context.rb | 2 - .../application_setting_examples.rb | 39 - .../ci_trace_shared_examples.rb | 6 +- .../issuable_notes_filter_shared_examples.rb | 4 +- .../repository_lfs_file_load_examples.rb | 12 +- ..._on_merge_request_files_shared_examples.rb | 2 +- .../graphql/mutation_shared_examples.rb | 34 + .../graphql/notes_creation_shared_examples.rb | 61 + .../mentionable_shared_examples.rb | 51 + .../models/services_fields_shared_examples.rb | 31 + ...date_project_statistics_shared_examples.rb | 90 +- .../shared_examples/notify_shared_examples.rb | 14 +- .../policies/clusterable_shared_examples.rb | 8 - .../project_policy_shared_examples.rb | 1 + .../assign_quick_action_shared_examples.rb | 110 - .../award_quick_action_shared_examples.rb | 63 - ...y_metadata_quick_action_shared_examples.rb | 88 - .../done_quick_action_shared_examples.rb | 103 - .../estimate_quick_action_shared_examples.rb | 81 - .../issuable_quick_actions_shared_examples.rb | 273 +++ .../label_quick_action_shared_examples.rb | 83 - .../lock_quick_action_shared_examples.rb | 84 - .../milestone_quick_action_shared_examples.rb | 83 - .../relabel_quick_action_shared_examples.rb | 95 - ...e_estimate_quick_action_shared_examples.rb | 82 - ..._milestone_quick_action_shared_examples.rb | 86 - ...time_spent_quick_action_shared_examples.rb | 82 - .../reopen_quick_action_shared_examples.rb | 86 - .../shrug_quick_action_shared_examples.rb | 60 - .../spend_quick_action_shared_examples.rb | 81 - .../subscribe_quick_action_shared_examples.rb | 84 - .../tableflip_quick_action_shared_examples.rb | 60 - .../title_quick_action_shared_examples.rb | 85 - .../todo_quick_action_shared_examples.rb | 92 - .../unassign_quick_action_shared_examples.rb | 120 - .../unlabel_quick_action_shared_examples.rb | 102 - .../unlock_quick_action_shared_examples.rb | 87 - ...nsubscribe_quick_action_shared_examples.rb | 86 - ...nfidential_quick_action_shared_examples.rb | 35 - .../issue/due_quick_action_shared_examples.rb | 35 - ...e_due_date_quick_action_shared_examples.rb | 35 - ...get_branch_quick_action_shared_examples.rb | 81 - .../wip_quick_action_shared_examples.rb | 47 - .../services/boards/issues_move_service.rb | 62 +- .../update_invalid_issuable.rb | 2 +- spec/support/sidekiq.rb | 4 +- .../test_reports/test_reports_helper.rb | 34 +- spec/tasks/gitlab/check_rake_spec.rb | 9 + spec/tasks/gitlab/cleanup_rake_spec.rb | 29 + spec/tasks/gitlab/storage_rake_spec.rb | 34 +- spec/tasks/migrate/schema_check_rake_spec.rb | 48 + spec/uploaders/file_uploader_spec.rb | 68 +- .../nav/sidebar/_project.html.haml_spec.rb | 15 +- .../pipeline_failed_email.html.haml_spec.rb | 4 +- .../pipeline_failed_email.text.erb_spec.rb | 2 +- .../pipeline_success_email.html.haml_spec.rb | 4 +- .../projects/services/_form.haml_spec.rb | 6 +- spec/workers/build_success_worker_spec.rb | 44 - ...leanup_container_repository_worker_spec.rb | 8 - spec/workers/cluster_provision_worker_spec.rb | 7 - ...prune_aggregation_schedules_worker_spec.rb | 35 + .../namespaces/root_statistics_worker_spec.rb | 88 + .../schedule_aggregation_worker_spec.rb | 77 + ...ges_domain_ssl_renewal_cron_worker_spec.rb | 62 + .../pages_domain_ssl_renewal_worker_spec.rb | 46 + spec/workers/project_cache_worker_spec.rb | 14 + spec/workers/reactive_caching_worker_spec.rb | 7 +- .../prometheus_multiproc_dir/puma/.gitkeep | 0 .../prometheus_multiproc_dir/sidekiq/.gitkeep | 0 tmp/prometheus_multiproc_dir/unicorn/.gitkeep | 0 vendor/jupyter/values.yaml | 2 +- yarn.lock | 538 +++-- 3552 files changed, 62667 insertions(+), 52118 deletions(-) create mode 100644 .gitlab/ci/memory.gitlab-ci.yml delete mode 100644 .gitlab/issue_templates/Database Reviewer.md create mode 100644 .mdlrc create mode 100644 .mdlrc.style create mode 100644 app/assets/images/auth_buttons/salesforce_64.png create mode 100644 app/assets/javascripts/boards/components/board_form.vue create mode 100644 app/assets/javascripts/boards/components/boards_selector.vue create mode 100644 app/assets/javascripts/boards/config_toggle.js create mode 100644 app/assets/javascripts/boards/mixins/modal_footer.js create mode 100644 app/assets/javascripts/boards/mount_multiple_boards_switcher.js create mode 100644 app/assets/javascripts/boards/toggle_focus.js create mode 100644 app/assets/javascripts/branches/components/divergence_graph.vue create mode 100644 app/assets/javascripts/branches/components/graph_bar.vue create mode 100644 app/assets/javascripts/branches/constants.js create mode 100644 app/assets/javascripts/branches/divergence_graph.js create mode 100644 app/assets/javascripts/commons/nav/user_merge_requests.js create mode 100644 app/assets/javascripts/confidential_merge_request/components/dropdown.vue create mode 100644 app/assets/javascripts/confidential_merge_request/components/project_form_group.vue create mode 100644 app/assets/javascripts/confidential_merge_request/index.js create mode 100644 app/assets/javascripts/confidential_merge_request/state.js create mode 100644 app/assets/javascripts/diffs/components/diff_discussion_reply.vue create mode 100644 app/assets/javascripts/issuable_init_bulk_update_sidebar.js rename app/assets/javascripts/issuable_suggestions/queries/{issues.graphql => issues.query.graphql} (100%) create mode 100644 app/assets/javascripts/main_ee.js create mode 100644 app/assets/javascripts/manual_ordering.js create mode 100644 app/assets/javascripts/monitoring/components/charts/column.vue create mode 100644 app/assets/javascripts/monitoring/components/panel_type.vue rename app/assets/javascripts/mr_popover/queries/{merge_request.graphql => merge_request.query.graphql} (76%) create mode 100644 app/assets/javascripts/notes/components/discussion_notes_replies_wrapper.vue create mode 100644 app/assets/javascripts/pages/projects/shared/permissions/mixins/settings_pannel_mixin.js delete mode 100644 app/assets/javascripts/performance_bar/components/simple_metric.vue create mode 100644 app/assets/javascripts/projects/projects_filterable_list.js create mode 100644 app/assets/javascripts/registry/components/svg_message.vue create mode 100644 app/assets/javascripts/repository/components/last_commit.vue create mode 100644 app/assets/javascripts/repository/log_tree.js create mode 100644 app/assets/javascripts/repository/queries/getCommit.query.graphql create mode 100644 app/assets/javascripts/repository/queries/getCommits.query.graphql rename app/assets/javascripts/repository/queries/{getFiles.graphql => getFiles.query.graphql} (95%) create mode 100644 app/assets/javascripts/repository/queries/getPermissions.query.graphql rename app/assets/javascripts/repository/queries/{getProjectPath.graphql => getProjectPath.query.graphql} (100%) rename app/assets/javascripts/repository/queries/{getProjectShortPath.graphql => getProjectShortPath.query.graphql} (100%) rename app/assets/javascripts/repository/queries/{getRef.graphql => getRef.query.graphql} (100%) create mode 100644 app/assets/javascripts/repository/queries/pathLastCommit.query.graphql create mode 100644 app/assets/javascripts/vue_shared/components/paginated_list.vue delete mode 100644 app/assets/javascripts/vue_shared/mixins/is_ee.js delete mode 100644 app/assets/stylesheets/bootstrap.scss delete mode 100644 app/assets/stylesheets/framework/asciidoctor.scss create mode 100644 app/controllers/concerns/multiple_boards_actions.rb create mode 100644 app/controllers/projects/merge_requests/content_controller.rb create mode 100644 app/finders/boards/visits_finder.rb create mode 100644 app/graphql/mutations/award_emojis/add.rb create mode 100644 app/graphql/mutations/award_emojis/base.rb create mode 100644 app/graphql/mutations/award_emojis/remove.rb create mode 100644 app/graphql/mutations/award_emojis/toggle.rb create mode 100644 app/graphql/mutations/notes/base.rb create mode 100644 app/graphql/mutations/notes/create/base.rb create mode 100644 app/graphql/mutations/notes/create/diff_note.rb create mode 100644 app/graphql/mutations/notes/create/image_diff_note.rb create mode 100644 app/graphql/mutations/notes/create/note.rb create mode 100644 app/graphql/mutations/notes/destroy.rb create mode 100644 app/graphql/mutations/notes/update.rb create mode 100644 app/graphql/types/award_emojis/award_emoji_type.rb create mode 100644 app/graphql/types/commit_type.rb create mode 100644 app/graphql/types/diff_paths_input_type.rb create mode 100644 app/graphql/types/diff_refs_type.rb create mode 100644 app/graphql/types/notes/diff_image_position_input_type.rb create mode 100644 app/graphql/types/notes/diff_position_base_input_type.rb create mode 100644 app/graphql/types/notes/diff_position_input_type.rb create mode 100644 app/helpers/onboarding_experiment_helper.rb create mode 100644 app/helpers/recaptcha_experiment_helper.rb create mode 100644 app/models/clusters/clusters_hierarchy.rb create mode 100644 app/models/concerns/project_api_compatibility.rb create mode 100644 app/models/concerns/service_push_data_validations.rb create mode 100644 app/models/concerns/stepable.rb delete mode 100644 app/models/cycle_analytics.rb create mode 100644 app/models/cycle_analytics/base.rb create mode 100644 app/models/cycle_analytics/project_level.rb create mode 100644 app/models/deployment_metrics.rb create mode 100644 app/models/namespace/aggregation_schedule.rb create mode 100644 app/models/namespace/root_storage_statistics.rb create mode 100644 app/models/prometheus_metric_enums.rb create mode 100644 app/policies/award_emoji_policy.rb delete mode 100644 app/policies/concerns/clusterable_actions.rb create mode 100644 app/presenters/award_emoji_presenter.rb create mode 100644 app/serializers/current_board_entity.rb create mode 100644 app/serializers/current_board_serializer.rb delete mode 100644 app/serializers/submodule_entity.rb create mode 100644 app/services/boards/destroy_service.rb create mode 100644 app/services/boards/update_service.rb delete mode 100644 app/services/boards/visits/latest_service.rb create mode 100644 app/services/branches/diverging_commit_counts_service.rb create mode 100644 app/services/git/wiki_push_service.rb create mode 100644 app/services/issues/reorder_service.rb create mode 100644 app/services/merge_requests/mergeability_check_service.rb create mode 100644 app/services/namespaces/statistics_refresher_service.rb create mode 100644 app/services/self_monitoring/project/create_service.rb delete mode 100644 app/validators/namespace_name_validator.rb create mode 100644 app/views/admin/application_settings/_grafana.html.haml delete mode 100644 app/views/admin/application_settings/_logging.html.haml create mode 100644 app/views/layouts/nav/sidebar/_project_packages_link.html.haml create mode 100644 app/views/projects/_merge_request_settings_description_text.html.haml create mode 100644 app/views/projects/pipelines/charts/_pipeline_statistics.haml create mode 100644 app/views/shared/_storage_counter_statistics.html.haml create mode 100644 app/views/shared/boards/_switcher.html.haml create mode 100644 app/workers/namespaces/prune_aggregation_schedules_worker.rb create mode 100644 app/workers/namespaces/root_statistics_worker.rb create mode 100644 app/workers/namespaces/schedule_aggregation_worker.rb create mode 100644 app/workers/pages_domain_ssl_renewal_cron_worker.rb create mode 100644 app/workers/pages_domain_ssl_renewal_worker.rb create mode 100755 bin/web_unicorn create mode 100755 bin/yarn create mode 100644 changelogs/add-name-parameter-to-project-environments-api.yml create mode 100644 config/brakeman.ignore create mode 100644 config/database_geo.yml.postgresql create mode 100644 config/initializers/0_license.rb create mode 100644 config/initializers/0_thread_cache.rb create mode 100644 config/initializers/1_postgresql_only.rb create mode 100644 config/initializers/active_record_query_cache.rb delete mode 100644 config/initializers/active_record_verbose_query_logs.rb create mode 100644 config/initializers/elastic_client_setup.rb create mode 100644 config/initializers/geo.rb create mode 100644 config/initializers/httpclient_patch.rb create mode 100644 config/initializers/load_balancing.rb create mode 100644 config/initializers/sidekiq_cluster.rb create mode 100644 config/initializers/transaction_metrics.rb create mode 100644 config/prometheus/cluster_metrics.yml create mode 100644 config/pseudonymizer.yml create mode 100644 danger/only_documentation/Dangerfile delete mode 100644 db/importers/common_metrics_importer.rb delete mode 100644 db/migrate/20140313092127_init_schema.rb delete mode 100644 db/migrate/20140407135544_fix_namespaces.rb delete mode 100644 db/migrate/20140414131055_change_state_to_allow_empty_merge_request_diffs.rb delete mode 100644 db/migrate/20140415124820_limits_to_mysql.rb delete mode 100644 db/migrate/20140416074002_add_index_on_iid.rb delete mode 100644 db/migrate/20140416185734_index_on_current_sign_in_at.rb delete mode 100644 db/migrate/20140428105831_add_notes_index_updated_at.rb delete mode 100644 db/migrate/20140502115131_add_repo_size_to_db.rb delete mode 100644 db/migrate/20140502125220_migrate_repo_size.rb delete mode 100644 db/migrate/20140611135229_add_position_to_merge_request.rb delete mode 100644 db/migrate/20140625115202_create_users_star_projects.rb delete mode 100644 db/migrate/20140729134820_create_labels.rb delete mode 100644 db/migrate/20140729140420_create_label_links.rb delete mode 100644 db/migrate/20140729145339_migrate_project_tags.rb delete mode 100644 db/migrate/20140729152420_migrate_taggable_labels.rb delete mode 100644 db/migrate/20140730111702_add_index_to_labels.rb delete mode 100644 db/migrate/20140903115954_migrate_to_new_shell.rb delete mode 100644 db/migrate/20140907220153_serialize_service_properties.rb delete mode 100644 db/migrate/20140914113604_add_members_table.rb delete mode 100644 db/migrate/20140914145549_migrate_to_new_members_model.rb delete mode 100644 db/migrate/20140914173417_remove_old_member_tables.rb delete mode 100644 db/migrate/20141006143943_move_slack_service_to_webhook.rb delete mode 100644 db/migrate/20141007100818_add_visibility_level_to_snippet.rb delete mode 100644 db/migrate/20141118150935_add_audit_event.rb delete mode 100644 db/migrate/20141121133009_add_timestamps_to_members.rb delete mode 100644 db/migrate/20141121161704_add_identity_table.rb delete mode 100644 db/migrate/20141126120926_add_merge_request_rebase_enabled_to_projects.rb delete mode 100644 db/migrate/20141205134006_add_locked_at_to_merge_request.rb delete mode 100644 db/migrate/20141216155758_create_doorkeeper_tables.rb delete mode 100644 db/migrate/20141217125223_add_owner_to_application.rb delete mode 100644 db/migrate/20141223135007_add_import_data_to_project_table.rb delete mode 100644 db/migrate/20141226080412_add_developers_can_push_to_protected_branches.rb delete mode 100644 db/migrate/20150108073740_create_application_settings.rb delete mode 100644 db/migrate/20150116234544_add_home_page_url_for_application_settings.rb delete mode 100644 db/migrate/20150116234545_add_gitlab_access_token_to_user.rb delete mode 100644 db/migrate/20150125163100_add_default_branch_protection_setting.rb delete mode 100644 db/migrate/20150205211843_add_timestamps_to_identities.rb delete mode 100644 db/migrate/20150206181414_add_index_to_created_at.rb delete mode 100644 db/migrate/20150206222854_add_notification_email_to_user.rb delete mode 100644 db/migrate/20150209222013_add_missing_index.rb delete mode 100644 db/migrate/20150211172122_add_template_to_service.rb delete mode 100644 db/migrate/20150211174341_allow_null_in_services_project_id.rb delete mode 100644 db/migrate/20150213104043_add_twitter_sharing_enabled_to_application_settings.rb delete mode 100644 db/migrate/20150213114800_add_hide_no_password_to_user.rb delete mode 100644 db/migrate/20150213121042_add_password_automatically_set_to_user.rb delete mode 100644 db/migrate/20150217123345_add_bitbucket_access_token_and_secret_to_user.rb delete mode 100644 db/migrate/20150219004514_add_events_to_services.rb delete mode 100644 db/migrate/20150223022001_set_missing_last_activity_at.rb delete mode 100644 db/migrate/20150225065047_add_note_events_to_services.rb delete mode 100644 db/migrate/20150301014758_add_restricted_visibility_levels_to_application_settings.rb delete mode 100644 db/migrate/20150306023106_fix_namespace_duplication.rb delete mode 100644 db/migrate/20150306023112_add_unique_index_to_namespace.rb delete mode 100644 db/migrate/20150310194358_add_version_check_to_application_settings.rb delete mode 100644 db/migrate/20150313012111_create_subscriptions_table.rb delete mode 100644 db/migrate/20150320234437_add_location_to_user.rb delete mode 100644 db/migrate/20150324155957_set_incorrect_assignee_id_to_null.rb delete mode 100644 db/migrate/20150327122227_add_public_to_key.rb delete mode 100644 db/migrate/20150327150017_add_import_data_to_project.rb delete mode 100644 db/migrate/20150327223628_add_devise_two_factor_to_users.rb delete mode 100644 db/migrate/20150328132231_add_max_attachment_size_to_application_settings.rb delete mode 100644 db/migrate/20150331183602_add_devise_two_factor_backupable_to_users.rb delete mode 100644 db/migrate/20150406133311_add_invite_data_to_member.rb delete mode 100644 db/migrate/20150411000035_fix_identities.rb delete mode 100644 db/migrate/20150411180045_rename_buildbox_service.rb delete mode 100644 db/migrate/20150413192223_add_public_email_to_users.rb delete mode 100644 db/migrate/20150417121913_create_project_import_data.rb delete mode 100644 db/migrate/20150417122318_remove_import_data_from_project.rb delete mode 100644 db/migrate/20150421120000_remove_periods_at_ends_of_usernames.rb delete mode 100644 db/migrate/20150423033240_add_default_project_visibililty_to_application_settings.rb delete mode 100644 db/migrate/20150425164646_gitlab_change_collation_for_tag_names.acts_as_taggable_on_engine.rb delete mode 100644 db/migrate/20150425164647_remove_duplicate_tags.rb delete mode 100644 db/migrate/20150425164648_add_missing_unique_indices.acts_as_taggable_on_engine.rb delete mode 100644 db/migrate/20150425164649_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb delete mode 100644 db/migrate/20150425164650_add_missing_taggable_index.acts_as_taggable_on_engine.rb delete mode 100644 db/migrate/20150425164651_change_collation_for_tag_names.acts_as_taggable_on_engine.rb delete mode 100644 db/migrate/20150425173433_add_default_snippet_visibility_to_app_settings.rb delete mode 100644 db/migrate/20150429002313_remove_abandoned_group_members_records.rb delete mode 100644 db/migrate/20150502064022_add_restricted_signup_domains_to_application_settings.rb delete mode 100644 db/migrate/20150509180749_convert_legacy_reference_notes.rb delete mode 100644 db/migrate/20150516060434_add_note_events_to_web_hooks.rb delete mode 100644 db/migrate/20150529111607_add_user_oauth_applications_to_application_settings.rb delete mode 100644 db/migrate/20150529150354_add_after_sign_out_path_for_application_settings.rb delete mode 100644 db/migrate/20150609141121_add_session_expire_delay_for_application_settings.rb delete mode 100644 db/migrate/20150610065936_add_dashboard_to_users.rb delete mode 100644 db/migrate/20150620233230_add_default_otp_required_for_login_value.rb delete mode 100644 db/migrate/20150713160110_add_project_view_to_users.rb delete mode 100644 db/migrate/20150717130904_add_commits_count_to_project.rb delete mode 100644 db/migrate/20150730122406_add_updated_by_to_issuables_and_notes.rb delete mode 100644 db/migrate/20150806104937_create_abuse_reports.rb delete mode 100644 db/migrate/20150812080800_add_settings_import_sources.rb delete mode 100644 db/migrate/20150814065925_remove_oauth_tokens_from_users.rb delete mode 100644 db/migrate/20150817163600_deduplicate_user_identities.rb delete mode 100644 db/migrate/20150818213832_add_sent_notifications.rb delete mode 100644 db/migrate/20150824002011_add_enable_ssl_verification.rb delete mode 100644 db/migrate/20150826001931_add_ci_tables.rb delete mode 100644 db/migrate/20150827121444_add_fast_forward_option_to_project.rb delete mode 100644 db/migrate/20150902001023_add_template_to_label.rb delete mode 100644 db/migrate/20150914215247_add_ci_tags.rb delete mode 100644 db/migrate/20150915001905_enable_ssl_verification_by_default.rb delete mode 100644 db/migrate/20150916000405_enable_ssl_verification_for_web_hooks.rb delete mode 100644 db/migrate/20150916114643_add_help_page_text_to_application_settings.rb delete mode 100644 db/migrate/20150916145038_add_index_for_committed_at_and_id.rb delete mode 100644 db/migrate/20150918084513_add_ci_enabled_to_application_settings.rb delete mode 100644 db/migrate/20150918161719_remove_invalid_milestones_from_merge_requests.rb delete mode 100644 db/migrate/20150920010715_add_consumed_timestep_to_users.rb delete mode 100644 db/migrate/20150920161119_add_line_code_to_sent_notification.rb delete mode 100644 db/migrate/20150924125150_add_project_id_to_ci_commit.rb delete mode 100644 db/migrate/20150924125436_migrate_project_id_for_ci_commits.rb delete mode 100644 db/migrate/20150930001110_merge_request_error_field.rb delete mode 100644 db/migrate/20150930095736_add_null_to_name_for_ci_projects.rb delete mode 100644 db/migrate/20150930110012_add_group_share_lock.rb delete mode 100644 db/migrate/20151002112914_add_stage_idx_to_builds.rb delete mode 100644 db/migrate/20151002121400_add_index_for_builds.rb delete mode 100644 db/migrate/20151002122929_add_ref_and_tag_to_builds.rb delete mode 100644 db/migrate/20151002122943_migrate_ref_and_tag_to_build.rb delete mode 100644 db/migrate/20151005075649_add_user_id_to_build.rb delete mode 100644 db/migrate/20151005150751_add_layout_option_for_users.rb delete mode 100644 db/migrate/20151005162154_remove_ci_enabled_from_application_settings.rb delete mode 100644 db/migrate/20151007120511_namespaces_projects_path_lower_indexes.rb delete mode 100644 db/migrate/20151008110232_add_users_lower_username_email_indexes.rb delete mode 100644 db/migrate/20151008123042_add_type_and_description_to_builds.rb delete mode 100644 db/migrate/20151008130321_migrate_name_to_description_for_builds.rb delete mode 100644 db/migrate/20151008143519_add_admin_notification_email_setting.rb delete mode 100644 db/migrate/20151012173029_set_jira_service_api_url.rb delete mode 100644 db/migrate/20151013092124_add_artifacts_file_to_builds.rb delete mode 100644 db/migrate/20151016131433_add_ci_projects_gl_project_id_index.rb delete mode 100644 db/migrate/20151016195451_add_ci_builds_and_projects_indexes.rb delete mode 100644 db/migrate/20151016195706_add_notes_line_code_index.rb delete mode 100644 db/migrate/20151019111551_fix_build_tags.rb delete mode 100644 db/migrate/20151019111703_fail_build_without_names.rb delete mode 100644 db/migrate/20151020145526_add_services_template_index.rb delete mode 100644 db/migrate/20151020173516_ci_limits_to_mysql.rb delete mode 100644 db/migrate/20151020173906_add_ci_builds_index_for_status.rb delete mode 100644 db/migrate/20151023112551_fail_build_with_empty_name.rb delete mode 100644 db/migrate/20151023144219_remove_satellites.rb delete mode 100644 db/migrate/20151026182941_add_project_path_index.rb delete mode 100644 db/migrate/20151028152939_add_merge_when_build_succeeds_to_merge_request.rb delete mode 100644 db/migrate/20151103001141_add_public_to_group.rb delete mode 100644 db/migrate/20151103133339_add_shared_runners_setting.rb delete mode 100644 db/migrate/20151103134857_create_lfs_objects.rb delete mode 100644 db/migrate/20151103134958_create_lfs_objects_projects.rb delete mode 100644 db/migrate/20151104105513_add_file_to_lfs_objects.rb delete mode 100644 db/migrate/20151105094515_create_releases.rb delete mode 100644 db/migrate/20151106000015_add_is_award_to_notes.rb delete mode 100644 db/migrate/20151109100728_add_max_artifacts_size_to_application_settings.rb delete mode 100644 db/migrate/20151109134526_add_issues_state_index.rb delete mode 100644 db/migrate/20151109134916_add_projects_visibility_level_index.rb delete mode 100644 db/migrate/20151110125604_add_import_error_to_project.rb delete mode 100644 db/migrate/20151114113410_add_index_for_lfs_oid_and_size.rb delete mode 100644 db/migrate/20151116144118_add_unique_for_lfs_oid_index.rb delete mode 100644 db/migrate/20151118162244_add_projects_public_index.rb delete mode 100644 db/migrate/20151201203948_raise_hook_url_limit.rb delete mode 100644 db/migrate/20151203162133_add_hide_project_limit_to_users.rb delete mode 100644 db/migrate/20151203162134_add_build_events_to_services.rb delete mode 100644 db/migrate/20151209144329_migrate_ci_web_hooks.rb delete mode 100644 db/migrate/20151209145909_migrate_ci_emails.rb delete mode 100644 db/migrate/20151210030143_add_unlock_token_to_user.rb delete mode 100644 db/migrate/20151210072243_add_runners_registration_token_to_application_settings.rb delete mode 100644 db/migrate/20151210125232_migrate_ci_slack_service.rb delete mode 100644 db/migrate/20151210125927_migrate_ci_hip_chat_service.rb delete mode 100644 db/migrate/20151210125928_add_ci_to_project.rb delete mode 100644 db/migrate/20151210125929_add_project_id_to_ci.rb delete mode 100644 db/migrate/20151210125930_migrate_ci_to_project.rb delete mode 100644 db/migrate/20151210125931_add_index_to_ci_tables.rb delete mode 100644 db/migrate/20151210125932_drop_null_for_ci_tables.rb delete mode 100644 db/migrate/20151215132013_add_pages_size_to_application_settings.rb delete mode 100644 db/migrate/20151218154042_add_tfa_to_application_settings.rb delete mode 100644 db/migrate/20151221234414_add_tfa_additional_fields.rb delete mode 100644 db/migrate/20151224123230_rename_emojis.rb delete mode 100644 db/migrate/20151228111122_remove_public_from_namespace.rb delete mode 100644 db/migrate/20151228150906_influxdb_settings.rb delete mode 100644 db/migrate/20151228175719_add_recaptcha_to_application_settings.rb delete mode 100644 db/migrate/20151229102248_influxdb_udp_port_setting.rb delete mode 100644 db/migrate/20151229112614_influxdb_remote_database_setting.rb delete mode 100644 db/migrate/20151230132518_add_artifacts_metadata_to_ci_build.rb delete mode 100644 db/migrate/20151231152326_add_akismet_to_application_settings.rb delete mode 100644 db/migrate/20151231202530_remove_alert_type_from_broadcast_messages.rb delete mode 100644 db/migrate/20160106162223_add_index_milestones_title.rb delete mode 100644 db/migrate/20160106164438_remove_influxdb_credentials.rb delete mode 100644 db/migrate/20160109054846_create_spam_logs.rb delete mode 100644 db/migrate/20160113111034_add_metrics_sample_interval.rb delete mode 100644 db/migrate/20160118155830_add_sentry_to_application_settings.rb delete mode 100644 db/migrate/20160118232755_add_ip_blocking_settings_to_application_settings.rb delete mode 100644 db/migrate/20160119111158_add_services_category.rb delete mode 100644 db/migrate/20160119112418_add_services_default.rb delete mode 100644 db/migrate/20160119145451_add_ldap_email_to_users.rb delete mode 100644 db/migrate/20160120172143_add_base_commit_sha_to_merge_request_diffs.rb delete mode 100644 db/migrate/20160121030729_add_email_author_in_body_to_application_settings.rb delete mode 100644 db/migrate/20160122185421_add_pending_delete_to_project.rb delete mode 100644 db/migrate/20160128212447_remove_ip_blocking_settings_from_application_settings.rb delete mode 100644 db/migrate/20160128233227_change_lfs_objects_size_column.rb delete mode 100644 db/migrate/20160129135155_remove_dot_atom_path_ending_of_projects.rb delete mode 100644 db/migrate/20160129155512_add_merge_commit_sha_to_merge_requests.rb delete mode 100644 db/migrate/20160202091601_add_erasable_to_ci_build.rb delete mode 100644 db/migrate/20160202164642_add_allow_guest_to_access_builds_project.rb delete mode 100644 db/migrate/20160204144558_add_real_size_to_merge_request_diffs.rb delete mode 100644 db/migrate/20160209130428_add_index_to_snippet.rb delete mode 100644 db/migrate/20160210105555_create_pages_domain.rb delete mode 100644 db/migrate/20160212123307_create_tasks.rb delete mode 100644 db/migrate/20160217100506_add_description_to_label.rb delete mode 100644 db/migrate/20160217174422_add_note_to_tasks.rb delete mode 100644 db/migrate/20160220123949_rename_tasks_to_todos.rb delete mode 100644 db/migrate/20160222153918_create_appearances_ce.rb delete mode 100644 db/migrate/20160223192159_add_confidential_to_issues.rb delete mode 100644 db/migrate/20160225090018_add_delete_at_to_issues.rb delete mode 100644 db/migrate/20160225101956_add_delete_at_to_merge_requests.rb delete mode 100644 db/migrate/20160226114608_add_trigram_indexes_for_searching.rb delete mode 100644 db/migrate/20160227120001_add_event_field_for_web_hook.rb delete mode 100644 db/migrate/20160227120047_add_event_to_services.rb delete mode 100644 db/migrate/20160229193553_add_main_language_to_repository.rb delete mode 100644 db/migrate/20160301124843_add_visibility_level_to_groups.rb delete mode 100644 db/migrate/20160301174731_add_fingerprint_index.rb delete mode 100644 db/migrate/20160302151724_add_import_credentials_to_project_import_data.rb delete mode 100644 db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb delete mode 100644 db/migrate/20160305220806_remove_expires_at_from_snippets.rb delete mode 100644 db/migrate/20160307221555_disallow_blank_line_code_on_note.rb delete mode 100644 db/migrate/20160308212903_add_default_group_visibility_to_application_settings.rb delete mode 100644 db/migrate/20160309140734_fix_todos.rb delete mode 100644 db/migrate/20160310124959_add_due_date_to_issues.rb delete mode 100644 db/migrate/20160310185910_add_external_flag_to_users.rb delete mode 100644 db/migrate/20160314094147_add_priority_to_label.rb delete mode 100644 db/migrate/20160314114439_add_requested_at_to_members.rb delete mode 100644 db/migrate/20160314143402_projects_add_pushes_since_gc.rb delete mode 100644 db/migrate/20160315135439_project_add_repository_check.rb delete mode 100644 db/migrate/20160316123110_ci_runners_token_index.rb delete mode 100644 db/migrate/20160316192622_change_target_id_to_null_on_todos.rb delete mode 100644 db/migrate/20160316204731_add_commit_id_to_todos.rb delete mode 100644 db/migrate/20160317092222_add_moved_to_to_issue.rb delete mode 100644 db/migrate/20160320204112_index_namespaces_on_visibility_level.rb delete mode 100644 db/migrate/20160324020319_remove_todos_for_deleted_issues.rb delete mode 100644 db/migrate/20160328112808_create_notification_settings.rb delete mode 100644 db/migrate/20160328115649_migrate_new_notification_setting.rb delete mode 100644 db/migrate/20160328121138_add_notification_setting_index.rb delete mode 100644 db/migrate/20160329144452_add_index_on_pending_delete_projects.rb delete mode 100644 db/migrate/20160331133914_remove_todos_for_deleted_merge_requests.rb delete mode 100644 db/migrate/20160331223143_remove_twitter_sharing_enabled_from_application_settings.rb delete mode 100644 db/migrate/20160407120251_add_images_enabled_for_project.rb delete mode 100644 db/migrate/20160412140240_add_repository_checks_enabled_setting.rb delete mode 100644 db/migrate/20160412173416_add_fields_to_ci_commit.rb delete mode 100644 db/migrate/20160412173417_update_ci_commit.rb delete mode 100644 db/migrate/20160412173418_add_ci_commit_indexes.rb delete mode 100644 db/migrate/20160413115152_add_token_to_web_hooks.rb delete mode 100644 db/migrate/20160415062917_create_personal_access_tokens.rb delete mode 100644 db/migrate/20160415133440_add_shared_runners_text_to_application_settings.rb delete mode 100644 db/migrate/20160416180807_add_award_emoji.rb delete mode 100644 db/migrate/20160416182152_convert_award_note_to_emoji_award.rb delete mode 100644 db/migrate/20160419120017_add_metrics_packet_size.rb delete mode 100644 db/migrate/20160419122101_add_only_allow_merge_if_build_succeeds_to_projects.rb delete mode 100644 db/migrate/20160421130527_disable_repository_checks.rb delete mode 100644 db/migrate/20160425045124_create_u2f_registrations.rb delete mode 100644 db/migrate/20160504091942_add_disabled_oauth_sign_in_sources_to_application_settings.rb delete mode 100644 db/migrate/20160504112519_add_run_untagged_to_ci_runner.rb delete mode 100644 db/migrate/20160508194200_remove_wall_enabled_from_projects.rb delete mode 100644 db/migrate/20160508202603_add_head_commit_id_to_merge_request_diffs.rb delete mode 100644 db/migrate/20160508215820_add_type_to_notes.rb delete mode 100644 db/migrate/20160508215920_add_positions_to_diff_notes.rb delete mode 100644 db/migrate/20160508221410_set_type_on_legacy_diff_notes.rb delete mode 100644 db/migrate/20160509091049_add_locked_to_ci_runner.rb delete mode 100644 db/migrate/20160509201028_add_health_check_access_token_to_application_settings.rb delete mode 100644 db/migrate/20160516174813_add_send_user_confirmation_email_to_application_settings.rb delete mode 100644 db/migrate/20160516224534_add_start_commit_id_to_merge_request_diffs.rb delete mode 100644 db/migrate/20160518200441_add_artifacts_expire_date_to_ci_builds.rb delete mode 100644 db/migrate/20160519203051_add_developers_can_merge_to_protected_branches.rb delete mode 100644 db/migrate/20160522215720_add_note_type_and_position_to_sent_notification.rb delete mode 100644 db/migrate/20160525205328_remove_main_language_from_projects.rb delete mode 100644 db/migrate/20160527020117_remove_notification_settings_for_deleted_projects.rb delete mode 100644 db/migrate/20160528043124_add_users_state_index.rb delete mode 100644 db/migrate/20160530150109_add_container_registry_token_expire_delay_to_application_settings.rb delete mode 100644 db/migrate/20160603075128_add_has_external_issue_tracker_to_projects.rb delete mode 100644 db/migrate/20160603180330_remove_duplicated_notification_settings.rb delete mode 100644 db/migrate/20160603182247_add_index_to_notification_settings.rb delete mode 100644 db/migrate/20160608155312_add_after_sign_up_text_to_application_settings.rb delete mode 100644 db/migrate/20160608195742_add_repository_storage_to_projects.rb delete mode 100644 db/migrate/20160608211215_add_user_default_external_to_application_settings.rb delete mode 100644 db/migrate/20160610140403_remove_notification_setting_not_null_constraints.rb delete mode 100644 db/migrate/20160610194713_remove_deprecated_issues_tracker_columns_from_projects.rb delete mode 100644 db/migrate/20160610201627_migrate_users_notification_level.rb delete mode 100644 db/migrate/20160610204157_add_deployments.rb delete mode 100644 db/migrate/20160610204158_add_environments.rb delete mode 100644 db/migrate/20160610211845_add_environment_to_builds.rb delete mode 100644 db/migrate/20160610301627_remove_notification_level_from_users.rb delete mode 100644 db/migrate/20160614182521_add_repository_storage_to_application_settings.rb delete mode 100644 db/migrate/20160615142710_add_index_on_requested_at_to_members.rb delete mode 100644 db/migrate/20160615173316_add_enabled_git_access_protocols_to_application_settings.rb delete mode 100644 db/migrate/20160615191922_set_missing_stage_on_ci_builds.rb delete mode 100644 db/migrate/20160616084004_change_project_of_environment.rb delete mode 100644 db/migrate/20160616102642_remove_duplicated_keys.rb delete mode 100644 db/migrate/20160616103005_remove_keys_fingerprint_index_if_exists.rb delete mode 100644 db/migrate/20160616103948_add_unique_index_to_keys_fingerprint.rb delete mode 100644 db/migrate/20160617301627_add_events_to_notification_settings.rb delete mode 100644 db/migrate/20160620115026_add_index_on_runners_locked.rb delete mode 100644 db/migrate/20160621123729_add_rebase_commit_sha_to_merge_requests.rb delete mode 100644 db/migrate/20160628085157_add_artifacts_size_to_ci_builds.rb delete mode 100644 db/migrate/20160629025435_add_column_in_progress_merge_commit_sha_to_merge_requests.rb delete mode 100644 db/migrate/20160703180340_add_index_on_award_emoji_user_and_name.rb delete mode 100644 db/migrate/20160705054938_add_protected_branches_push_access.rb delete mode 100644 db/migrate/20160705054952_add_protected_branches_merge_access.rb delete mode 100644 db/migrate/20160705055254_move_from_developers_can_merge_to_protected_branches_merge_access.rb delete mode 100644 db/migrate/20160705055308_move_from_developers_can_push_to_protected_branches_push_access.rb delete mode 100644 db/migrate/20160705055809_remove_developers_can_push_from_protected_branches.rb delete mode 100644 db/migrate/20160705055813_remove_developers_can_merge_from_protected_branches.rb delete mode 100644 db/migrate/20160705163108_remove_requesters_that_are_owners.rb delete mode 100644 db/migrate/20160707104333_add_lock_to_issuables.rb delete mode 100644 db/migrate/20160712171823_remove_award_emojis_with_no_user.rb delete mode 100644 db/migrate/20160713200638_add_repository_read_only_to_projects.rb delete mode 100644 db/migrate/20160713205315_add_domain_blacklist_to_application_settings.rb delete mode 100644 db/migrate/20160713222618_add_usage_ping_to_application_settings.rb delete mode 100644 db/migrate/20160715132507_add_user_id_to_pipeline.rb delete mode 100644 db/migrate/20160715134306_add_index_for_pipeline_user_id.rb delete mode 100644 db/migrate/20160715154212_add_request_access_enabled_to_projects.rb delete mode 100644 db/migrate/20160715204316_add_request_access_enabled_to_groups.rb delete mode 100644 db/migrate/20160715230841_rename_application_settings_restricted_signup_domains.rb delete mode 100644 db/migrate/20160716115710_add_when_and_yaml_variables_to_ci_builds.rb delete mode 100644 db/migrate/20160716115711_add_queued_at_to_ci_builds.rb delete mode 100644 db/migrate/20160718153603_add_has_external_wiki_to_projects.rb delete mode 100644 db/migrate/20160721081015_drop_and_readd_has_external_wiki_in_projects.rb delete mode 100644 db/migrate/20160722221922_nullify_blank_type_on_notes.rb delete mode 100644 db/migrate/20160724205507_add_resolved_to_notes.rb delete mode 100644 db/migrate/20160725083350_add_external_url_to_enviroments.rb delete mode 100644 db/migrate/20160725104020_merge_request_diff_remove_uniq.rb delete mode 100644 db/migrate/20160725104452_merge_request_diff_add_index.rb delete mode 100644 db/migrate/20160727163552_create_user_agent_details.rb delete mode 100644 db/migrate/20160727191041_create_boards.rb delete mode 100644 db/migrate/20160727193336_create_lists.rb delete mode 100644 db/migrate/20160728081025_add_pipeline_events_to_web_hooks.rb delete mode 100644 db/migrate/20160728103734_add_pipeline_events_to_services.rb delete mode 100644 db/migrate/20160729173930_remove_project_id_from_spam_logs.rb delete mode 100644 db/migrate/20160801163421_add_expires_at_to_member.rb delete mode 100644 db/migrate/20160801163709_add_submitted_as_ham_to_spam_logs.rb delete mode 100644 db/migrate/20160802010328_remove_builds_enable_index_on_projects.rb delete mode 100644 db/migrate/20160803161903_add_unique_index_to_lists_label_id.rb delete mode 100644 db/migrate/20160804142904_add_ci_config_file_to_project.rb delete mode 100644 db/migrate/20160804150737_add_timestamps_to_members_again.rb delete mode 100644 db/migrate/20160805041956_add_deleted_at_to_namespaces.rb delete mode 100644 db/migrate/20160808085531_add_token_to_build.rb delete mode 100644 db/migrate/20160808085602_add_index_for_build_token.rb delete mode 100644 db/migrate/20160810102349_remove_ci_runner_trigram_indexes.rb delete mode 100644 db/migrate/20160810142633_remove_redundant_indexes.rb delete mode 100644 db/migrate/20160811172945_add_can_push_to_keys.rb delete mode 100644 db/migrate/20160816161312_add_column_name_to_u2f_registrations.rb delete mode 100644 db/migrate/20160817133006_add_koding_to_application_settings.rb delete mode 100644 db/migrate/20160817154936_add_discussion_ids_to_notes.rb delete mode 100644 db/migrate/20160818205718_add_expires_at_to_project_group_links.rb delete mode 100644 db/migrate/20160819221631_add_index_to_note_discussion_id.rb delete mode 100644 db/migrate/20160819221833_reset_diff_note_discussion_id_because_it_was_calculated_wrongly.rb delete mode 100644 db/migrate/20160819232256_add_incoming_email_token_to_users.rb delete mode 100644 db/migrate/20160823081327_change_merge_error_to_text.rb delete mode 100644 db/migrate/20160823083941_add_column_scopes_to_personal_access_tokens.rb delete mode 100644 db/migrate/20160823213309_add_lfs_enabled_to_projects.rb delete mode 100644 db/migrate/20160824103857_drop_unused_ci_tables.rb delete mode 100644 db/migrate/20160824124900_add_table_issue_metrics.rb delete mode 100644 db/migrate/20160825052008_add_table_merge_request_metrics.rb delete mode 100644 db/migrate/20160827011312_ensure_lock_version_has_no_default.rb delete mode 100644 db/migrate/20160829114652_add_markdown_cache_columns.rb delete mode 100644 db/migrate/20160830203109_add_confidential_issues_events_to_web_hooks.rb delete mode 100644 db/migrate/20160830211132_add_confidential_issues_events_to_services.rb delete mode 100644 db/migrate/20160830232601_change_lock_version_not_null.rb delete mode 100644 db/migrate/20160831214002_create_project_features.rb delete mode 100644 db/migrate/20160831214543_migrate_project_features.rb delete mode 100644 db/migrate/20160831223750_remove_features_enabled_from_projects.rb delete mode 100644 db/migrate/20160901141443_set_confidential_issues_events_on_webhooks.rb delete mode 100644 db/migrate/20160902122721_drop_gitorious_field_from_application_settings.rb delete mode 100644 db/migrate/20160907131111_add_environment_type_to_environments.rb delete mode 100644 db/migrate/20160913162434_remove_projects_pushes_since_gc.rb delete mode 100644 db/migrate/20160913212128_change_artifacts_size_column.rb delete mode 100644 db/migrate/20160914131004_only_allow_merge_if_all_discussions_are_resolved.rb delete mode 100644 db/migrate/20160915042921_create_merge_requests_closing_issues.rb delete mode 100644 db/migrate/20160919144305_add_type_to_labels.rb delete mode 100644 db/migrate/20160919145149_add_group_id_to_labels.rb delete mode 100644 db/migrate/20160920160832_add_index_to_labels_title.rb delete mode 100644 db/migrate/20160926145521_add_organization_to_user.rb delete mode 100644 db/migrate/20161006104309_add_state_to_environment.rb delete mode 100644 db/migrate/20161007073613_create_user_activities.rb delete mode 100644 db/migrate/20161007133303_precalculate_trending_projects.rb delete mode 100644 db/migrate/20161010142410_create_project_authorizations.rb delete mode 100644 db/migrate/20161012180455_add_repository_access_level_to_project_feature.rb delete mode 100644 db/migrate/20161014173530_create_label_priorities.rb delete mode 100644 db/migrate/20161017091941_add_authorized_projects_populated_to_users.rb delete mode 100644 db/migrate/20161017095000_add_properties_to_deployment.rb delete mode 100644 db/migrate/20161017125927_add_unique_index_to_labels.rb delete mode 100644 db/migrate/20161018024215_migrate_labels_priority.rb delete mode 100644 db/migrate/20161018024550_remove_priority_from_labels.rb delete mode 100644 db/migrate/20161018124658_make_project_owners_masters.rb delete mode 100644 db/migrate/20161019190736_migrate_sidekiq_queues_from_default.rb delete mode 100644 db/migrate/20161019213545_generate_project_feature_for_projects.rb delete mode 100644 db/migrate/20161020075734_default_request_access_groups.rb delete mode 100644 db/migrate/20161020075830_default_request_access_projects.rb delete mode 100644 db/migrate/20161020083353_add_pipeline_id_to_merge_request_metrics.rb delete mode 100644 db/migrate/20161020180657_add_minimum_key_length_to_application_settings.rb delete mode 100644 db/migrate/20161021114307_add_lock_version_to_build_and_pipelines.rb delete mode 100644 db/migrate/20161024042317_migrate_mailroom_queue_from_default.rb delete mode 100644 db/migrate/20161025231710_migrate_jira_to_gem.rb delete mode 100644 db/migrate/20161031155516_add_housekeeping_to_application_settings.rb delete mode 100644 db/migrate/20161031171301_add_project_id_to_subscriptions.rb delete mode 100644 db/migrate/20161031174110_migrate_subscriptions_project_id.rb delete mode 100644 db/migrate/20161031181638_add_unique_index_to_subscriptions.rb delete mode 100644 db/migrate/20161103171205_rename_repository_storage_column.rb delete mode 100644 db/migrate/20161103191444_add_sidekiq_throttling_to_application_settings.rb delete mode 100644 db/migrate/20161106185620_add_project_import_data_project_index.rb delete mode 100644 db/migrate/20161113184239_create_user_chat_names_table.rb delete mode 100644 db/migrate/20161114024742_add_coverage_regex_to_builds.rb delete mode 100644 db/migrate/20161115173905_add_start_date_to_milestones.rb delete mode 100644 db/migrate/20161118183841_add_commit_events_to_services.rb delete mode 100644 db/migrate/20161124111390_add_parent_id_to_namespace.rb delete mode 100644 db/migrate/20161124111395_add_index_to_parent_id.rb delete mode 100644 db/migrate/20161124111402_add_routes_table.rb delete mode 100644 db/migrate/20161124141322_migrate_process_commit_worker_jobs.rb delete mode 100644 db/migrate/20161128095517_add_in_reply_to_discussion_id_to_sent_notifications.rb delete mode 100644 db/migrate/20161128142110_remove_unnecessary_indexes.rb delete mode 100644 db/migrate/20161128161412_add_html_emails_enabled_to_application_settings.rb delete mode 100644 db/migrate/20161130095245_fill_routes_table.rb delete mode 100644 db/migrate/20161130101252_fill_projects_routes_table.rb delete mode 100644 db/migrate/20161201001911_add_plant_uml_url_to_application_settings.rb delete mode 100644 db/migrate/20161201155511_create_project_statistics.rb delete mode 100644 db/migrate/20161201160452_migrate_project_statistics.rb delete mode 100644 db/migrate/20161202152031_remove_duplicates_from_routes.rb delete mode 100644 db/migrate/20161202152035_add_index_to_routes.rb delete mode 100644 db/migrate/20161206003819_add_plant_uml_enabled_to_application_settings.rb delete mode 100644 db/migrate/20161206153749_remove_uniq_path_index_from_namespace.rb delete mode 100644 db/migrate/20161206153751_add_path_index_to_namespace.rb delete mode 100644 db/migrate/20161206153753_remove_uniq_name_index_from_namespace.rb delete mode 100644 db/migrate/20161206153754_add_name_index_to_namespace.rb delete mode 100644 db/migrate/20161207231620_fixup_environment_name_uniqueness.rb delete mode 100644 db/migrate/20161207231621_create_environment_name_unique_index.rb delete mode 100644 db/migrate/20161207231626_add_environment_slug.rb delete mode 100644 db/migrate/20161209153400_add_unique_index_for_environment_slug.rb delete mode 100644 db/migrate/20161209165216_create_doorkeeper_openid_connect_tables.rb delete mode 100644 db/migrate/20161212142807_add_lower_path_index_to_routes.rb delete mode 100644 db/migrate/20161213172958_change_slack_service_to_slack_notification_service.rb delete mode 100644 db/migrate/20161220141214_remove_dot_git_from_group_names.rb delete mode 100644 db/migrate/20161221152132_add_last_used_at_to_key.rb delete mode 100644 db/migrate/20161223034433_add_estimate_to_issuables_ce.rb delete mode 100644 db/migrate/20161223034646_create_timelogs_ce.rb delete mode 100644 db/migrate/20161226122833_remove_dot_git_from_usernames.rb delete mode 100644 db/migrate/20161227192806_rename_slack_and_mattermost_notification_services.rb delete mode 100644 db/migrate/20161228124936_change_expires_at_to_date_in_personal_access_tokens.rb delete mode 100644 db/migrate/20161228135550_add_impersonation_to_personal_access_tokens.rb delete mode 100644 db/migrate/20170120131253_create_chat_teams.rb delete mode 100644 db/migrate/20170121123724_add_index_to_ci_builds_for_status_runner_id_and_type.rb delete mode 100644 db/migrate/20170121130655_add_index_to_ci_runners_for_is_shared.rb delete mode 100644 db/migrate/20170124174637_add_foreign_keys_to_timelogs.rb delete mode 100644 db/migrate/20170124193147_add_two_factor_columns_to_namespaces.rb delete mode 100644 db/migrate/20170124193205_add_two_factor_columns_to_users.rb delete mode 100644 db/migrate/20170126174819_add_terminal_max_session_time_to_application_settings.rb delete mode 100644 db/migrate/20170127032550_remove_backlog_lists_from_boards.rb delete mode 100644 db/migrate/20170130204620_add_index_to_project_authorizations.rb delete mode 100644 db/migrate/20170130221926_create_uploads.rb delete mode 100644 db/migrate/20170131221752_add_relative_position_to_issues.rb delete mode 100644 db/migrate/20170204172458_add_name_to_route.rb delete mode 100644 db/migrate/20170204181513_add_index_to_labels_for_type_and_project.rb delete mode 100644 db/migrate/20170206071414_add_recaptcha_verified_to_spam_logs.rb delete mode 100644 db/migrate/20170206115204_add_column_ghost_to_users.rb delete mode 100644 db/migrate/20170210062829_add_index_to_labels_for_title_and_project.rb delete mode 100644 db/migrate/20170210075922_add_index_to_ci_trigger_requests_for_commit_id.rb delete mode 100644 db/migrate/20170210103609_add_index_to_user_agent_detail.rb delete mode 100644 db/migrate/20170210131347_add_unique_ips_limit_to_application_settings.rb delete mode 100644 db/migrate/20170214084746_add_default_artifacts_expiration_to_application_settings.rb delete mode 100644 db/migrate/20170216135621_add_index_for_latest_successful_pipeline.rb delete mode 100644 db/migrate/20170216141440_drop_index_for_builds_project_status.rb delete mode 100644 db/migrate/20170217132157_rename_merge_when_build_succeeds.rb delete mode 100644 db/migrate/20170217151947_rename_only_allow_merge_if_build_succeeds.rb delete mode 100644 db/migrate/20170217151948_add_owner_id_to_triggers.rb delete mode 100644 db/migrate/20170217151949_add_description_to_triggers.rb delete mode 100644 db/migrate/20170222111732_create_gpg_keys.rb delete mode 100644 db/migrate/20170222143317_drop_ci_projects.rb delete mode 100644 db/migrate/20170222143500_remove_old_project_id_columns.rb delete mode 100644 db/migrate/20170222143603_rename_gl_project_id_to_project_id.rb delete mode 100644 db/migrate/20170301101006_add_ci_runner_namespaces.rb delete mode 100644 db/migrate/20170301125302_add_printing_merge_request_link_enabled_to_project.rb delete mode 100644 db/migrate/20170301195939_rename_ci_commits_to_ci_pipelines.rb delete mode 100644 db/migrate/20170301205639_remove_unused_ci_tables_and_columns.rb delete mode 100644 db/migrate/20170305180853_add_auto_cancel_pending_pipelines_to_project.rb delete mode 100644 db/migrate/20170305203726_add_owner_id_foreign_key.rb delete mode 100644 db/migrate/20170307125949_add_last_activity_on_to_users.rb delete mode 100644 db/migrate/20170309173138_create_protected_tags.rb delete mode 100644 db/migrate/20170312114329_add_auto_canceled_by_id_to_pipeline.rb delete mode 100644 db/migrate/20170312114529_add_auto_canceled_by_id_foreign_key_to_pipeline.rb delete mode 100644 db/migrate/20170313213916_add_index_to_user_ghost.rb delete mode 100644 db/migrate/20170314082049_create_system_note_metadata.rb delete mode 100644 db/migrate/20170315174634_revert_add_notified_of_own_activity_to_users.rb delete mode 100644 db/migrate/20170315194013_add_closed_at_to_issues.rb delete mode 100644 db/migrate/20170316061730_readd_notified_of_own_activity_to_users.rb delete mode 100644 db/migrate/20170316163845_move_uploads_to_system_dir.rb delete mode 100644 db/migrate/20170317203554_index_routes_path_for_like.rb delete mode 100644 db/migrate/20170320173259_migrate_assignees.rb delete mode 100644 db/migrate/20170322013926_create_container_repository.rb delete mode 100644 db/migrate/20170327091750_add_created_at_index_to_deployments.rb delete mode 100644 db/migrate/20170328010804_add_uuid_to_application_settings.rb delete mode 100644 db/migrate/20170329095325_add_ref_to_triggers.rb delete mode 100644 db/migrate/20170329095907_create_ci_trigger_schedules.rb delete mode 100644 db/migrate/20170329124448_add_polling_interval_multiplier_to_application_settings.rb delete mode 100644 db/migrate/20170330141723_disable_invalid_service_templates2.rb delete mode 100644 db/migrate/20170402231018_remove_index_for_users_current_sign_in_at.rb delete mode 100644 db/migrate/20170404163427_add_trigger_id_foreign_key.rb delete mode 100644 db/migrate/20170405080720_add_import_jid_to_projects.rb delete mode 100644 db/migrate/20170406114958_add_auto_canceled_by_id_to_ci_builds.rb delete mode 100644 db/migrate/20170406115029_add_auto_canceled_by_id_foreign_key_to_ci_builds.rb delete mode 100644 db/migrate/20170407114956_add_ref_to_ci_trigger_schedule.rb delete mode 100644 db/migrate/20170407122426_add_active_to_ci_trigger_schedule.rb delete mode 100644 db/migrate/20170407135259_add_foreigh_key_trigger_requests_trigger.rb delete mode 100644 db/migrate/20170407140450_add_index_to_next_run_at_and_active.rb delete mode 100644 db/migrate/20170410133135_add_version_field_to_markdown_cache.rb delete mode 100644 db/migrate/20170413035209_add_preferred_language_to_users.rb delete mode 100644 db/migrate/20170418103908_delete_orphan_notification_settings.rb delete mode 100644 db/migrate/20170419001229_add_index_to_system_note_metadata.rb delete mode 100644 db/migrate/20170421102337_remove_nil_type_services.rb delete mode 100644 db/migrate/20170424095707_add_index_on_ci_builds_user_id.rb delete mode 100644 db/migrate/20170424142900_add_index_to_web_hooks_type.rb delete mode 100644 db/migrate/20170425112128_create_pipeline_schedules_table.rb delete mode 100644 db/migrate/20170425112628_remove_foreigh_key_ci_trigger_schedules.rb delete mode 100644 db/migrate/20170425114731_add_pipeline_schedule_id_to_pipelines.rb delete mode 100644 db/migrate/20170426175636_fill_missing_uuid_on_application_settings.rb delete mode 100644 db/migrate/20170426181740_add_index_on_ci_runners_contacted_at.rb delete mode 100644 db/migrate/20170427103502_create_web_hook_logs.rb delete mode 100644 db/migrate/20170427215854_create_redirect_routes.rb delete mode 100644 db/migrate/20170428064307_add_column_delete_error_to_projects.rb delete mode 100644 db/migrate/20170502065653_make_auto_cancel_pending_pipelines_on_by_default.rb delete mode 100644 db/migrate/20170502091007_markdown_cache_limits_to_mysql.rb delete mode 100644 db/migrate/20170502135553_create_index_ci_pipelines_auto_canceled_by_id.rb delete mode 100644 db/migrate/20170502140503_create_index_ci_builds_auto_canceled_by_id.rb delete mode 100644 db/migrate/20170503004125_add_last_repository_updated_at_to_projects.rb delete mode 100644 db/migrate/20170503004425_add_index_to_last_repository_updated_at_on_projects.rb delete mode 100644 db/migrate/20170503004426_add_retried_to_ci_build.rb delete mode 100644 db/migrate/20170503021915_add_last_edited_at_and_last_edited_by_id_to_issues.rb delete mode 100644 db/migrate/20170503022548_add_last_edited_at_and_last_edited_by_id_to_merge_requests.rb delete mode 100644 db/migrate/20170503023315_add_repository_update_events_to_web_hooks.rb delete mode 100644 db/migrate/20170503114228_add_description_to_snippets.rb delete mode 100644 db/migrate/20170503140201_reschedule_project_authorizations.rb delete mode 100644 db/migrate/20170503140202_turn_nested_groups_into_regular_groups_for_mysql.rb delete mode 100644 db/migrate/20170503184421_add_index_to_redirect_routes.rb delete mode 100644 db/migrate/20170503185032_index_redirect_routes_path_for_like.rb delete mode 100644 db/migrate/20170504102911_add_clientside_sentry_to_application_settings.rb delete mode 100644 db/migrate/20170504182103_add_index_project_group_links_group_id.rb delete mode 100644 db/migrate/20170506085040_add_index_to_pipeline_pipeline_schedule_id.rb delete mode 100644 db/migrate/20170506091344_add_foreign_key_to_pipeline_schedules.rb delete mode 100644 db/migrate/20170506185517_add_foreign_key_pipeline_schedules_and_pipelines.rb delete mode 100644 db/migrate/20170507205316_add_head_pipeline_id_to_merge_requests.rb delete mode 100644 db/migrate/20170508153950_add_not_null_contraints_to_ci_variables.rb delete mode 100644 db/migrate/20170508190732_add_foreign_key_to_ci_variables.rb delete mode 100644 db/migrate/20170511082759_rename_web_hooks_build_events_to_job_events.rb delete mode 100644 db/migrate/20170511083824_rename_services_build_events_to_job_events.rb delete mode 100644 db/migrate/20170516153305_migrate_assignee_to_separate_table.rb delete mode 100644 db/migrate/20170516183131_add_indices_to_issue_assignees.rb delete mode 100644 db/migrate/20170519102115_add_prometheus_settings_to_metrics_settings.rb delete mode 100644 db/migrate/20170521184006_add_change_position_to_notes.rb delete mode 100644 db/migrate/20170523091700_add_rss_token_to_users.rb delete mode 100644 db/migrate/20170523121229_create_conversational_development_index_metrics.rb delete mode 100644 db/migrate/20170524125940_add_source_to_ci_pipeline.rb delete mode 100644 db/migrate/20170524161101_add_protected_to_ci_variables.rb delete mode 100644 db/migrate/20170525130346_create_group_variables_table.rb delete mode 100644 db/migrate/20170525130758_add_foreign_key_to_group_variables.rb delete mode 100644 db/migrate/20170525132202_create_pipeline_stages.rb delete mode 100644 db/migrate/20170525174156_create_feature_tables.rb delete mode 100644 db/migrate/20170526185602_add_stage_id_to_ci_builds.rb delete mode 100644 db/migrate/20170530130129_project_foreign_keys_with_cascading_deletes.rb delete mode 100644 db/migrate/20170531180233_add_authorized_keys_enabled_to_application_settings.rb delete mode 100644 db/migrate/20170531202042_rename_users_ldap_email_to_external_email.rb delete mode 100644 db/migrate/20170601163708_add_artifacts_store_to_ci_build.rb delete mode 100644 db/migrate/20170602154736_add_help_page_hide_commercial_content_to_application_settings.rb delete mode 100644 db/migrate/20170602154813_add_help_page_support_url_to_application_settings.rb delete mode 100644 db/migrate/20170603200744_add_email_provider_to_users.rb delete mode 100644 db/migrate/20170606154216_add_notification_setting_columns.rb delete mode 100644 db/migrate/20170608152747_prepare_events_table_for_push_events_migration.rb delete mode 100644 db/migrate/20170608152748_create_push_event_payloads_tables.rb delete mode 100644 db/migrate/20170608171156_create_merge_request_diff_files.rb delete mode 100644 db/migrate/20170613154149_create_gpg_signatures.rb delete mode 100644 db/migrate/20170614115405_merge_request_diff_file_limits_to_mysql.rb delete mode 100644 db/migrate/20170616133147_create_merge_request_diff_commits.rb delete mode 100644 db/migrate/20170619144837_add_index_for_head_pipeline_merge_request.rb delete mode 100644 db/migrate/20170620064728_create_ci_pipeline_schedule_variables.rb delete mode 100644 db/migrate/20170620065449_add_foreign_key_to_ci_pipeline_schedule_variables.rb delete mode 100644 db/migrate/20170622130029_correct_protected_branches_foreign_keys.rb delete mode 100644 db/migrate/20170622132212_add_foreign_key_for_merge_request_diffs.rb delete mode 100644 db/migrate/20170622135451_rename_duplicated_variable_key.rb delete mode 100644 db/migrate/20170622135628_add_environment_scope_to_ci_variables.rb delete mode 100644 db/migrate/20170622135728_add_unique_constraint_to_ci_variables.rb delete mode 100644 db/migrate/20170622162730_add_ref_fetched_to_merge_request.rb delete mode 100644 db/migrate/20170623080805_remove_ci_variables_project_id_index.rb delete mode 100644 db/migrate/20170629171610_rename_application_settings_signin_enabled_to_password_authentication_enabled.rb delete mode 100644 db/migrate/20170703102400_add_stage_id_foreign_key_to_builds.rb delete mode 100644 db/migrate/20170706151212_add_performance_bar_allowed_group_id_to_application_settings.rb delete mode 100644 db/migrate/20170707183807_add_group_id_to_milestones.rb delete mode 100644 db/migrate/20170707184243_add_group_milestone_id_indexes.rb delete mode 100644 db/migrate/20170707184244_remove_wrong_versions_from_schema_versions.rb delete mode 100644 db/migrate/20170710083355_clean_stage_id_reference_migration.rb delete mode 100644 db/migrate/20170711145320_add_status_to_ci_stages.rb delete mode 100644 db/migrate/20170713104829_add_foreign_key_to_merge_requests.rb delete mode 100644 db/migrate/20170717074009_move_system_upload_folder.rb delete mode 100644 db/migrate/20170717200542_add_trusted_column_to_oauth_applications.rb delete mode 100644 db/migrate/20170720111708_add_lock_version_to_ci_stages.rb delete mode 100644 db/migrate/20170720122741_create_user_custom_attributes.rb delete mode 100644 db/migrate/20170720130522_create_ci_pipeline_variables.rb delete mode 100644 db/migrate/20170720130749_add_foreign_key_to_ci_pipeline_variables.rb delete mode 100644 db/migrate/20170724214302_add_lower_path_index_to_redirect_routes.rb delete mode 100644 db/migrate/20170725145659_add_binary_to_merge_request_diff_files.rb delete mode 100644 db/migrate/20170727123534_add_index_on_events_project_id_id.rb delete mode 100644 db/migrate/20170731175128_add_percentages_to_conv_dev.rb delete mode 100644 db/migrate/20170731183033_add_merge_jid_to_merge_requests.rb delete mode 100644 db/migrate/20170802013652_add_storage_fields_to_project.rb delete mode 100644 db/migrate/20170803130232_reorganise_issues_indexes_for_faster_sorting.rb delete mode 100644 db/migrate/20170807071105_add_hashed_storage_to_settings.rb delete mode 100644 db/migrate/20170809134534_add_broadcast_message_not_null_constraints.rb delete mode 100644 db/migrate/20170809142252_cleanup_appearances_schema.rb delete mode 100644 db/migrate/20170809161910_add_project_export_enabled_to_application_settings.rb delete mode 100644 db/migrate/20170815221154_add_discussion_locked_to_issuable.rb delete mode 100644 db/migrate/20170816133938_add_access_level_to_ci_runners.rb delete mode 100644 db/migrate/20170816133940_add_protected_to_ci_builds.rb delete mode 100644 db/migrate/20170816143940_add_protected_to_ci_pipelines.rb delete mode 100644 db/migrate/20170816153940_add_index_on_ci_builds_protected.rb delete mode 100644 db/migrate/20170816234252_add_theme_id_to_users.rb delete mode 100644 db/migrate/20170817123339_add_verification_status_to_gpg_signatures.rb delete mode 100644 db/migrate/20170820100558_correct_protected_tags_foreign_keys.rb delete mode 100644 db/migrate/20170820120108_create_user_synced_attributes_metadata.rb delete mode 100644 db/migrate/20170824101926_add_auto_devops_enabled_to_application_settings.rb delete mode 100644 db/migrate/20170824162758_allow_appearances_description_html_null.rb delete mode 100644 db/migrate/20170825015534_add_file_store_to_lfs_objects.rb delete mode 100644 db/migrate/20170825104051_migrate_issues_to_ghost_user.rb delete mode 100644 db/migrate/20170825154015_resolve_outdated_diff_discussions.rb delete mode 100644 db/migrate/20170827123848_add_index_on_merge_request_diff_commit_sha.rb delete mode 100644 db/migrate/20170828093725_create_project_auto_dev_ops.rb delete mode 100644 db/migrate/20170828135939_migrate_user_external_mail_data.rb delete mode 100644 db/migrate/20170830125940_add_failure_reason_to_ci_builds.rb delete mode 100644 db/migrate/20170830130119_steal_remaining_event_migration_jobs.rb delete mode 100644 db/migrate/20170830131015_swap_event_migration_tables.rb delete mode 100644 db/migrate/20170831092813_add_config_source_to_pipelines.rb delete mode 100644 db/migrate/20170901071411_add_foreign_key_to_issue_author.rb delete mode 100644 db/migrate/20170904092148_add_email_confirmation.rb delete mode 100644 db/migrate/20170905112933_add_resolved_by_push_to_notes.rb delete mode 100644 db/migrate/20170906133745_add_runners_token_to_groups.rb delete mode 100644 db/migrate/20170909090114_add_email_confirmation_index.rb delete mode 100644 db/migrate/20170909150936_add_spent_at_to_timelogs.rb delete mode 100644 db/migrate/20170912113435_clean_stages_statuses_migration.rb delete mode 100644 db/migrate/20170913131410_environments_project_id_not_null.rb delete mode 100644 db/migrate/20170914135630_add_index_for_recent_push_events.rb delete mode 100644 db/migrate/20170918072948_create_job_artifacts.rb delete mode 100644 db/migrate/20170918072949_add_file_store_job_artifacts.rb delete mode 100644 db/migrate/20170918111708_create_project_custom_attributes.rb delete mode 100644 db/migrate/20170918140927_create_group_custom_attributes.rb delete mode 100644 db/migrate/20170918222253_reorganize_deployments_indexes.rb delete mode 100644 db/migrate/20170918223303_add_deployments_index_for_last_deployment.rb delete mode 100644 db/migrate/20170919211300_remove_temporary_ci_builds_index.rb delete mode 100644 db/migrate/20170921115009_add_project_repository_storage_index.rb delete mode 100644 db/migrate/20170924094327_create_gcp_clusters.rb delete mode 100644 db/migrate/20170925184228_add_favicon_to_appearances.rb delete mode 100644 db/migrate/20170927095921_add_ci_builds_index_for_jobscontroller.rb delete mode 100644 db/migrate/20170927122209_add_partial_index_for_labels_template.rb delete mode 100644 db/migrate/20170927161718_create_gpg_key_subkeys.rb delete mode 100644 db/migrate/20170928100231_add_composite_index_on_merge_requests_merge_commit_sha.rb delete mode 100644 db/migrate/20170928124105_create_fork_networks.rb delete mode 100644 db/migrate/20170928133643_create_fork_network_members.rb delete mode 100644 db/migrate/20170929080234_add_failure_reason_to_pipelines.rb delete mode 100644 db/migrate/20170929131201_populate_fork_networks.rb delete mode 100644 db/migrate/20171004121444_make_sure_fast_forward_option_exists.rb delete mode 100644 db/migrate/20171006090001_create_ci_build_trace_sections.rb delete mode 100644 db/migrate/20171006090010_add_build_foreign_key_to_ci_build_trace_sections.rb delete mode 100644 db/migrate/20171006090100_create_ci_build_trace_section_names.rb delete mode 100644 db/migrate/20171006091000_add_name_foreign_key_to_ci_build_trace_sections.rb delete mode 100644 db/migrate/20171006220837_add_global_rate_limits_to_application_settings.rb delete mode 100644 db/migrate/20171012101043_add_circuit_breaker_properties_to_application_settings.rb delete mode 100644 db/migrate/20171012125712_migrate_user_authentication_token_to_personal_access_token.rb delete mode 100644 db/migrate/20171013094327_create_new_clusters_architectures.rb delete mode 100644 db/migrate/20171017145932_add_new_circuitbreaker_settings_to_application_settings.rb delete mode 100644 db/migrate/20171019141859_fix_dev_timezone_schema.rb delete mode 100644 db/migrate/20171025110159_add_latest_merge_request_diff_id_to_merge_requests.rb delete mode 100644 db/migrate/20171031100710_create_clusters_kubernetes_helm_apps.rb delete mode 100644 db/migrate/20171101130535_add_gitaly_timeout_properties_to_application_settings.rb delete mode 100644 db/migrate/20171103000000_set_uploads_path_size_for_mysql.rb delete mode 100644 db/migrate/20171106101200_create_clusters_kubernetes_ingress_apps.rb delete mode 100644 db/migrate/20171106132212_issues_confidential_not_null.rb delete mode 100644 db/migrate/20171106133143_rename_application_settings_password_authentication_enabled_to_password_authentication_enabled_for_web.rb delete mode 100644 db/migrate/20171106133911_add_password_authentication_enabled_for_git_to_application_settings.rb delete mode 100644 db/migrate/20171106135924_issues_milestone_id_foreign_key.rb delete mode 100644 db/migrate/20171106150657_issues_updated_by_id_foreign_key.rb delete mode 100644 db/migrate/20171106151218_issues_moved_to_id_foreign_key.rb delete mode 100644 db/migrate/20171106155656_turn_issues_due_date_index_to_partial_index.rb delete mode 100644 db/migrate/20171106171453_add_timezone_to_issues_closed_at.rb delete mode 100644 db/migrate/20171114150259_merge_requests_author_id_foreign_key.rb delete mode 100644 db/migrate/20171114160005_merge_requests_assignee_id_foreign_key.rb delete mode 100644 db/migrate/20171114160904_merge_requests_updated_by_id_foreign_key.rb delete mode 100644 db/migrate/20171114161720_merge_requests_merge_user_id_foreign_key.rb delete mode 100644 db/migrate/20171114161914_merge_requests_source_project_id_foreign_key.rb delete mode 100644 db/migrate/20171114162227_merge_requests_milestone_id_foreign_key.rb delete mode 100644 db/migrate/20171115164540_populate_merge_requests_latest_merge_request_diff_id_take_two.rb delete mode 100644 db/migrate/20171116135628_add_environment_scope_to_clusters.rb delete mode 100644 db/migrate/20171121144800_ci_pipelines_index_on_project_id_ref_status_id.rb delete mode 100644 db/migrate/20171122131600_add_new_project_guidelines_to_appearances.rb delete mode 100644 db/migrate/20171123094802_add_circuitbreaker_check_interval_to_application_settings.rb delete mode 100644 db/migrate/20171124125042_add_default_values_to_merge_request_states.rb delete mode 100644 db/migrate/20171124125748_populate_missing_merge_request_statuses.rb delete mode 100644 db/migrate/20171124132536_make_merge_request_statuses_not_null.rb delete mode 100644 db/migrate/20171127151038_add_events_related_columns_to_merge_request_metrics.rb delete mode 100644 db/migrate/20171204204233_add_permanent_to_redirect_route.rb delete mode 100644 db/migrate/20171206221519_add_permanent_index_to_redirect_route.rb delete mode 100644 db/migrate/20171207185153_add_merge_request_state_index.rb delete mode 100644 db/migrate/20171211131502_add_external_classification_authorization_settings_to_appliction_settings.rb delete mode 100644 db/migrate/20171211145425_add_can_push_to_deploy_keys_projects.rb delete mode 100644 db/migrate/20171212203433_create_clusters_applications_prometheus.rb delete mode 100644 db/migrate/20171214144320_add_store_column_to_uploads.rb delete mode 100644 db/migrate/20171215113714_populate_can_push_from_deploy_keys_projects.rb delete mode 100644 db/migrate/20171216112339_add_foreign_key_for_members.rb delete mode 100644 db/migrate/20171218140451_add_external_authorization_service_classification_label_to_projects.rb delete mode 100644 db/migrate/20171220191323_add_index_on_namespaces_lower_name.rb delete mode 100644 db/migrate/20171222115326_add_confidential_note_events_to_web_hooks.rb delete mode 100644 db/migrate/20171222183504_add_jobs_cache_index_to_project.rb delete mode 100644 db/migrate/20171229225929_change_user_project_limit_not_null_and_remove_default.rb delete mode 100644 db/migrate/20171230123729_add_rebase_commit_sha_to_merge_requests_ce.rb create mode 100644 db/migrate/20171230123729_init_schema.rb create mode 100644 db/migrate/20190513174947_enable_create_incident_issues_by_default.rb rename db/{post_migrate/20170503120310_remove_users_authorized_projects_populated.rb => migrate/20190527011309_add_required_template_name_to_application_settings.rb} (58%) create mode 100644 db/migrate/20190531153110_create_namespace_root_storage_statistics.rb create mode 100644 db/migrate/20190605184422_create_namespace_aggregation_schedules.rb create mode 100644 db/migrate/20190606054649_change_operations_feature_flags_clients_token_not_null.rb create mode 100644 db/migrate/20190606054742_add_token_encrypted_to_operations_feature_flags_clients.rb create mode 100644 db/migrate/20190606054832_add_index_to_operations_feature_flags_clients_token_encrypted.rb rename db/migrate/{20170809133343_add_broadcast_messages_index.rb => 20190607085356_add_source_to_pages_domains.rb} (58%) create mode 100644 db/migrate/20190607145325_add_pages_domains_ssl_renew_index.rb create mode 100644 db/migrate/20190607205656_add_wiki_columns_to_index_status.rb rename db/migrate/{20170423064036_add_index_on_ci_builds_updated_at.rb => 20190611090827_add_time_tracking_limit_to_hours_to_application_settings.rb} (51%) create mode 100644 db/migrate/20190613044655_add_username_to_deploy_tokens.rb create mode 100644 db/migrate/20190613073003_create_project_aliases.rb create mode 100644 db/migrate/20190617123615_add_grafana_to_settings.rb create mode 100644 db/migrate/20190620105427_change_null_private_profile_to_false.rb create mode 100644 db/migrate/20190621022810_add_last_ci_minutes_usage_notification_level_to_namespaces.rb create mode 100644 db/migrate/20190621151636_add_merge_request_rebase_jid.rb create mode 100644 db/migrate/20190623212503_add_cluster_id_to_deployments.rb create mode 100644 db/migrate/20190624123615_add_grafana_url_to_settings.rb rename db/migrate/{20160901213340_add_lfs_enabled_to_namespaces.rb => 20190625115224_add_description_to_services.rb} (59%) create mode 100644 db/migrate/20190627051902_add_cluster_id_index_fk_to_deployments.rb create mode 100644 db/migrate/20190628145246_add_strategies_to_operations_feature_flag_scopes.rb create mode 100644 db/migrate/20190628185000_add_released_at_to_releases_table.rb create mode 100644 db/migrate/20190628185004_backfill_and_add_not_null_constraint_to_released_at_column_on_releases_table.rb create mode 100644 db/migrate/20190703130053_remove_gitaly_feature_flags.rb create mode 100644 db/migrate/20190709204413_add_rule_type_to_approval_project_rules.rb create mode 100644 db/migrate/20190710151229_add_index_to_approval_project_rules_rule_type.rb delete mode 100644 db/post_migrate/20160824121037_change_personal_access_tokens_default_back_to_empty_array.rb delete mode 100644 db/post_migrate/20161011222551_remove_inactive_jira_service_properties.rb delete mode 100644 db/post_migrate/20161109150329_fix_project_records_with_invalid_visibility.rb delete mode 100644 db/post_migrate/20161128170531_drop_user_activities_table.rb delete mode 100644 db/post_migrate/20161221140236_remove_unneeded_services.rb delete mode 100644 db/post_migrate/20161221153951_rename_reserved_project_names.rb delete mode 100644 db/post_migrate/20170104150317_requeue_pending_delete_projects.rb delete mode 100644 db/post_migrate/20170106142508_fill_authorized_projects.rb delete mode 100644 db/post_migrate/20170106172224_remove_project_authorizations_id_column.rb delete mode 100644 db/post_migrate/20170131214021_reset_users_authorized_projects_populated.rb delete mode 100644 db/post_migrate/20170206040400_remove_inactive_default_email_services.rb delete mode 100644 db/post_migrate/20170206101007_remove_trackable_columns_from_timelogs.rb delete mode 100644 db/post_migrate/20170206101030_validate_foreign_keys_on_timelogs.rb delete mode 100644 db/post_migrate/20170209140523_validate_foreign_keys_on_oauth_openid_requests.rb delete mode 100644 db/post_migrate/20170211073944_disable_invalid_service_templates.rb delete mode 100644 db/post_migrate/20170214111112_delete_deprecated_gitlab_ci_service.rb delete mode 100644 db/post_migrate/20170215200045_remove_theme_id_from_users.rb delete mode 100644 db/post_migrate/20170301205640_migrate_build_events_to_pipeline_events.rb delete mode 100644 db/post_migrate/20170306170512_migrate_legacy_manual_actions.rb delete mode 100644 db/post_migrate/20170309171644_reset_relative_position_for_issue.rb delete mode 100644 db/post_migrate/20170313133418_rename_more_reserved_project_names.rb delete mode 100644 db/post_migrate/20170317162059_update_upload_paths_to_system.rb delete mode 100644 db/post_migrate/20170324160416_migrate_user_activities_to_users_last_activity_on.rb delete mode 100644 db/post_migrate/20170404170532_remove_notes_original_discussion_id.rb delete mode 100644 db/post_migrate/20170406111121_clean_upload_symlinks.rb delete mode 100644 db/post_migrate/20170406142253_migrate_user_project_view.rb delete mode 100644 db/post_migrate/20170408033905_remove_old_cache_directories.rb delete mode 100644 db/post_migrate/20170412174900_rename_reserved_dynamic_paths.rb delete mode 100644 db/post_migrate/20170425121605_migrate_trigger_schedules_to_pipeline_schedules.rb delete mode 100644 db/post_migrate/20170425130047_drop_ci_trigger_schedules_table.rb delete mode 100644 db/post_migrate/20170502070007_enable_auto_cancel_pending_pipelines_for_all.rb delete mode 100644 db/post_migrate/20170503004427_update_retried_for_ci_build.rb delete mode 100644 db/post_migrate/20170508170547_add_head_pipeline_for_each_merge_request.rb delete mode 100644 db/post_migrate/20170510101043_add_foreign_key_on_pipeline_schedule_owner.rb delete mode 100644 db/post_migrate/20170511100900_cleanup_rename_web_hooks_build_events_to_job_events.rb delete mode 100644 db/post_migrate/20170511101000_cleanup_rename_services_build_events_to_job_events.rb delete mode 100644 db/post_migrate/20170516165238_cleanup_trigger_for_issues.rb delete mode 100644 db/post_migrate/20170516181025_add_constraints_to_issue_assignees_table.rb delete mode 100644 db/post_migrate/20170518200835_rename_users_with_renamed_namespace.rb delete mode 100644 db/post_migrate/20170518231126_fix_wrongly_renamed_routes.rb delete mode 100644 db/post_migrate/20170523073948_remove_assignee_id_from_issue.rb delete mode 100644 db/post_migrate/20170523083112_migrate_old_artifacts.rb delete mode 100644 db/post_migrate/20170525140254_rename_all_reserved_paths_again.rb delete mode 100644 db/post_migrate/20170526185842_migrate_pipeline_stages.rb delete mode 100644 db/post_migrate/20170526185858_create_index_in_pipeline_stages.rb delete mode 100644 db/post_migrate/20170526185901_remove_stage_id_index_from_builds.rb delete mode 100644 db/post_migrate/20170526185921_migrate_build_stage_reference.rb delete mode 100644 db/post_migrate/20170526190000_migrate_build_stage_reference_again.rb delete mode 100644 db/post_migrate/20170531203055_cleanup_users_ldap_email_rename.rb delete mode 100644 db/post_migrate/20170606202615_move_appearance_to_system_dir.rb delete mode 100644 db/post_migrate/20170607121233_convert_custom_notification_settings_to_columns.rb delete mode 100644 db/post_migrate/20170609183112_remove_position_from_issuables.rb delete mode 100644 db/post_migrate/20170612071012_move_personal_snippets_files.rb delete mode 100644 db/post_migrate/20170613111224_clean_appearance_symlinks.rb delete mode 100644 db/post_migrate/20170621102400_add_stage_id_index_to_builds.rb delete mode 100644 db/post_migrate/20170627101016_schedule_event_migrations.rb delete mode 100644 db/post_migrate/20170628080858_migrate_stage_id_reference_in_background.rb delete mode 100644 db/post_migrate/20170629180131_cleanup_application_settings_signin_enabled_rename.rb delete mode 100644 db/post_migrate/20170711145558_migrate_stages_statuses.rb delete mode 100644 db/post_migrate/20170717111152_cleanup_move_system_upload_folder_symlink.rb delete mode 100644 db/post_migrate/20170717150329_enqueue_migrate_system_uploads_to_new_folder.rb delete mode 100644 db/post_migrate/20170719150301_merge_issuable_reopened_into_opened_state.rb delete mode 100644 db/post_migrate/20170728101014_remove_events_from_notification_settings.rb delete mode 100644 db/post_migrate/20170803090603_calculate_conv_dev_index_percentages.rb delete mode 100644 db/post_migrate/20170807160457_remove_locked_at_column_from_merge_requests.rb delete mode 100644 db/post_migrate/20170807190736_move_personal_snippet_files_into_correct_folder.rb delete mode 100644 db/post_migrate/20170815060945_remove_duplicate_mr_events.rb delete mode 100644 db/post_migrate/20170816102555_cleanup_nonexisting_namespace_pending_delete_projects.rb delete mode 100644 db/post_migrate/20170822101017_migrate_pipeline_sidekiq_queues.rb delete mode 100644 db/post_migrate/20170828170502_post_deploy_migrate_user_external_mail_data.rb delete mode 100644 db/post_migrate/20170828170513_remove_user_email_provider_column.rb delete mode 100644 db/post_migrate/20170828170516_remove_user_external_mail_columns.rb delete mode 100644 db/post_migrate/20170830084744_destroy_gpg_signatures.rb delete mode 100644 db/post_migrate/20170830150306_drop_events_for_migration_table.rb delete mode 100644 db/post_migrate/20170831195038_remove_valid_signature_from_gpg_signatures.rb delete mode 100644 db/post_migrate/20170907170235_delete_conflicting_redirect_routes.rb delete mode 100644 db/post_migrate/20170913180600_fix_projects_without_project_feature.rb delete mode 100644 db/post_migrate/20170921101004_normalize_ldap_extern_uids.rb delete mode 100644 db/post_migrate/20170927112318_update_legacy_diff_notes_type_for_import.rb delete mode 100644 db/post_migrate/20170927112319_update_notes_type_for_import.rb delete mode 100644 db/post_migrate/20171012150314_remove_user_authentication_token.rb delete mode 100644 db/post_migrate/20171013104327_migrate_gcp_clusters_to_new_clusters_architectures.rb delete mode 100644 db/post_migrate/20171026082505_schedule_merge_request_latest_merge_request_diff_id_migrations.rb delete mode 100644 db/post_migrate/20171101134435_remove_ref_fetched_from_merge_requests.rb delete mode 100644 db/post_migrate/20171103140253_track_untracked_uploads.rb delete mode 100644 db/post_migrate/20171106133144_cleanup_application_settings_password_authentication_enabled_rename.rb delete mode 100644 db/post_migrate/20171106154015_remove_issues_branch_name.rb delete mode 100644 db/post_migrate/20171106180641_cleanup_add_timezone_to_issues_closed_at.rb delete mode 100644 db/post_migrate/20171114104051_remove_empty_fork_networks.rb delete mode 100644 db/post_migrate/20171121160421_remove_merge_request_diff_st_commits_and_st_diffs.rb delete mode 100644 db/post_migrate/20171123101020_update_circuitbreaker_defaults.rb delete mode 100644 db/post_migrate/20171123101046_remove_old_circuitbreaker_config.rb delete mode 100644 db/post_migrate/20171124095655_add_index_on_merge_request_diffs_merge_request_id_and_id.rb delete mode 100644 db/post_migrate/20171124100152_remove_index_on_merge_request_diffs_merge_request_diff_id.rb delete mode 100644 db/post_migrate/20171124104327_migrate_kubernetes_service_to_new_clusters_architectures.rb delete mode 100644 db/post_migrate/20171124150326_reschedule_fork_network_creation.rb delete mode 100644 db/post_migrate/20171205190711_reschedule_fork_network_creation_caller.rb delete mode 100644 db/post_migrate/20171207150300_remove_project_labels_group_id_copy.rb delete mode 100644 db/post_migrate/20171207150344_remove_deleted_at_columns.rb delete mode 100644 db/post_migrate/20171213160445_migrate_github_importer_advance_stage_sidekiq_queue.rb delete mode 100644 db/post_migrate/20171215121205_post_populate_can_push_from_deploy_keys_projects.rb delete mode 100644 db/post_migrate/20171215121259_remove_can_push_from_keys.rb delete mode 100644 db/post_migrate/20171219121201_normalize_extern_uid_from_identities.rb delete mode 100644 db/post_migrate/20171221140220_schedule_issues_closed_at_type_change.rb delete mode 100644 db/post_migrate/20180202111106_remove_project_labels_group_id.rb create mode 100644 db/post_migrate/20190606163724_migrate_legacy_managed_clusters_to_unmanaged.rb create mode 100644 db/post_migrate/20190606175050_encrypt_feature_flags_clients_tokens.rb create mode 100644 db/post_migrate/20190613231640_migrate_managed_clusters_with_no_token_to_unmanaged.rb create mode 100644 db/post_migrate/20190618171120_update_geo_nodes_primary.rb create mode 100644 db/post_migrate/20190619175843_remove_import_columns_from_projects.rb create mode 100644 db/post_migrate/20190620112608_enqueue_reset_merge_status_second_run.rb create mode 100644 db/post_migrate/20190625184066_remove_sentry_from_application_settings.rb create mode 100644 db/post_migrate/20190628191740_schedule_fixing_names_of_user_namespaces.rb create mode 100644 db/post_migrate/20190702173936_populate_remaining_merge_request_assignees.rb create mode 100644 db/post_migrate/20190703185326_fix_wrong_pages_access_level.rb create mode 100644 db/post_migrate/20190715114644_drop_project_features_pages_access_level_default.rb rename doc/administration/{ => img}/audit_log.png (100%) rename doc/administration/{ => img}/auditor_access_form.png (100%) create mode 100644 doc/administration/pages/img/lets_encrypt_integration_v12_1.png create mode 100644 doc/api/dependencies.md create mode 100644 doc/api/graphql/reference/index.md create mode 100644 doc/api/group_clusters.md create mode 100644 doc/api/project_aliases.md create mode 100644 doc/api/releases/img/upcoming_release_v12_1.png create mode 100644 doc/ci/img/collapsible_log.png rename doc/ci/merge_request_pipelines/{ => pipelines_for_merged_results}/img/merge_request_pipeline.png (100%) rename doc/ci/merge_request_pipelines/{ => pipelines_for_merged_results}/img/merge_request_pipeline_config.png (100%) create mode 100644 doc/ci/merge_request_pipelines/pipelines_for_merged_results/index.md rename doc/ci/merge_request_pipelines/{img/merge_train_cancel.png => pipelines_for_merged_results/merge_trains/img/merge_train_cancel_v12_0.png} (100%) rename doc/ci/merge_request_pipelines/{img/merge_train_config.png => pipelines_for_merged_results/merge_trains/img/merge_train_config_v12_0.png} (100%) rename doc/ci/merge_request_pipelines/{img/merge_train_start.png => pipelines_for_merged_results/merge_trains/img/merge_train_start_v12_0.png} (100%) rename doc/ci/merge_request_pipelines/{img/merge_train_start_when_pipeline_succeeds.png => pipelines_for_merged_results/merge_trains/img/merge_train_start_when_pipeline_succeeds_v12_0.png} (100%) create mode 100644 doc/ci/merge_request_pipelines/pipelines_for_merged_results/merge_trains/index.md create mode 100644 doc/development/code_comments.md create mode 100644 doc/development/feature_flags/controls.md create mode 100644 doc/development/feature_flags/development.md create mode 100644 doc/development/feature_flags/index.md create mode 100644 doc/development/feature_flags/process.md create mode 100644 doc/development/lfs.md create mode 100644 doc/development/repository_mirroring.md delete mode 100644 doc/development/testing_guide/img/qa_on_merge_requests_cicd_architecture.png delete mode 100644 doc/development/testing_guide/img/review_apps_cicd_architecture.png delete mode 100644 doc/install/database_mysql.md create mode 100644 doc/topics/application_development_platform/index.md create mode 100644 doc/user/admin_area/settings/img/admin_required_pipeline.png create mode 100644 doc/user/application_security/dependency_scanning/analyzers.md create mode 100644 doc/user/application_security/license_management/img/license_management_add_license.png create mode 100644 doc/user/application_security/license_management/img/license_management_search.png delete mode 100644 doc/user/discussions/img/btn_new_issue_for_all_discussions.png create mode 100644 doc/user/discussions/img/btn_new_issue_for_all_threads.png delete mode 100644 doc/user/discussions/img/discussion_view.png create mode 100644 doc/user/discussions/img/new_issue_for_thread.png create mode 100644 doc/user/discussions/img/only_allow_merge_if_all_threads_are_resolved.png create mode 100644 doc/user/discussions/img/preview_issue_for_thread.png create mode 100644 doc/user/discussions/img/preview_issue_for_threads.png create mode 100644 doc/user/discussions/img/resolve_thread_button.png create mode 100644 doc/user/discussions/img/resolve_thread_issue_notice.png create mode 100644 doc/user/discussions/img/resolve_thread_open_issue.png create mode 100644 doc/user/discussions/img/thread_view.png create mode 100644 doc/user/discussions/img/threads_resolved.png delete mode 100644 doc/user/img/color_inline_colorchip_render_gfm.png delete mode 100644 doc/user/img/markdown_inline_diffs_tags_rendered.png delete mode 100644 doc/user/img/math_inline_sup_render_gfm.png delete mode 100644 doc/user/img/task_list_ordered_render_gfm.png delete mode 100644 doc/user/profile/account/img/2fa.png delete mode 100644 doc/user/profile/account/img/2fa_auth.png delete mode 100644 doc/user/profile/account/img/2fa_u2f_authenticate.png delete mode 100644 doc/user/profile/account/img/2fa_u2f_register.png create mode 100644 doc/user/project/autocomplete_characters.md create mode 100644 doc/user/project/clusters/serverless/img/function-endpoint.png create mode 100755 doc/user/project/img/autocomplete_characters_example1_v12_0.png create mode 100755 doc/user/project/img/autocomplete_characters_example2_v12_0.png delete mode 100644 doc/user/project/img/file_lock_folders.png delete mode 100644 doc/user/project/img/file_lock_list.png delete mode 100644 doc/user/project/integrations/img/jira_service_close_comment.png create mode 100644 doc/user/project/integrations/img/prometheus_dashboard_area_panel_type.png create mode 100644 doc/user/project/integrations/img/prometheus_dashboard_single_stat_panel_type.png create mode 100644 doc/user/project/issues/managing_issues.md create mode 100644 doc/user/project/pages/custom_domains_ssl_tls_certification/dns_concepts.md rename doc/user/project/pages/{ => custom_domains_ssl_tls_certification}/img/add_certificate_to_pages.png (100%) rename doc/user/project/pages/{ => custom_domains_ssl_tls_certification}/img/dns_add_new_a_record_example_updated_2018.png (100%) rename doc/user/project/pages/{ => custom_domains_ssl_tls_certification}/img/dns_cname_record_example.png (100%) create mode 100644 doc/user/project/pages/custom_domains_ssl_tls_certification/img/get_domain_verification_code_v12_0.png create mode 100644 doc/user/project/pages/custom_domains_ssl_tls_certification/img/lets_encrypt_integration_v12_1.png create mode 100644 doc/user/project/pages/custom_domains_ssl_tls_certification/img/retry_domain_verification_v12_0.png create mode 100644 doc/user/project/pages/custom_domains_ssl_tls_certification/index.md create mode 100644 doc/user/project/pages/custom_domains_ssl_tls_certification/lets_encrypt_integration.md create mode 100644 doc/user/project/pages/custom_domains_ssl_tls_certification/ssl_tls_concepts.md rename doc/user/project/pages/img/{pages_project_templates_11-8.png => pages_project_templates_v11_8.png} (100%) delete mode 100644 doc/user/project/pages/img/verify_your_domain.png rename doc/workflow/{ => img}/ci_mr.png (100%) rename doc/workflow/{ => img}/close_issue_mr.png (100%) rename doc/workflow/{ => img}/environment_branches.png (100%) rename doc/workflow/{ => img}/four_stages.png (100%) rename doc/workflow/{ => img}/git_pull.png (100%) rename doc/workflow/{ => img}/gitdashflow.png (100%) rename doc/workflow/{ => img}/github_flow.png (100%) rename doc/workflow/{ => img}/gitlab_flow.png (100%) rename doc/workflow/{ => img}/good_commit.png (100%) rename doc/workflow/{ => img}/merge_commits.png (100%) rename doc/workflow/{ => img}/merge_request.png (100%) rename doc/workflow/{ => img}/messy_flow.png (100%) rename doc/workflow/{ => img}/mr_inline_comments.png (100%) rename doc/workflow/{ => img}/production_branch.png (100%) rename doc/workflow/{ => img}/rebase.png (100%) rename doc/workflow/{ => img}/release_branches.png (100%) rename doc/workflow/{ => img}/remove_checkbox.png (100%) create mode 100644 lib/api/group_clusters.rb create mode 100644 lib/api/user_counts.rb create mode 100644 lib/banzai/filter/ascii_doc_sanitization_filter.rb create mode 100644 lib/banzai/filter/base_sanitization_filter.rb create mode 100644 lib/banzai/filter/inline_embeds_filter.rb create mode 100644 lib/banzai/filter/inline_metrics_filter.rb create mode 100644 lib/banzai/filter/inline_metrics_redactor_filter.rb rename lib/banzai/filter/{redactor_filter.rb => reference_redactor_filter.rb} (82%) rename lib/banzai/{redactor.rb => reference_redactor.rb} (99%) create mode 100644 lib/gitlab/asciidoc/syntax_highlighter/html_pipeline_adapter.rb delete mode 100644 lib/gitlab/background_migration/create_fork_network_memberships_range.rb delete mode 100644 lib/gitlab/background_migration/delete_conflicting_redirect_routes_range.rb create mode 100644 lib/gitlab/background_migration/fix_pages_access_level.rb create mode 100644 lib/gitlab/background_migration/fix_user_namespace_names.rb create mode 100644 lib/gitlab/background_migration/fix_user_project_route_names.rb delete mode 100644 lib/gitlab/background_migration/migrate_events_to_push_event_payloads.rb create mode 100644 lib/gitlab/background_migration/migrate_null_private_profile_to_false.rb delete mode 100644 lib/gitlab/background_migration/migrate_system_uploads_to_new_folder.rb delete mode 100644 lib/gitlab/background_migration/move_personal_snippet_files.rb delete mode 100644 lib/gitlab/background_migration/normalize_ldap_extern_uids_range.rb delete mode 100644 lib/gitlab/background_migration/populate_fork_networks_range.rb delete mode 100644 lib/gitlab/background_migration/populate_merge_requests_latest_merge_request_diff_id.rb create mode 100644 lib/gitlab/batch_pop_queueing.rb create mode 100644 lib/gitlab/ci/config/entry/default.rb delete mode 100644 lib/gitlab/ci/config/entry/global.rb create mode 100644 lib/gitlab/ci/config/entry/root.rb create mode 100644 lib/gitlab/cleanup/orphan_job_artifact_files.rb create mode 100644 lib/gitlab/cleanup/orphan_job_artifact_files_batch.rb create mode 100644 lib/gitlab/database_importers/common_metrics.rb create mode 100644 lib/gitlab/database_importers/common_metrics/importer.rb create mode 100644 lib/gitlab/database_importers/common_metrics/prometheus_metric.rb create mode 100644 lib/gitlab/database_importers/common_metrics/prometheus_metric_enums.rb create mode 100644 lib/gitlab/diff/position_tracer/base_strategy.rb create mode 100644 lib/gitlab/diff/position_tracer/image_strategy.rb create mode 100644 lib/gitlab/diff/position_tracer/line_strategy.rb create mode 100644 lib/gitlab/git/rugged_impl/use_rugged.rb create mode 100644 lib/gitlab/global_id.rb create mode 100644 lib/gitlab/graphql/calls_gitaly.rb create mode 100644 lib/gitlab/graphql/calls_gitaly/instrumentation.rb create mode 100644 lib/gitlab/graphql/copy_field_description.rb create mode 100644 lib/gitlab/graphql/docs/helper.rb create mode 100644 lib/gitlab/graphql/docs/renderer.rb create mode 100644 lib/gitlab/graphql/docs/templates/default.md.haml create mode 100644 lib/gitlab/graphql/find_argument_in_parent.rb create mode 100644 lib/gitlab/graphql/loaders/pipeline_for_sha_loader.rb create mode 100644 lib/gitlab/graphql/markdown_field.rb create mode 100644 lib/gitlab/graphql/markdown_field/resolver.rb create mode 100644 lib/gitlab/graphql/representation/submodule_tree_entry.rb create mode 100644 lib/gitlab/kubernetes/role.rb create mode 100644 lib/gitlab/lets_encrypt.rb create mode 100644 lib/gitlab/metrics/dashboard/dynamic_dashboard_service.rb create mode 100644 lib/gitlab/metrics/dashboard/url.rb create mode 100644 lib/gitlab/patch/active_record_query_cache.rb create mode 100644 lib/gitlab/performance_bar/redis_adapter_when_peek_enabled.rb create mode 100644 lib/gitlab/phabricator_import/conduit/user.rb create mode 100644 lib/gitlab/phabricator_import/conduit/users_response.rb create mode 100644 lib/gitlab/phabricator_import/representation/user.rb create mode 100644 lib/gitlab/phabricator_import/user_finder.rb create mode 100644 lib/gitlab/submodule_links.rb create mode 100644 lib/gitlab/thread_memory_cache.rb create mode 100644 lib/gitlab/usage_data_counters/redis_counter.rb create mode 100644 lib/gitlab/usage_data_counters/web_ide_counter.rb delete mode 100644 lib/gitlab/user_extractor.rb delete mode 100644 lib/gitlab/web_ide_commits_counter.rb create mode 100644 lib/gitlab/zoom_link_extractor.rb create mode 100644 lib/peek/views/redis.rb create mode 100644 lib/tasks/gitlab/graphql.rake create mode 100644 lib/tasks/migrate/schema_check.rake create mode 100644 qa/.rspec_parallel create mode 100644 qa/qa/page/component/confirm_modal.rb create mode 100644 qa/qa/page/file/edit.rb create mode 100644 qa/qa/page/file/shared/commit_button.rb create mode 100644 qa/qa/page/file/shared/editor.rb create mode 100644 qa/qa/page/project/sub_menus/project.rb create mode 100644 qa/qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/1_manage/group/transfer_project_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb create mode 100644 qa/qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb create mode 100644 qa/qa/specs/parallel_runner.rb create mode 100644 qa/spec/specs/parallel_runner_spec.rb create mode 100644 rubocop/cop/gitlab/rails_logger.rb create mode 100644 rubocop/cop/graphql/authorize_types.rb create mode 100755 scripts/gather-test-memory-data create mode 100755 scripts/generate-gems-memory-metrics-static create mode 100755 scripts/generate-gems-size-metrics-static create mode 100755 scripts/generate-memory-metrics-on-boot create mode 100755 scripts/merge-html-reports create mode 100644 spec/controllers/projects/merge_requests/content_controller_spec.rb create mode 100644 spec/factories/namespace/aggregation_schedules.rb create mode 100644 spec/factories/namespace/root_storage_statistics.rb create mode 100644 spec/features/issues/user_creates_confidential_merge_request_spec.rb rename spec/features/tags/{master_creates_tag_spec.rb => developer_creates_tag_spec.rb} (94%) rename spec/features/tags/{master_deletes_tag_spec.rb => developer_deletes_tag_spec.rb} (87%) rename spec/features/tags/{master_updates_tag_spec.rb => developer_updates_tag_spec.rb} (89%) rename spec/features/tags/{master_views_tags_spec.rb => developer_views_tags_spec.rb} (90%) rename spec/{services/boards/visits/latest_service_spec.rb => finders/boards/visits_finder_spec.rb} (65%) create mode 100644 spec/fixtures/api/schemas/current-board.json create mode 100644 spec/fixtures/lib/gitlab/metrics/dashboard/schemas/embedded_dashboard.json create mode 100644 spec/fixtures/lib/gitlab/metrics/dashboard/schemas/embedded_panel_groups.json create mode 100644 spec/fixtures/phabricator_responses/user.search.json create mode 100644 spec/frontend/boards/services/board_service_spec.js create mode 100644 spec/frontend/branches/components/__snapshots__/divergence_graph_spec.js.snap create mode 100644 spec/frontend/branches/components/divergence_graph_spec.js create mode 100644 spec/frontend/branches/components/graph_bar_spec.js create mode 100644 spec/frontend/branches/divergence_graph_spec.js create mode 100644 spec/frontend/commons/nav/user_merge_requests_spec.js create mode 100644 spec/frontend/confidential_merge_request/components/__snapshots__/project_form_group_spec.js.snap create mode 100644 spec/frontend/confidential_merge_request/components/dropdown_spec.js create mode 100644 spec/frontend/confidential_merge_request/components/project_form_group_spec.js rename spec/{javascripts => frontend}/create_merge_request_dropdown_spec.js (61%) create mode 100644 spec/frontend/diffs/components/diff_discussion_reply_spec.js create mode 100644 spec/frontend/diffs/components/diff_gutter_avatars_spec.js create mode 100644 spec/frontend/diffs/mock_data/diff_discussions.js rename spec/{javascripts => frontend}/error_tracking_settings/components/app_spec.js (97%) rename spec/{javascripts => frontend}/error_tracking_settings/components/error_tracking_form_spec.js (100%) rename spec/{javascripts => frontend}/error_tracking_settings/components/project_dropdown_spec.js (100%) rename spec/{javascripts => frontend}/error_tracking_settings/mock.js (97%) rename spec/{javascripts => frontend}/error_tracking_settings/store/actions_spec.js (93%) rename spec/{javascripts => frontend}/error_tracking_settings/store/getters_spec.js (100%) rename spec/{javascripts => frontend}/error_tracking_settings/store/mutation_spec.js (98%) rename spec/{javascripts => frontend}/error_tracking_settings/utils_spec.js (100%) create mode 100644 spec/frontend/filterable_list_spec.js create mode 100644 spec/frontend/helpers/vuex_action_helper_spec.js create mode 100644 spec/frontend/ide/utils_spec.js create mode 100644 spec/frontend/mocks/ce/lib/utils/axios_utils.js create mode 100644 spec/frontend/mocks/mocks_helper.js create mode 100644 spec/frontend/mocks/mocks_helper_spec.js create mode 100644 spec/frontend/mocks/node/jquery.js create mode 100644 spec/frontend/mocks_spec.js create mode 100644 spec/frontend/monitoring/__snapshots__/dashboard_state_spec.js.snap create mode 100644 spec/frontend/monitoring/dashboard_state_spec.js create mode 100644 spec/frontend/notes/components/discussion_notes_replies_wrapper_spec.js create mode 100644 spec/frontend/projects/projects_filterable_list_spec.js create mode 100644 spec/frontend/repository/components/__snapshots__/last_commit_spec.js.snap create mode 100644 spec/frontend/repository/components/last_commit_spec.js create mode 100644 spec/frontend/repository/log_tree_spec.js rename spec/{javascripts => frontend}/vue_shared/components/markdown/header_spec.js (91%) create mode 100644 spec/frontend/vue_shared/components/paginated_list_spec.js create mode 100644 spec/graphql/types/award_emojis/award_emoji_type_spec.rb create mode 100644 spec/graphql/types/commit_type_spec.rb create mode 100644 spec/graphql/types/diff_refs_type_spec.rb create mode 100644 spec/helpers/onboarding_experiment_helper_spec.rb create mode 100644 spec/helpers/recaptcha_experiment_helper_spec.rb create mode 100644 spec/javascripts/boards/components/board_form_spec.js create mode 100644 spec/javascripts/boards/components/boards_selector_spec.js delete mode 100644 spec/javascripts/diffs/components/diff_gutter_avatars_spec.js create mode 100644 spec/javascripts/monitoring/charts/column_spec.js delete mode 100644 spec/javascripts/monitoring/dashboard_state_spec.js create mode 100644 spec/javascripts/monitoring/store/utils_spec.js delete mode 100644 spec/javascripts/performance_bar/components/simple_metric_spec.js create mode 100644 spec/lib/banzai/filter/inline_metrics_filter_spec.rb create mode 100644 spec/lib/banzai/filter/inline_metrics_redactor_filter_spec.rb rename spec/lib/banzai/filter/{redactor_filter_spec.rb => reference_redactor_filter_spec.rb} (99%) rename spec/lib/banzai/{redactor_spec.rb => reference_redactor_spec.rb} (99%) create mode 100644 spec/lib/gitlab/auth/ip_rate_limiter_spec.rb delete mode 100644 spec/lib/gitlab/background_migration/create_fork_network_memberships_range_spec.rb delete mode 100644 spec/lib/gitlab/background_migration/delete_conflicting_redirect_routes_range_spec.rb create mode 100644 spec/lib/gitlab/background_migration/fix_user_namespace_names_spec.rb create mode 100644 spec/lib/gitlab/background_migration/fix_user_project_route_names_spec.rb delete mode 100644 spec/lib/gitlab/background_migration/migrate_events_to_push_event_payloads_spec.rb create mode 100644 spec/lib/gitlab/background_migration/migrate_null_private_profile_to_false_spec.rb delete mode 100644 spec/lib/gitlab/background_migration/migrate_stage_status_spec.rb delete mode 100644 spec/lib/gitlab/background_migration/migrate_system_uploads_to_new_folder_spec.rb delete mode 100644 spec/lib/gitlab/background_migration/move_personal_snippet_files_spec.rb delete mode 100644 spec/lib/gitlab/background_migration/normalize_ldap_extern_uids_range_spec.rb delete mode 100644 spec/lib/gitlab/background_migration/populate_fork_networks_range_spec.rb delete mode 100644 spec/lib/gitlab/background_migration/populate_merge_requests_latest_merge_request_diff_id_spec.rb create mode 100644 spec/lib/gitlab/batch_pop_queueing_spec.rb create mode 100644 spec/lib/gitlab/ci/config/entry/default_spec.rb rename spec/lib/gitlab/ci/config/entry/{global_spec.rb => root_spec.rb} (54%) create mode 100644 spec/lib/gitlab/cleanup/orphan_job_artifact_files_batch_spec.rb create mode 100644 spec/lib/gitlab/cleanup/orphan_job_artifact_files_spec.rb rename spec/{db/importers/common_metrics_importer_spec.rb => lib/gitlab/database_importers/common_metrics/importer_spec.rb} (83%) create mode 100644 spec/lib/gitlab/database_importers/common_metrics/prometheus_metric_spec.rb create mode 100644 spec/lib/gitlab/diff/position_tracer/image_strategy_spec.rb create mode 100644 spec/lib/gitlab/diff/position_tracer/line_strategy_spec.rb create mode 100644 spec/lib/gitlab/git/rugged_impl/use_rugged_spec.rb create mode 100644 spec/lib/gitlab/global_id_spec.rb create mode 100644 spec/lib/gitlab/graphql/calls_gitaly/instrumentation_spec.rb create mode 100644 spec/lib/gitlab/graphql/copy_field_description_spec.rb create mode 100644 spec/lib/gitlab/graphql/find_argument_in_parent_spec.rb create mode 100644 spec/lib/gitlab/graphql/loaders/pipeline_for_sha_loader_spec.rb create mode 100644 spec/lib/gitlab/graphql/markdown_field/resolver_spec.rb create mode 100644 spec/lib/gitlab/graphql/markdown_field_spec.rb create mode 100644 spec/lib/gitlab/graphql/representation/submodule_tree_entry_spec.rb create mode 100644 spec/lib/gitlab/kubernetes/role_spec.rb create mode 100644 spec/lib/gitlab/lets_encrypt_spec.rb create mode 100644 spec/lib/gitlab/metrics/dashboard/dynamic_dashboard_service_spec.rb create mode 100644 spec/lib/gitlab/metrics/dashboard/url_spec.rb create mode 100644 spec/lib/gitlab/phabricator_import/conduit/user_spec.rb create mode 100644 spec/lib/gitlab/phabricator_import/conduit/users_response_spec.rb create mode 100644 spec/lib/gitlab/phabricator_import/representation/user_spec.rb create mode 100644 spec/lib/gitlab/phabricator_import/user_finder_spec.rb create mode 100644 spec/lib/gitlab/submodule_links_spec.rb create mode 100644 spec/lib/gitlab/time_tracking_formatter_spec.rb create mode 100644 spec/lib/gitlab/usage_data_counters/web_ide_counter_spec.rb delete mode 100644 spec/lib/gitlab/user_extractor_spec.rb delete mode 100644 spec/lib/gitlab/web_ide_commits_counter_spec.rb create mode 100644 spec/lib/gitlab/zoom_link_extractor_spec.rb create mode 100644 spec/lib/peek/views/redis_detailed_spec.rb delete mode 100644 spec/migrations/add_foreign_key_to_merge_requests_spec.rb delete mode 100644 spec/migrations/add_head_pipeline_for_each_merge_request_spec.rb create mode 100644 spec/migrations/backfill_and_add_not_null_constraint_to_released_at_column_on_releases_table_spec.rb delete mode 100644 spec/migrations/calculate_conv_dev_index_percentages_spec.rb delete mode 100644 spec/migrations/clean_appearance_symlinks_spec.rb delete mode 100644 spec/migrations/clean_stage_id_reference_migration_spec.rb delete mode 100644 spec/migrations/clean_stages_statuses_migration_spec.rb delete mode 100644 spec/migrations/clean_upload_symlinks_spec.rb delete mode 100644 spec/migrations/cleanup_move_system_upload_folder_symlink_spec.rb delete mode 100644 spec/migrations/cleanup_nonexisting_namespace_pending_delete_projects_spec.rb delete mode 100644 spec/migrations/convert_custom_notification_settings_to_columns_spec.rb delete mode 100644 spec/migrations/delete_conflicting_redirect_routes_spec.rb create mode 100644 spec/migrations/encrypt_feature_flags_clients_tokens_spec.rb create mode 100644 spec/migrations/enqueue_reset_merge_status_second_run_spec.rb create mode 100644 spec/migrations/fix_wrong_pages_access_level_spec.rb delete mode 100644 spec/migrations/fix_wrongly_renamed_routes_spec.rb delete mode 100644 spec/migrations/issues_moved_to_id_foreign_key_spec.rb delete mode 100644 spec/migrations/migrate_build_stage_reference_again_spec.rb delete mode 100644 spec/migrations/migrate_gcp_clusters_to_new_clusters_architectures_spec.rb delete mode 100644 spec/migrations/migrate_issues_to_ghost_user_spec.rb delete mode 100644 spec/migrations/migrate_kubernetes_service_to_new_clusters_architectures_spec.rb create mode 100644 spec/migrations/migrate_legacy_managed_clusters_to_unmanaged_spec.rb create mode 100644 spec/migrations/migrate_managed_clusters_with_no_token_to_unmanaged_spec.rb delete mode 100644 spec/migrations/migrate_old_artifacts_spec.rb delete mode 100644 spec/migrations/migrate_pipeline_sidekiq_queues_spec.rb delete mode 100644 spec/migrations/migrate_pipeline_stages_spec.rb delete mode 100644 spec/migrations/migrate_process_commit_worker_jobs_spec.rb delete mode 100644 spec/migrations/migrate_stage_id_reference_in_background_spec.rb delete mode 100644 spec/migrations/migrate_stages_statuses_spec.rb delete mode 100644 spec/migrations/migrate_user_activities_to_users_last_activity_on_spec.rb delete mode 100644 spec/migrations/migrate_user_authentication_token_to_personal_access_token_spec.rb delete mode 100644 spec/migrations/migrate_user_project_view_spec.rb delete mode 100644 spec/migrations/move_personal_snippets_files_spec.rb delete mode 100644 spec/migrations/move_system_upload_folder_spec.rb delete mode 100644 spec/migrations/move_uploads_to_system_dir_spec.rb delete mode 100644 spec/migrations/normalize_ldap_extern_uids_spec.rb delete mode 100644 spec/migrations/populate_can_push_from_deploy_keys_projects_spec.rb delete mode 100644 spec/migrations/remove_assignee_id_from_issue_spec.rb delete mode 100644 spec/migrations/remove_dot_git_from_usernames_spec.rb delete mode 100644 spec/migrations/remove_duplicate_mr_events_spec.rb delete mode 100644 spec/migrations/remove_empty_fork_networks_spec.rb delete mode 100644 spec/migrations/remove_project_labels_group_id_spec.rb delete mode 100644 spec/migrations/rename_duplicated_variable_key_spec.rb delete mode 100644 spec/migrations/rename_more_reserved_project_names_spec.rb delete mode 100644 spec/migrations/rename_reserved_project_names_spec.rb delete mode 100644 spec/migrations/rename_users_with_renamed_namespace_spec.rb delete mode 100644 spec/migrations/schedule_merge_request_latest_merge_request_diff_id_migrations_spec.rb delete mode 100644 spec/migrations/track_untracked_uploads_spec.rb delete mode 100644 spec/migrations/turn_nested_groups_into_regular_groups_for_mysql_spec.rb delete mode 100644 spec/migrations/update_legacy_diff_notes_type_for_import_spec.rb delete mode 100644 spec/migrations/update_notes_type_for_import_spec.rb delete mode 100644 spec/migrations/update_retried_for_ci_build_spec.rb delete mode 100644 spec/migrations/update_upload_paths_to_system_spec.rb create mode 100644 spec/models/clusters/clusters_hierarchy_spec.rb create mode 100644 spec/models/concerns/project_api_compatibility_spec.rb create mode 100644 spec/models/concerns/stepable_spec.rb rename spec/models/{cycle_analytics_spec.rb => cycle_analytics/project_level_spec.rb} (83%) create mode 100644 spec/models/deployment_metrics_spec.rb create mode 100644 spec/models/namespace/aggregation_schedule_spec.rb create mode 100644 spec/models/namespace/root_storage_statistics_spec.rb create mode 100644 spec/policies/award_emoji_policy_spec.rb create mode 100644 spec/presenters/award_emoji_presenter_spec.rb create mode 100644 spec/requests/api/graphql/mutations/award_emojis/add_spec.rb create mode 100644 spec/requests/api/graphql/mutations/award_emojis/remove_spec.rb create mode 100644 spec/requests/api/graphql/mutations/award_emojis/toggle_spec.rb create mode 100644 spec/requests/api/graphql/mutations/notes/create/diff_note_spec.rb create mode 100644 spec/requests/api/graphql/mutations/notes/create/image_diff_note_spec.rb create mode 100644 spec/requests/api/graphql/mutations/notes/create/note_spec.rb create mode 100644 spec/requests/api/graphql/mutations/notes/destroy_spec.rb create mode 100644 spec/requests/api/graphql/mutations/notes/update_spec.rb create mode 100644 spec/requests/api/group_clusters_spec.rb create mode 100644 spec/requests/api/user_counts_spec.rb delete mode 100644 spec/routing/api_routing_spec.rb create mode 100644 spec/rubocop/cop/gitlab/rails_logger_spec.rb create mode 100644 spec/rubocop/cop/graphql/authorize_types_spec.rb create mode 100644 spec/serializers/diff_file_base_entity_spec.rb create mode 100644 spec/services/branches/diverging_commit_counts_service_spec.rb create mode 100644 spec/services/issues/reorder_service_spec.rb create mode 100644 spec/services/merge_requests/mergeability_check_service_spec.rb create mode 100644 spec/services/namespaces/statistics_refresher_service_spec.rb create mode 100644 spec/services/self_monitoring/project/create_service_spec.rb create mode 100644 spec/support/helpers/memory_usage_helper.rb create mode 100644 spec/support/helpers/position_tracer_helpers.rb create mode 100644 spec/support/inspect_squelch.rb create mode 100644 spec/support/matchers/abort_matcher.rb create mode 100644 spec/support/matchers/be_n_plus_1_query.rb create mode 100644 spec/support/shared_examples/graphql/mutation_shared_examples.rb create mode 100644 spec/support/shared_examples/graphql/notes_creation_shared_examples.rb create mode 100644 spec/support/shared_examples/models/services_fields_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/assign_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/award_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/copy_metadata_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/done_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/estimate_quick_action_shared_examples.rb create mode 100644 spec/support/shared_examples/quick_actions/issuable/issuable_quick_actions_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/label_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/lock_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/milestone_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/relabel_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/remove_estimate_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/remove_milestone_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/remove_time_spent_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/reopen_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/shrug_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/spend_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/subscribe_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/tableflip_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/title_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/todo_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/unassign_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/unlabel_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/unlock_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issuable/unsubscribe_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issue/confidential_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issue/due_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/issue/remove_due_date_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/merge_request/target_branch_quick_action_shared_examples.rb delete mode 100644 spec/support/shared_examples/quick_actions/merge_request/wip_quick_action_shared_examples.rb create mode 100644 spec/tasks/migrate/schema_check_rake_spec.rb create mode 100644 spec/workers/namespaces/prune_aggregation_schedules_worker_spec.rb create mode 100644 spec/workers/namespaces/root_statistics_worker_spec.rb create mode 100644 spec/workers/namespaces/schedule_aggregation_worker_spec.rb create mode 100644 spec/workers/pages_domain_ssl_renewal_cron_worker_spec.rb create mode 100644 spec/workers/pages_domain_ssl_renewal_worker_spec.rb rename app/graphql/mutations/.keep => tmp/prometheus_multiproc_dir/puma/.gitkeep (100%) rename config/database.yml.example => tmp/prometheus_multiproc_dir/sidekiq/.gitkeep (100%) create mode 100644 tmp/prometheus_multiproc_dir/unicorn/.gitkeep diff --git a/.eslintrc.yml b/.eslintrc.yml index 2b881d5f20..2612fd3371 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -5,6 +5,7 @@ globals: gl: false gon: false localStorage: false + IS_EE: false plugins: - import - html diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 059b181bb1..5b39304444 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,6 @@ image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.21-chrome-73.0-node-12.x-yarn-1.16-postgresql-9.6-graphicsmagick-1.3.29" variables: - MYSQL_ALLOW_EMPTY_PASSWORD: "1" RAILS_ENV: "test" NODE_ENV: "test" SIMPLECOV: "true" @@ -37,6 +36,7 @@ include: - local: .gitlab/ci/cng.gitlab-ci.yml - local: .gitlab/ci/docs.gitlab-ci.yml - local: .gitlab/ci/frontend.gitlab-ci.yml + - local: .gitlab/ci/memory.gitlab-ci.yml - local: .gitlab/ci/pages.gitlab-ci.yml - local: .gitlab/ci/qa.gitlab-ci.yml - local: .gitlab/ci/reports.gitlab-ci.yml diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index 0ca6d7a350..b865b212ac 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -6,8 +6,8 @@ /doc/ @axil @marcia @eread @mikelewis # Frontend maintainers should see everything in `app/assets/` -app/assets/ @ClemMakesApps @fatihacet @filipa @iamphill @mikegreiling @timzallmann @kushalpandya -*.scss @annabeldunstone @ClemMakesApps @fatihacet @filipa @iamphill @mikegreiling @timzallmann @kushalpandya +app/assets/ @ClemMakesApps @fatihacet @filipa @iamphill @mikegreiling @timzallmann @kushalpandya @pslaughter +*.scss @annabeldunstone @ClemMakesApps @fatihacet @filipa @iamphill @mikegreiling @timzallmann @kushalpandya @pslaughter # Someone from the database team should review changes in `db/` db/ @abrandl @NikolayS @@ -19,3 +19,5 @@ db/ @abrandl @NikolayS /lib/gitlab/ci/templates/ @nolith @zj /lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml @DylanGriffith @mayra-cabrera @tkuah /lib/gitlab/ci/templates/Security/ @plafoucriere @gonzoyumo @twoodham +/ee/app/models/project_alias.rb @patrickbajao +/ee/lib/api/project_aliases.rb @patrickbajao diff --git a/.gitlab/ci/docs.gitlab-ci.yml b/.gitlab/ci/docs.gitlab-ci.yml index 5aa1a85640..5bc109f2b7 100644 --- a/.gitlab/ci/docs.gitlab-ci.yml +++ b/.gitlab/ci/docs.gitlab-ci.yml @@ -12,7 +12,9 @@ # Trigger a manual docs build in gitlab-docs only on non docs-only branches. # Useful to preview the docs changes live. review-docs-deploy-manual: - <<: *review-docs + extends: + - .review-docs + - .no-docs-and-no-qa stage: build script: - gem install gitlab --no-document @@ -21,9 +23,6 @@ review-docs-deploy-manual: only: - branches@gitlab-org/gitlab-ce - branches@gitlab-org/gitlab-ee - except: - - /(^docs[\/-].*|.*-docs$)/ - - /(^qa[\/-].*|.*-qa$)/ # Always trigger a docs build in gitlab-docs only on docs-only branches. # Useful to preview the docs changes live. @@ -66,6 +65,8 @@ docs lint: - scripts/lint-changelog-yaml - mv doc/ /tmp/gitlab-docs/content/$DOCS_GITLAB_REPO_SUFFIX - cd /tmp/gitlab-docs + # Lint Markdown + - bundle exec mdl content/$DOCS_GITLAB_REPO_SUFFIX -c $CI_PROJECT_DIR/.mdlrc # Build HTML from Markdown - bundle exec nanoc # Check the internal links diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml index 6afa668af2..b3e7c85385 100644 --- a/.gitlab/ci/frontend.gitlab-ci.yml +++ b/.gitlab/ci/frontend.gitlab-ci.yml @@ -1,26 +1,25 @@ .assets-compile-cache: &assets-compile-cache cache: - key: "assets-compile:vendor_ruby:.yarn-cache:tmp_cache_assets_sprockets:v5" + key: "assets-compile:vendor_ruby:.yarn-cache:tmp_cache_assets_sprockets:v6" paths: - vendor/ruby/ - .yarn-cache/ - tmp/cache/assets/sprockets - policy: pull-push .use-pg: &use-pg services: - - name: postgres:9.6 + - name: postgres:9.6.11 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:alpine -gitlab:assets:compile: +.gitlab:assets:compile-metadata: <<: *assets-compile-cache extends: .dedicated-no-docs-pull-cache-job image: dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.6.3-git-2.21-chrome-73.0-node-12.x-yarn-1.16-graphicsmagick-1.3.29-docker-18.06.1 dependencies: - setup-test-env services: - - docker:stable-dind + - docker:19.03.0-dind variables: NODE_ENV: "production" RAILS_ENV: "production" @@ -33,7 +32,7 @@ gitlab:assets:compile: DOCKER_HOST: tcp://docker:2375 script: - node --version - - retry yarn install --frozen-lockfile --production --cache-folder .yarn-cache + - retry yarn install --frozen-lockfile --production --cache-folder .yarn-cache --prefer-offline - free -m - retry bundle exec rake gitlab:assets:compile - time scripts/build_assets_image @@ -58,14 +57,32 @@ gitlab:assets:compile: - docker - gitlab-org -compile-assets: +gitlab:assets:compile: + extends: .gitlab:assets:compile-metadata + cache: + policy: pull-push + only: + - master@gitlab-org/gitlab-ce + - master@gitlab-org/gitlab-ee + +gitlab:assets:compile pull-cache: + extends: .gitlab:assets:compile-metadata + cache: + policy: pull + except: + refs: + - master@gitlab-org/gitlab-ce + - master@gitlab-org/gitlab-ee + - /(^docs[\/-].*|.*-docs$)/ + +.compile-assets-metadata: extends: .dedicated-runner <<: *use-pg <<: *assets-compile-cache stage: prepare script: - node --version - - retry yarn install --frozen-lockfile --cache-folder .yarn-cache + - retry yarn install --frozen-lockfile --cache-folder .yarn-cache --prefer-offline - free -m - retry bundle exec rake gitlab:assets:compile - scripts/clean-old-cached-assets @@ -77,8 +94,23 @@ compile-assets: paths: - node_modules - public/assets + +compile-assets: + extends: .compile-assets-metadata + cache: + policy: pull-push + only: + - master@gitlab-org/gitlab-ce + - master@gitlab-org/gitlab-ee + +compile-assets pull-cache: + extends: .compile-assets-metadata + cache: + policy: pull except: refs: + - master@gitlab-org/gitlab-ce + - master@gitlab-org/gitlab-ee - /(^docs[\/-].*|.*-docs$)/ gitlab:ui:visual: @@ -87,6 +119,7 @@ gitlab:ui:visual: allow_failure: true dependencies: - compile-assets + - compile-assets pull-cache script: # Remove node modules from GitLab that may conflict with gitlab-ui - rm -r node_modules @@ -116,6 +149,7 @@ karma: <<: *use-pg dependencies: - compile-assets + - compile-assets pull-cache - setup-test-env variables: # we override the max_old_space_size to prevent OOM errors @@ -134,14 +168,15 @@ karma: paths: - chrome_debug.log - coverage-javascript/ - reports: - junit: junit_karma.xml +# reports: +# junit: junit_karma.xml jest: extends: .dedicated-no-docs-and-no-qa-pull-cache-job <<: *use-pg dependencies: - compile-assets + - compile-assets pull-cache - setup-test-env script: - scripts/gitaly-test-spawn @@ -156,8 +191,8 @@ jest: paths: - coverage-frontend/ - junit_jest.xml - reports: - junit: junit_jest.xml +# reports: +# junit: junit_jest.xml cache: key: jest paths: @@ -196,7 +231,7 @@ qa:selectors: before_script: [] script: - date - - yarn install --frozen-lockfile --cache-folder .yarn-cache + - yarn install --frozen-lockfile --cache-folder .yarn-cache --prefer-offline - date - yarn run webpack-prod @@ -232,6 +267,7 @@ jsdoc: stage: post-test dependencies: - compile-assets + - compile-assets pull-cache before_script: [] script: - date diff --git a/.gitlab/ci/global.gitlab-ci.yml b/.gitlab/ci/global.gitlab-ci.yml index b7ef4b3174..4da7f40476 100644 --- a/.gitlab/ci/global.gitlab-ci.yml +++ b/.gitlab/ci/global.gitlab-ci.yml @@ -28,16 +28,26 @@ policy: pull stage: test -.dedicated-no-docs-pull-cache-job: - extends: .dedicated-pull-cache-job +.no-docs: except: - - /(^docs[\/-].*|.*-docs$)/ + refs: + - /(^docs[\/-].*|.*-docs$)/ + +.no-docs-and-no-qa: + except: + refs: + - /(^docs[\/-].*|.*-docs$)/ + - /(^qa[\/-].*|.*-qa$)/ + +.dedicated-no-docs-pull-cache-job: + extends: + - .dedicated-pull-cache-job + - .no-docs .dedicated-no-docs-and-no-qa-pull-cache-job: - extends: .dedicated-pull-cache-job - except: - - /(^docs[\/-].*|.*-docs$)/ - - /(^qa[\/-].*|.*-qa$)/ + extends: + - .dedicated-pull-cache-job + - .no-docs-and-no-qa # Jobs that do not need a DB .dedicated-no-docs-no-db-pull-cache-job: @@ -45,6 +55,12 @@ variables: SETUP_DB: "false" +# Jobs that need a dedicated runner, with no cache +.dedicated-no-docs: + extends: + - .dedicated-runner + - .no-docs + .single-script-job-dedicated-runner: extends: .dedicated-runner image: ruby:2.6-alpine diff --git a/.gitlab/ci/memory.gitlab-ci.yml b/.gitlab/ci/memory.gitlab-ci.yml new file mode 100644 index 0000000000..ffe5dbdc31 --- /dev/null +++ b/.gitlab/ci/memory.gitlab-ci.yml @@ -0,0 +1,42 @@ +memory-static: + extends: .dedicated-no-docs-no-db-pull-cache-job + script: + # Uses two different reports from the 'derailed_benchmars' gem. + + # Loads each of gems in the Gemfile and checks how much memory they consume when they are required. + # 'derailed_benchmarks' internally uses 'get_process_mem' + - bundle exec derailed bundle:mem > tmp/memory_bundle_mem.txt + - scripts/generate-gems-size-metrics-static tmp/memory_bundle_mem.txt >> 'tmp/memory_metrics.txt' + + # Outputs detailed information about objects created while gems are loaded. + # 'derailed_benchmarks' internally uses 'memory_profiler' + - bundle exec derailed bundle:objects > tmp/memory_bundle_objects.txt + - scripts/generate-gems-memory-metrics-static tmp/memory_bundle_objects.txt >> 'tmp/memory_metrics.txt' + artifacts: + paths: + - tmp/memory_*.txt + reports: + metrics: tmp/memory_metrics.txt + +# Show memory usage caused by invoking require per gem. +# Unlike `memory-static`, it hits the app with one request to ensure that any last minute require-s have been called. +# The application is booted in `production` environment. +# All tests are run without a webserver (directly using Rack::Mock by default). +memory-on-boot: + extends: .rspec-metadata-pg-10 + variables: + NODE_ENV: "production" + RAILS_ENV: "production" + SETUP_DB: "true" + SKIP_STORAGE_VALIDATION: "true" + # we override the max_old_space_size to prevent OOM errors + NODE_OPTIONS: --max_old_space_size=3584 + script: + # Both bootsnap and derailed monkey-patch Kernel#require, which leads to circular dependency + - DISABLE_BOOTSNAP=true PATH_TO_HIT="/users/sign_in" CUT_OFF=0.3 bundle exec derailed exec perf:mem >> 'tmp/memory_on_boot.txt' + - scripts/generate-memory-metrics-on-boot tmp/memory_on_boot.txt >> 'tmp/memory_on_boot_metrics.txt' + artifacts: + paths: + - tmp/memory_*.txt + reports: + metrics: tmp/memory_on_boot_metrics.txt diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml index 68280506da..c7a51beeee 100644 --- a/.gitlab/ci/rails.gitlab-ci.yml +++ b/.gitlab/ci/rails.gitlab-ci.yml @@ -1,6 +1,6 @@ .use-pg: &use-pg services: - - name: postgres:9.6 + - name: postgres:9.6.11 command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:alpine @@ -10,11 +10,6 @@ command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - name: redis:alpine -.use-mysql: &use-mysql - services: - - mysql:5.7 - - redis:alpine - .only-schedules-master: &only-schedules-master only: - schedules@gitlab-org/gitlab-ce @@ -25,8 +20,9 @@ - master@gitlab/gitlab-ee .gitlab-setup: &gitlab-setup - extends: .dedicated-no-docs-and-no-qa-pull-cache-job - <<: *use-pg + extends: + - .dedicated-no-docs-and-no-qa-pull-cache-job + - .use-pg variables: SETUP_DB: "false" script: @@ -48,7 +44,9 @@ - bundle exec rake $CI_JOB_NAME .rspec-metadata: &rspec-metadata - extends: .dedicated-pull-cache-job + extends: + - .dedicated-pull-cache-job + - .no-docs-and-no-qa stage: test script: - JOB_NAME=( $CI_JOB_NAME ) @@ -68,6 +66,8 @@ - scripts/gitaly-test-spawn - date - 'export KNAPSACK_TEST_FILE_PATTERN=$(ruby -r./lib/quality/test_level.rb -e "puts Quality::TestLevel.new.pattern(:${TEST_LEVEL})")' + - mkdir -p tmp/memory_test + - export MEMORY_TEST_PATH="tmp/memory_test/${TEST_TOOL}_${TEST_LEVEL}_${DATABASE}_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_memory.csv" - knapsack rspec "--color --format documentation --format RspecJunitFormatter --out junit_rspec.xml --tag level:${TEST_LEVEL} --tag ~geo" - date artifacts: @@ -79,11 +79,9 @@ - rspec_flaky/ - rspec_profiling/ - tmp/capybara/ - reports: - junit: junit_rspec.xml - except: - - /(^docs[\/-].*|.*-docs$)/ - - /(^qa[\/-].*|.*-qa$)/ + - tmp/memory_test/ +# reports: +# junit: junit_rspec.xml .rspec-metadata-pg: &rspec-metadata-pg <<: *rspec-metadata @@ -94,10 +92,6 @@ <<: *use-pg-10 image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.6.3-golang-1.11-git-2.21-chrome-73.0-node-12.x-yarn-1.16-postgresql-10-graphicsmagick-1.3.29" -.rspec-metadata-mysql: &rspec-metadata-mysql - <<: *rspec-metadata - <<: *use-mysql - # DB migration, rollback, and seed jobs .db-migrate-reset: &db-migrate-reset extends: .dedicated-no-docs-and-no-qa-pull-cache-job @@ -131,8 +125,10 @@ - setup-test-env setup-test-env: - extends: .dedicated-runner-default-cache - <<: *use-pg + extends: + - .dedicated-runner-default-cache + - .no-docs + - .use-pg stage: prepare script: - bundle exec ruby -Ispec -e 'require "spec_helper" ; TestEnv.init' @@ -143,8 +139,6 @@ setup-test-env: - tmp/tests - config/secrets.yml - vendor/gitaly-ruby - except: - - /(^docs[\/-].*|.*-docs$)/ rspec unit pg: <<: *rspec-metadata-pg @@ -173,42 +167,6 @@ rspec system pg-10: <<: *only-schedules-master parallel: 24 -rspec unit mysql: - <<: *rspec-metadata-mysql - <<: *only-schedules-master - parallel: 20 - -rspec integration mysql: - <<: *rspec-metadata-mysql - <<: *only-schedules-master - parallel: 6 - -rspec system mysql: - <<: *rspec-metadata-mysql - <<: *only-schedules-master - parallel: 24 - -.rspec-mysql-on-demand: &rspec-mysql-on-demand - only: - variables: - - $CI_COMMIT_MESSAGE =~ /\[run mysql\]/i - - $CI_COMMIT_REF_NAME =~ /mysql/ - -rspec unit mysql on-demand: - <<: *rspec-metadata-mysql - <<: *rspec-mysql-on-demand - parallel: 20 - -rspec integration mysql on-demand: - <<: *rspec-metadata-mysql - <<: *rspec-mysql-on-demand - parallel: 6 - -rspec system mysql on-demand: - <<: *rspec-metadata-mysql - <<: *rspec-mysql-on-demand - parallel: 24 - rspec-fast-spec-helper: <<: *rspec-metadata-pg script: @@ -226,16 +184,11 @@ rspec quarantine pg: <<: *rspec-quarantine allow_failure: true -rspec quarantine mysql: - <<: *rspec-metadata-mysql - <<: *rspec-quarantine - <<: *only-schedules-master - allow_failure: true - static-analysis: extends: .dedicated-no-docs-no-db-pull-cache-job dependencies: - compile-assets + - compile-assets pull-cache - setup-test-env script: - scripts/static-analysis @@ -250,11 +203,12 @@ static-analysis: downtime_check: <<: *rake-exec except: - - master - - tags - - /^[\d-]+-stable(-ee)?$/ - - /(^docs[\/-].*|.*-docs$)/ - - /(^qa[\/-].*|.*-qa$)/ + refs: + - master + - tags + - /^[\d-]+-stable(-ee)?$/ + - /(^docs[\/-].*|.*-docs$)/ + - /(^qa[\/-].*|.*-qa$)/ dependencies: - setup-test-env @@ -262,12 +216,13 @@ ee_compat_check: <<: *rake-exec dependencies: [] except: - - master - - tags - - /[\d-]+-stable(-ee)?/ - - /^security-/ - - branches@gitlab-org/gitlab-ee - - branches@gitlab/gitlab-ee + refs: + - master + - tags + - /[\d-]+-stable(-ee)?/ + - /^security-/ + - branches@gitlab-org/gitlab-ee + - branches@gitlab/gitlab-ee retry: 0 artifacts: name: "${CI_JOB_NAME}_${CI_COMIT_REF_NAME}_${CI_COMMIT_SHA}" @@ -280,10 +235,6 @@ db:migrate:reset-pg: <<: *db-migrate-reset <<: *use-pg -db:migrate:reset-mysql: - <<: *db-migrate-reset - <<: *use-mysql - db:check-schema-pg: <<: *db-migrate-reset <<: *use-pg @@ -294,15 +245,11 @@ migration:path-pg: <<: *migration-paths <<: *use-pg -migration:path-mysql: - <<: *migration-paths - <<: *use-mysql - .db-rollback: &db-rollback extends: .dedicated-no-docs-and-no-qa-pull-cache-job script: - - bundle exec rake db:migrate VERSION=20170523121229 - - bundle exec rake db:migrate + - bundle exec rake db:migrate VERSION=20180101160629 + - bundle exec rake db:migrate SKIP_SCHEMA_VERSION_CHECK=true dependencies: - setup-test-env @@ -310,26 +257,18 @@ db:rollback-pg: <<: *db-rollback <<: *use-pg -db:rollback-mysql: - <<: *db-rollback - <<: *use-mysql - gitlab:setup-pg: <<: *gitlab-setup <<: *use-pg dependencies: - setup-test-env -gitlab:setup-mysql: - <<: *gitlab-setup - <<: *use-mysql - dependencies: - - setup-test-env - coverage: # Don't include dedicated-no-docs-no-db-pull-cache-job here since we need to # download artifacts from all the rspec jobs instead of from setup-test-env only - extends: .dedicated-runner-default-cache + extends: + - .dedicated-runner-default-cache + - .no-docs-and-no-qa cache: policy: pull variables: @@ -337,6 +276,7 @@ coverage: stage: post-test script: - bundle exec scripts/merge-simplecov + - bundle exec scripts/gather-test-memory-data coverage: '/LOC \((\d+\.\d+%)\) covered.$/' artifacts: name: coverage @@ -344,6 +284,4 @@ coverage: paths: - coverage/index.html - coverage/assets/ - except: - - /(^docs[\/-].*|.*-docs$)/ - - /(^qa[\/-].*|.*-qa$)/ + - tmp/memory_test/ diff --git a/.gitlab/ci/reports.gitlab-ci.yml b/.gitlab/ci/reports.gitlab-ci.yml index d0e09dbf2f..ca55bbd32a 100644 --- a/.gitlab/ci/reports.gitlab-ci.yml +++ b/.gitlab/ci/reports.gitlab-ci.yml @@ -1,98 +1,26 @@ include: - template: Code-Quality.gitlab-ci.yml + - template: Security/SAST.gitlab-ci.yml + - template: Security/Dependency-Scanning.gitlab-ci.yml code_quality: - extends: .dedicated-no-docs-no-db-pull-cache-job + extends: .dedicated-no-docs # gitlab-org runners set `privileged: false` but we need to have it set to true # since we're using Docker in Docker tags: [] before_script: [] cache: {} - dependencies: [] - variables: - SETUP_DB: "false" sast: - extends: .dedicated-no-docs-no-db-pull-cache-job - image: docker:stable - variables: - SAST_CONFIDENCE_LEVEL: 2 - DOCKER_DRIVER: overlay2 - allow_failure: true + extends: .dedicated-no-docs tags: [] before_script: [] cache: {} - dependencies: [] - services: - - docker:stable-dind - script: - - | # this is required to avoid undesirable reset of Docker image ENV variables being set on build stage - function propagate_env_vars() { - CURRENT_ENV=$(printenv) - - for VAR_NAME; do - echo $CURRENT_ENV | grep "${VAR_NAME}=" > /dev/null && echo "--env $VAR_NAME " - done - } - - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/') - - | - docker run \ - $(propagate_env_vars \ - SAST_ANALYZER_IMAGES \ - SAST_ANALYZER_IMAGE_PREFIX \ - SAST_ANALYZER_IMAGE_TAG \ - SAST_DEFAULT_ANALYZERS \ - SAST_BRAKEMAN_LEVEL \ - SAST_GOSEC_LEVEL \ - SAST_FLAWFINDER_LEVEL \ - SAST_DOCKER_CLIENT_NEGOTIATION_TIMEOUT \ - SAST_PULL_ANALYZER_IMAGE_TIMEOUT \ - SAST_RUN_ANALYZER_TIMEOUT \ - ) \ - --volume "$PWD:/code" \ - --volume /var/run/docker.sock:/var/run/docker.sock \ - "registry.gitlab.com/gitlab-org/security-products/sast:$SP_VERSION" /app/bin/run /code - artifacts: - reports: - sast: gl-sast-report.json + variables: + SAST_BRAKEMAN_LEVEL: 2 dependency_scanning: - extends: .dedicated-no-docs-no-db-pull-cache-job - image: docker:stable - variables: - DOCKER_DRIVER: overlay2 - allow_failure: true + extends: .dedicated-no-docs tags: [] before_script: [] cache: {} - dependencies: [] - services: - - docker:stable-dind - script: - - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/') - - | # this is required to avoid undesirable reset of Docker image ENV variables being set on build stage - function propagate_env_vars() { - CURRENT_ENV=$(printenv) - - for VAR_NAME; do - echo $CURRENT_ENV | grep "${VAR_NAME}=" > /dev/null && echo "--env $VAR_NAME " - done - } - - | - docker run \ - $(propagate_env_vars \ - DS_ANALYZER_IMAGES \ - DS_ANALYZER_IMAGE_PREFIX \ - DS_ANALYZER_IMAGE_TAG \ - DS_DEFAULT_ANALYZERS \ - DEP_SCAN_DISABLE_REMOTE_CHECKS \ - DS_DOCKER_CLIENT_NEGOTIATION_TIMEOUT \ - DS_PULL_ANALYZER_IMAGE_TIMEOUT \ - DS_RUN_ANALYZER_TIMEOUT \ - ) \ - --volume "$PWD:/code" \ - --volume /var/run/docker.sock:/var/run/docker.sock \ - "registry.gitlab.com/gitlab-org/security-products/dependency-scanning:$SP_VERSION" /code - artifacts: - reports: - dependency_scanning: gl-dependency-scanning-report.json diff --git a/.gitlab/ci/review.gitlab-ci.yml b/.gitlab/ci/review.gitlab-ci.yml index 9b764028be..e3a77574d7 100644 --- a/.gitlab/ci/review.gitlab-ci.yml +++ b/.gitlab/ci/review.gitlab-ci.yml @@ -35,7 +35,7 @@ <<: *review-base image: registry.gitlab.com/gitlab-org/gitlab-build-images:gitlab-qa-alpine services: - - docker:stable-dind + - docker:19.03.0-dind tags: - gitlab-org - docker @@ -77,6 +77,7 @@ schedule:review-build-cng: .review-deploy-base: &review-deploy-base <<: *review-base allow_failure: true + retry: 1 stage: review variables: HOST_SUFFIX: "${CI_ENVIRONMENT_SLUG}" @@ -95,10 +96,16 @@ schedule:review-build-cng: - install_api_client_dependencies_with_apk - source scripts/review_apps/review-apps.sh script: - - perform_review_app_deployment + - check_kube_domain + - ensure_namespace + - install_tiller + - install_external_dns + - download_chart + - deploy || display_deployment_debug + - wait_for_review_app_to_be_accessible + - add_license artifacts: - paths: - - review_app_url.txt + paths: [review_app_url.txt] expire_in: 2 days when: always @@ -108,8 +115,6 @@ review-deploy: schedule:review-deploy: <<: *review-deploy-base <<: *review-schedules-only - script: - - perform_review_app_deployment review-stop: <<: *review-base @@ -124,11 +129,11 @@ review-stop: script: - source scripts/review_apps/review-apps.sh - delete - - cleanup .review-qa-base: &review-qa-base <<: *review-docker allow_failure: true + retry: 2 stage: qa variables: <<: *review-docker-variables @@ -169,7 +174,38 @@ review-qa-all: script: - export KNAPSACK_REPORT_PATH=knapsack/${CI_PROJECT_NAME}/review-qa-all_master_report.json - export KNAPSACK_TEST_FILE_PATTERN=qa/specs/features/**/*_spec.rb - - gitlab-qa Test::Instance::Any "${QA_IMAGE}" "${CI_ENVIRONMENT_URL}" + - gitlab-qa Test::Instance::Any "${QA_IMAGE}" "${CI_ENVIRONMENT_URL}" -- --format RspecJunitFormatter --out tmp/rspec-${CI_JOB_ID}.xml --format html --out tmp/rspec.htm --color --format documentation + +parallel-spec-reports: + extends: .dedicated-runner + dependencies: + - review-qa-all + image: ruby:2.6-alpine + services: [] + before_script: [] + variables: + SETUP_DB: "false" + NEW_PARALLEL_SPECS_REPORT: qa/report-new.html + BASE_ARTIFACT_URL: "${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/file/qa/" + stage: post-test + allow_failure: true + when: manual + retry: 0 + artifacts: + when: always + paths: + - qa/report-new.html + - qa/gitlab-qa-run-* + reports: + junit: qa/gitlab-qa-run-*/**/rspec-*.xml + script: + - apk add --update build-base libxml2-dev libxslt-dev && rm -rf /var/cache/apk/* + - gem install nokogiri + - cd qa/gitlab-qa-run-*/gitlab-* + - ARTIFACT_DIRS=$(pwd |rev| awk -F / '{print $1,$2}' | rev | sed s_\ _/_) + - cd ../../.. + - '[[ -f $NEW_PARALLEL_SPECS_REPORT ]] || echo "{}" > ${NEW_PARALLEL_SPECS_REPORT}' + - scripts/merge-html-reports ${NEW_PARALLEL_SPECS_REPORT} ${BASE_ARTIFACT_URL}${ARTIFACT_DIRS} qa/gitlab-qa-run-*/**/rspec.htm .review-performance-base: &review-performance-base <<: *review-qa-base @@ -225,11 +261,12 @@ danger-review: except: refs: - master + - /^[\d-]+-stable(-ee)?$/ variables: - $CI_COMMIT_REF_NAME =~ /^ce-to-ee-.*/ - $CI_COMMIT_REF_NAME =~ /.*-stable(-ee)?-prepare-.*/ script: - git version - node --version - - yarn install --frozen-lockfile --cache-folder .yarn-cache + - yarn install --frozen-lockfile --cache-folder .yarn-cache --prefer-offline - danger --fail-on-errors=true diff --git a/.gitlab/ci/setup.gitlab-ci.yml b/.gitlab/ci/setup.gitlab-ci.yml index debc90a1cb..c1fc3a893c 100644 --- a/.gitlab/ci/setup.gitlab-ci.yml +++ b/.gitlab/ci/setup.gitlab-ci.yml @@ -15,7 +15,9 @@ cache gems: - setup-test-env gitlab_git_test: - extends: .dedicated-runner + extends: + - .dedicated-runner + - .no-docs-and-no-qa variables: SETUP_DB: "false" before_script: [] @@ -23,12 +25,11 @@ gitlab_git_test: cache: {} script: - spec/support/prepare-gitlab-git-test-for-commit --check-for-changes - except: - - /(^docs[\/-].*|.*-docs$)/ - - /(^qa[\/-].*|.*-qa$)/ no_ee_check: - extends: .dedicated-runner + extends: + - .dedicated-runner + - .no-docs-and-no-qa variables: SETUP_DB: "false" before_script: [] @@ -38,6 +39,3 @@ no_ee_check: - scripts/no-ee-check only: - /.+/@gitlab-org/gitlab-ce - except: - - /(^docs[\/-].*|.*-docs$)/ - - /(^qa[\/-].*|.*-qa$)/ diff --git a/.gitlab/ci/test-metadata.gitlab-ci.yml b/.gitlab/ci/test-metadata.gitlab-ci.yml index c51f825f83..2454ea8565 100644 --- a/.gitlab/ci/test-metadata.gitlab-ci.yml +++ b/.gitlab/ci/test-metadata.gitlab-ci.yml @@ -12,7 +12,9 @@ - rspec_profiling/ retrieve-tests-metadata: - <<: *tests-metadata-state + extends: + - .tests-metadata-state + - .no-docs-and-no-qa stage: prepare cache: key: tests_metadata @@ -25,9 +27,6 @@ retrieve-tests-metadata: - mkdir -p rspec_profiling/ - wget -O $FLAKY_RSPEC_SUITE_REPORT_PATH http://${TESTS_METADATA_S3_BUCKET}.s3.amazonaws.com/$FLAKY_RSPEC_SUITE_REPORT_PATH || rm $FLAKY_RSPEC_SUITE_REPORT_PATH - '[[ -f $FLAKY_RSPEC_SUITE_REPORT_PATH ]] || echo "{}" > ${FLAKY_RSPEC_SUITE_REPORT_PATH}' - except: - - /(^docs[\/-].*|.*-docs$)/ - - /(^qa[\/-].*|.*-qa$)/ update-tests-metadata: <<: *tests-metadata-state @@ -69,9 +68,10 @@ flaky-examples-check: only: - branches except: - - master - - /(^docs[\/-].*|.*-docs$)/ - - /(^qa[\/-].*|.*-qa$)/ + refs: + - master + - /(^docs[\/-].*|.*-docs$)/ + - /(^qa[\/-].*|.*-qa$)/ artifacts: expire_in: 30d paths: diff --git a/.gitlab/issue_templates/Database Reviewer.md b/.gitlab/issue_templates/Database Reviewer.md deleted file mode 100644 index acbaf5c196..0000000000 --- a/.gitlab/issue_templates/Database Reviewer.md +++ /dev/null @@ -1,34 +0,0 @@ -#### Database Reviewer Checklist - -Thank you for becoming a ~database reviewer! Please work on the list -below to complete your setup. For any question, reach out to #database -an mention `@abrandl`. - -- [ ] Change issue title to include your name: `Database Reviewer Checklist: Your Name` -- [ ] Review general [code review guide](https://docs.gitlab.com/ee/development/code_review.html) -- [ ] Review [database review documentation](https://about.gitlab.com/handbook/engineering/workflow/code-review/database.html) -- [ ] Familiarize with [migration helpers](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/lib/gitlab/database/migration_helpers.rb) and review usage in existing migrations -- [ ] Read [database migration style guide](https://docs.gitlab.com/ee/development/migration_style_guide.html) -- [ ] Familiarize with best practices in [database guides](https://docs.gitlab.com/ee/development/#database-guides) -- [ ] Watch [Optimising Rails Database Queries: Episode 1](https://www.youtube.com/watch?v=79GurlaxhsI) -- [ ] Read [Understanding EXPLAIN plans](https://docs.gitlab.com/ee/development/understanding_explain_plans.html) -- [ ] Review [database best practices](https://docs.gitlab.com/ee/development/#best-practices) -- [ ] Review how we use [database instances restored from a backup](https://ops.gitlab.net/gitlab-com/gl-infra/gitlab-restore/postgres-gprd) for testing and make sure you're set up to execute pipelines (check [README.md](https://ops.gitlab.net/gitlab-com/gl-infra/gitlab-restore/postgres-gprd/blob/master/README.md) and reach out to @abrandl since this is currently subject to being changed) -- [ ] Get yourself added to [`@gl-database`](https://gitlab.com/groups/gl-database/-/group_members) group and respond to @-mentions to the group (reach out to any maintainer on the group to get added). You will get TODOs on gitlab.com for group mentions. -- [ ] Make sure you have proper access to at least a read-only replica in staging and production -- [ ] Indicate in `data/team.yml` your role as a database reviewer ([example MR](https://gitlab.com/gitlab-com/www-gitlab-com/merge_requests/19600/diffs)). Assign MR to your manager for merge. -- [ ] Send one MR to improve the [review documentation](https://about.gitlab.com/handbook/engineering/workflow/code-review/database.html) or the [issue template](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/.gitlab/issue_templates/Database%20Reviewer.md) - -Note that *approving and accepting* merge requests is *restricted* to -Database Maintainers only. As a reviewer, pass the MR to a maintainer -for approval. - -You're all set! Watch out for TODOs on GitLab.com. - -###### Where to go for questions? - -Reach out to `#database` on Slack and mention `@abrandl` for any questions. - -cc @abrandl - -/label ~meta ~database diff --git a/.gitlab/issue_templates/Documentation.md b/.gitlab/issue_templates/Documentation.md index 67602b7b2d..f4070a4475 100644 --- a/.gitlab/issue_templates/Documentation.md +++ b/.gitlab/issue_templates/Documentation.md @@ -4,7 +4,7 @@ Note: Doc work as part of feature development is covered in the Feature Request template. * For issues related to features of the docs.gitlab.com site, see - https://gitlab.com/gitlab-com/gitlab-docs/issues/ + https://gitlab.com/gitlab-org/gitlab-docs/issues/ * For information about documentation content and process, see https://docs.gitlab.com/ee/development/documentation/ --> diff --git a/.gitlab/merge_request_templates/Change documentation location.md b/.gitlab/merge_request_templates/Change documentation location.md index c80af95d5e..7dc80a641c 100644 --- a/.gitlab/merge_request_templates/Change documentation location.md +++ b/.gitlab/merge_request_templates/Change documentation location.md @@ -22,7 +22,7 @@ https://docs.gitlab.com/ce/development/documentation/index.html#changing-documen - [ ] Make sure internal links pointing to the document in question are not broken. - [ ] Search and replace any links referring to old docs in GitLab Rails app, specifically under the `app/views/` and `ee/app/views` (for GitLab EE) directories. -- [ ] Make sure to add [`redirect_from`](https://docs.gitlab.com/ce/development/writing_documentation.html#redirections-for-pages-with-disqus-comments) +- [ ] Make sure to add [`redirect_from`](https://docs.gitlab.com/ce/development/documentation/index.html#redirections-for-pages-with-disqus-comments) to the new document if there are any Disqus comments on the old document thread. - [ ] Update the link in `features.yml` (if applicable) - [ ] If working on CE and the `ee-compat-check` jobs fails, submit an MR to EE diff --git a/.mdlrc b/.mdlrc new file mode 100644 index 0000000000..151c54f7d4 --- /dev/null +++ b/.mdlrc @@ -0,0 +1,7 @@ +# This is the options file for mdl, configured in .gitlab/ci/docs.gitlab-ci.yml, +# and related to the style file ./mdlrc.style + +# See https://github.com/markdownlint/markdownlint/blob/master/docs/configuration.md + +ignore_front_matter true +style File.expand_path('.mdlrc.style', __dir__) diff --git a/.mdlrc.style b/.mdlrc.style new file mode 100644 index 0000000000..0ca3611df0 --- /dev/null +++ b/.mdlrc.style @@ -0,0 +1,21 @@ +# This is the style file for mdl, configured in .gitlab/ci/docs.gitlab-ci.yml, +# and related to the options file ./mdlrc + +# See https://github.com/markdownlint/markdownlint/blob/master/docs/RULES.md +# for more detailed information on the rules and styles. + +rule "MD001" +rule "MD003", :style => :atx +rule "MD011" +rule "MD023" +rule "MD032" +rule "MD034" +rule "MD037" + +# Should not be used currently: + +# rule "MD004", :style => :dash # unordered list style - dash +# False positives, see https://github.com/markdownlint/markdownlint/issues/261 + +# rule "MD039" # Spaces inside link text +# Crashes when link text has certain punctuation diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 698570efb0..41714eefa9 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -466,12 +466,10 @@ Rails/LinkToBlank: Rails/Presence: Exclude: - 'app/models/ci/pipeline.rb' - - 'app/models/clusters/platforms/kubernetes.rb' - 'app/models/concerns/mentionable.rb' - 'app/models/project_services/hipchat_service.rb' - 'app/models/project_services/irker_service.rb' - 'app/models/project_services/jira_service.rb' - - 'app/models/project_services/kubernetes_service.rb' - 'app/models/project_services/packagist_service.rb' - 'app/models/wiki_page.rb' - 'lib/gitlab/github_import/importer/releases_importer.rb' @@ -514,7 +512,6 @@ Security/YAMLLoad: - 'spec/config/mail_room_spec.rb' - 'spec/initializers/secret_token_spec.rb' - 'spec/lib/gitlab/prometheus/additional_metrics_parser_spec.rb' - - 'spec/models/project_services/kubernetes_service_spec.rb' # Offense count: 34 # Configuration parameters: EnforcedStyle. diff --git a/CHANGELOG.md b/CHANGELOG.md index 2180f24f7e..9e24988705 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,20 +2,27 @@ documentation](doc/development/changelog.md) for instructions on adding your own entry. -## 12.0.9 +## 12.1.11 + +- No changes. + +## 12.1.10 + +- No changes. + +## 12.1.9 ### Security (1 change) -- Upgrade pages to 1.6.3. +- Upgrade pages to 1.7.2. -## 12.0.8 +## 12.1.8 -### Security (22 changes) +### Security (21 changes) - Ensure only authorised users can create notes on Merge Requests and Issues. - Add :login_recaptcha_protection_enabled setting to prevent bots from brute-force attacks. -- Queries for Upload should be scoped by model. - Speed up regexp in namespace format by failing fast after reaching maximum namespace depth. - Limit the size of issuable description and comments. - Send TODOs for comments on commits correctly. @@ -37,36 +44,349 @@ entry. - Fix SSRF via DNS rebinding in Kubernetes Integration. -## 12.0.7 +## 12.1.7 - Unreleased due to QA failure. -## 12.0.6 +## 12.1.6 ### Security (2 changes) -- Upgrade Gitaly to 1.47.2 to prevent revision flag injection exploits. -- Upgrade pages to 1.6.2 to prevent gitlab api token recovery from cookie. +- Upgrade Gitaly to 1.53.2 to prevent revision flag injection exploits. +- Upgrade pages to 1.7.1 to prevent gitlab api token recovery from cookie. -## 12.0.5 +## 12.1.5 - No changes. -## 12.0.4 +## 12.1.4 + +### Fixed (3 changes, 1 of them is from the community) + +- Properly translate term in projects list. !30958 +- Add exclusive lease to mergeability check process. !31082 +- Fix Docker in Docker (DIND) listen port behavior change by adding DOCKER_TLS_CERTDIR in CI job templates. !31201 (Cameron Boulton) + +### Performance (1 change) + +- Improve job log rendering performance. !31262 + + +## 12.1.3 + +### Fixed (11 changes) + +- Prevent multiple confirmation modals from opening when deleting a repository. !30532 +- Fix the project auto devops API. !30946 +- Fix "Certificate misses intermediates" UI error when enabling Let's Encrypt integration for pages domain. !30995 +- Fix xterm css not loading for environment terminal. !31023 +- Set DOCKER_TLS_CERTDIR in Auto Dev-Ops CI template to fix jobs using Docker-in-Docker. !31078 +- Set DOCKER_TLS_CERTDIR in CI job templates to fix Docker-in-Docker service. !31080 +- Support Docker OCI images. !31127 +- Fix error rendering submodules in MR diffs when there is no .gitmodules. !31162 +- Fix pdf.js rendering pages in the wrong order. !31222 +- Fix exception handling in Gitaly autodetection. !31285 +- Fix bug that caused diffs not to show on MRs with changes to submodules. + +### Performance (1 change) + +- Optimise import performance. !31045 + + +## 12.1.2 + +### Security (1 change) + +- Use source project as permissions reference for MergeRequestsController#pipelines. ### Security (9 changes) - Restrict slash commands to users who can log in. - Patch XSS issue in wiki links. +- Queries for Upload should be scoped by model. - Filter merge request params on the new merge request page. - Fix Server Side Request Forgery mitigation bypass. - Show badges if pipelines are public otherwise default to project permissions. - Do not allow localhost url redirection in GitHub Integration. - Do not show moved issue id for users that cannot read issue. -- Use source project as permissions reference for MergeRequestsController#pipelines. - Drop feature to take ownership of trigger token. +## 12.1.1 + +- No changes. + +## 12.1.0 + +### Security (11 changes, 2 of them are from the community) + +- Update tar to 2.2.2. !29949 (Takuya Noguchi) +- Update lodash to 4.7.14 and lodash.mergewith to 4.6.2. !30602 (Takuya Noguchi) +- Correctly check permissions when creating snippet notes. +- Gate MR head_pipeline behind read_pipeline ability. +- Prevent Billion Laughs attack. +- Add missing authorizations in GraphQL. +- Fix Denial of Service for comments when rendering issues/MR comments. +- Expose merge requests count based on user access. +- Fix DoS vulnerability in color validation regex. +- Prevent the detection of merge request templates by unauthorized users. +- Persist tmp snippet uploads at users. + +### Removed (7 changes) + +- Disable Kubernetes credential passthrough for managed project-level clusters. !29262 +- Remove deprecated group routes. !29351 +- Remove support for creating non-RBAC kubernetes clusters. !29614 +- Remove Kubernetes service integration and Kubernetes service template from available deployment platforms. !29786 +- Remove MySQL support. !29790 +- Remove depreated /u/:username routing. !30044 +- Remove support for legacy pipeline triggers. !30133 + +### Fixed (84 changes, 14 of them are from the community) + +- Update a user's routes after updating their name. !23272 +- Show poper panel when validation error occurs in admin settings panels. !25434 +- Expect bytes from Gitaly RPC GetRawChanges. !28164 +- Sanitize LDAP output in Rake tasks. !28427 +- Left align mr widget icons and text. !28561 +- Keep the empty folders in the tree. !29196 +- Fix incorrect emoji placement in commit diff discussion. !29445 +- Fix favicon path with uploads of object store. !29482 (Roger Meier) +- Remove duplicate trailing +/- char in merge request discussions. !29518 +- Fix the signup form's username validation messages not displaying. !29678 (Jiaan Louw) +- Fix broken environment selector and always display it on monitoring dashboard. !29705 +- Fix Container Scanning job timeout when using the kubernetes executor. !29706 +- Look for new branches more carefully. !29761 +- Fix nested lists unnecessary margin. !29775 (Kuba Kopeć) +- Fix reports jobs timing out because of cache. !29780 +- Fix Double Border in Profile Page. !29784 (Yoginth <@yo>) +- Remove minimum character limits for fuzzy searches when using a CTE. !29810 +- Set default sort method for dashboard projects list. !29830 (David Palubin) +- Protect TeamCity builds from triggering when a branch has been deleted. And a MR-option. !29836 (Nikolay Novikov, Raphael Tweitmann) +- Fix pipeline schedule does not run correctly when it's scheduled at the same time with the cron worker. !29848 +- Always shows author of created issue/started discussion/comment in HTML body and text of email. !29886 (Frank van Rest) +- Build correct basenames for title search results. !29898 +- Resolve "500 error when forking via the web IDE button". !29909 +- Turn commit sha in monitor charts popover to link. !29914 +- Fix broken URLs for uploads with a plus in the filename. !29915 +- Retry fetching Kubernetes Secret#token (#63507). !29922 +- Enforce presence of pipeline when "Pipeline must succeed" project setting is enabled. !29926 +- Fix unresponsive reply button in discussions. !29936 +- Allow asynchronous rebase operations to be monitored. !29940 +- Resolve Avatar in Please sign in pattern too large. !29944 +- Persist the cluster a deployment was deployed to. !29960 +- Fix runner tags search dropdown being empty when there are tags. !29985 +- Display the correct amount of projects being migrated/rolled-back to Hashed Storage when specifying ranges. !29996 +- Resolve Environment details header border misaligned. !30011 +- Correct link to docs for External Dashboard. !30019 +- Fix Jupyter-Git integration. !30020 (Amit Rathi) +- Update Mermaid to 8.1.0. !30036 +- Fix background migrations failing with unused replication slot. !30042 +- Disable Rails SQL query cache when applying service templates. !30060 +- Set higher TTL for write lock of trace to prevent concurrent archiving. !30064 +- Fix charts on Cluster health page. !30073 +- Display boards filter bar on mobile. !30120 +- Fix IDE editor not showing when switching back from preview. !30135 +- Support note position tracing on an image. !30158 +- Replace slugifyWithHyphens with improved slugify function. !30172 (Luke Ward) +- 'Open' and 'Closed' issue board lists no longer display a redundant tooltip. !30187 +- Fix pipelines table to update without refreshing after action. !30190 +- Change ruby_process_start_time_seconds metric to unix timestamp instead of seconds from boot. !30195 +- Fix attachments using the wrong URLs in e-mails. !30197 +- Make sure UnicornSampler is started only in master process. !30215 +- Don't show image diff note on text file. !30221 +- Fix median counting for cycle analytics. !30229 +- In WebIDE allow adding new entries of the same name as deleted entry. !30239 +- Don't let logged out user do manual order. !30264 +- Skip spam check for task list updates. !30279 +- Make Housekeeping button do a full garbage collection. !30289 +- Removing an image should not output binary data. !30314 +- Fix spacing issues for toasts. !30345 +- Fix race in forbid_sidekiq_in_transactions.rb. !30359 +- Fixed back navigation for projects filter. !30373 +- Fix environments broken terminal. !30401 +- Fix invalid SSL certificate errors on Drone CI service. !30422 +- Fix subgroup url in search drop down. !30457 +- Make unicorn_workers to return meaningful results. !30506 +- Fix wrong URL when creating milestones from instance milestones dashboard. !30512 +- Fixed incorrect line wrap for assignee label in issues. !30523 (Marc Schwede) +- Improves section header whitespace on the CI/CD Charts page. !30531 +- Prevent multiple confirmation modals from opening when deleting a repository. !30532 +- Aligns CI icon in Merge Request dashboard. !30558 +- Add text-secondary to controls in project list. !30567 +- Review Tools: Add large z-index to toolbar. !30583 +- Hide restricted and disallowed visibility radios. !30590 +- Resolve Label picker: Line break on long label titles. !30610 +- Fix a bug that prevented projects containing merge request diff comments from being imported. !30630 +- I fixed z index bug in diff page. !30657 (Faruk Can) +- Allow client authentication method to be configured for OpenID Connect. !30683 (Vincent Fazio) +- Fix commenting before discussions are loaded. !30724 +- Fix linebreak rendering in Mermaid flowcharts. !30730 +- Make httpclient respect system SSL configuration. !30749 +- Bump fog-aws to v3.5.2. !30803 +- API: Allow changing only ci_default_git_depth. !30888 (Mathieu Parent) +- Search issuables by iids. (Riccardo Padovani) +- Fix broken warnings while Editing Issues and Edit File on MR. +- Make sure we are receiving the proper information on the MR Popover by updating the IID in the graphql query. + +### Changed (39 changes, 8 of them are from the community) + +- Improve group list UI. !26542 +- Backport and Docs for Paginate license management and add license search. !27602 +- Update merge requests section description text on project settings page. !27838 +- Knative version bump 0.5 -> 0.6. !28798 (Chris Baumbauer) +- Add salesforce logo for salesforce SSO. !28857 +- Enforced requirements for UltraAuth users. !28941 (Kartikey Tanna) +- Return 400 when deleting tags more often than once per hour. !29448 +- Add identity information to external authorization requests. !29461 +- Enable just-in-time Kubernetes resource creation for project-level clusters. !29515 +- renamed discussion to thread in merge-request and issue timeline. !29553 (Michel Engelen) +- Changed HTTP Status Code for disabled repository on /branches and /commits to 404. !29585 (Sam Battalio) +- Enable Git object pools. !29595 (jramsay) +- Updated container registry to display error message when special characters in path. Documentation has also been updated. !29616 +- Allow developers to delete tags. !29668 +- Will not update issue timestamps when changing positions in a list. !29677 +- Include a link back to the MR for Visual Review feedback form. !29719 +- Improve discussion reply buttons layout and how jump to next discussion button appears. !29779 +- Renders a pre-release tag for releases. !29797 +- Migrate NULL values for users.private_profile column and update users API to reject null value for private_profile. !29888 +- Re-name files in Web IDE in a more natural way. !29948 +- Include events from subgroups in group's activity. !29953 (Fabian Schneider @fabsrc) +- Upgrade to Gitaly v1.49.0. !29990 +- Remove group and instance clusters feature flag. !30124 +- Add support for creating random passwords in user creation API. !30138 +- Support CIDR notation in IP rate limiter. !30146 +- Add Redis call details in Peek performance bar. !30191 +- Create Knative role and binding with service account. !30235 +- Add cleanup migration for MR's multiple assignees. !30261 +- Updates PHP template to php:latest to ensure always targeting latest stable. !30319 (Paul Giberson) +- Format `from` and `to` fields in JSON audit log. !30333 +- Upgrade to Gitaly v1.51.0. !30353 +- Modify cycle analytics on project level. !30356 +- Extract clair version as CLAIR_EXECUTABLE_VERSION variable and update clair executable from v8 to v11. !30396 +- Upgrade Rouge to 3.5.1. !30431 +- Move multiple issue boards to core. !30503 +- Upgrade to Gitaly v1.52.0. !30568 +- Upgrade to Gitaly v1.53.0. !30614 +- Open WebIDE in fork when user doesn't have access. !30642 +- Propagate python version variable. (Can Eldem) + +### Performance (25 changes, 1 of them is from the community) + +- Remove tooltip directive on project avatar image component. !29631 (George Tsiolis) +- Use Rugged if we detect storage is NFS and we can access the disk. !29725 +- Add endpoint for fetching diverging commit counts. !29802 +- Cache feature flag names in Redis for a minute. !29816 +- Avoid storing backtraces from Bitbucket Cloud imports in the database. !29862 +- Remove import columns from projects table. !29863 +- Enable Gitaly ref name caching for discussions.json. !29951 +- Allow caching of negative FindCommit matches. !29952 +- Eliminate N+1 queries in Dashboard::TodosController. !29954 +- Memoize non-existent custom appearances. !29957 +- Add a separate endpoint for fetching MRs serialized as widgets. !29979 +- Use CTE to fetch clusters hierarchy in single query. !30063 +- Enable Gitaly ref caching for SearchController. !30105 +- Avoid loading pipeline status in search results. !30111 +- Improve performance of MergeRequestsController#ci_environment_status endpoint. !30224 +- Add a memory cache local to the thread to reduce Redis load. !30233 +- Cache Flipper persisted names directly to local memory storage. !30265 +- Limit amount of JUnit tests returned. !30274 +- Cache Flipper feature flags in L1 and L2 caches. !30276 +- Prevent amplification of ReactiveCachingWorker jobs upon failures. !30432 +- Allow ReactiveCaching to support nil value. !30456 +- Improve performance of fetching environments statuses. !30560 +- Do Redis lookup in batches in ActiveSession.sessions_from_ids. !30561 +- Remove catfile cache feature flag. !30750 +- Fix Gitaly auto-detection caching. !30954 + +### Added (46 changes, 12 of them are from the community) + +- Document the negative commit message push rule for the API. !14004 (Maikel Vlasman) +- Expose saml_provider_id in the users API. !14045 +- Improve Project API. !28327 (Mathieu Parent) +- Remove Sentry from application settings. !28447 (Roger Meier) +- Implement borderless discussion design with new reply field. !28580 +- Enable terminals for instance and group clusters. !28613 +- Resolve Multiple discussions per line in merge request diffs. !28748 +- Adds link to Grafana in Admin > Monitoring settings when grafana is enabled in config. !28937 (Romain Maneschi) +- Bring Manual Ordering on Issue List. !29410 +- Added commit type to tree GraphQL response. !29412 +- New API for User Counts, updates on success of an MR the count on top and in other tabs. !29441 +- Add option to limit time tracking units to hours. !29469 (Jon Kolb) +- Add confirmation for registry image deletion. !29505 +- Sync merge ref upon mergeability check. !29569 +- Show an Upcoming Status for Releases. !29577 +- Add order_by and sort params to list runner jobs api. !29629 (Sujay Patel) +- Allow custom username for deploy tokens. !29639 +- Add a verified pill next to email addresses under the admin users section. !29669 +- Add rake task to clean orphan artifact files. !29681 +- Render GFM in GraphQL. !29700 +- Upgrade asciidoctor version to 2.0.10. !29741 (Rajendra Kadam) +- Allow auto-completing scoped labels. !29749 +- Enable syntax highlighting for AsciiDoc. !29835 (Guillaume Grossetie) +- Expose placeholder element for metrics charts in GFM. !29861 +- Added a min schema version check to db:migrate. !29882 +- Extract zoom link from issue and pass to frontend. !29910 (raju249) +- GraphQL mutations for add, remove and toggle emoji. !29919 +- Labeled issue boards can now collapse. !29955 +- Allow Ingress to be uninstalled from the UI. !29977 +- Add permission check to metrics dashboards endpoint. !30017 +- Allow JupyterHub to be uninstalled from the UI. !30097 +- Allow GitLab Runner to be uninstalled from the UI. !30176 +- GraphQL mutations for managing Notes. !30210 +- Add API for CRUD group clusters. !30213 +- Add endpoint to move multiple issues in boards. !30216 +- Enable terminals button for group clusters. !30255 +- Prevent excessive sanitization of AsciiDoc ouptut. !30290 (Guillaume Grossetie) +- Extend `MergeToRefService` to create merge ref from an arbitrary ref. !30361 +- Add CI variable to provide GitLab HOST. !30417 +- Add migration for adding rule_type to approval_project_rules. !30575 +- Enable section anchors in Asciidoctor. !30666 (Guillaume Grossetie) +- Preserve footnote link ids in Asciidoctor. !30790 (Guillaume Grossetie) +- Add support for generating SSL certificates for custon pages domains through Let's Encrypt. +- Introduce default: for gitlab-ci.yml. +- Move Multiple Issue Boards for Projects to Core. +- Add Gitaly data to the usage ping. + +### Other (35 changes, 15 of them are from the community) + +- Remove unresolved class and fixed height in discussion header. !28440 (David Palubin) +- Moved EE/CE code differences for file `app/views/search/_category.html.haml` into CE. !28755 (Michel Engelen) +- Changes "Todo" to "To Do" in the UI for clarity. !28844 +- Migrate GitLab managed project-level clusters to unmanaged if a Kubernetes namespace was unable to be created. !29251 +- Migrate GitLab managed project-level clusters to unmanaged if they are missing a Kubernetes service account token. !29648 +- Add strategies column to operations_feature_flag_scopes table. !29808 +- Disallow `NULL` values for `geo_nodes.primary` column. !29818 (Arun Kumar Mohan) +- Replace 'JIRA' with 'Jira'. !29849 (Takuya Noguchi) +- Support jsonb default in add_column_with_default migration helper. !29871 +- Update pagination prev and next texts. !29911 +- Adds metrics to measure cost of expensive operations. !29928 +- Always allow access to health endpoints from localhost in dev. !29930 +- Update GitLab Runner Helm Chart to 0.6.0. !29982 +- Use darker gray color for system note metadata and edited text. !30054 +- Fix typo in docs about Elasticsearch. !30162 (Takuya Noguchi) +- Fix typo in code comments about Elasticsearch. !30163 (Takuya Noguchi) +- Update mixin-deep to 1.3.2. !30223 (Takuya Noguchi) +- Migrate markdown header_spec.js to Jest. !30228 (Martin Hobert) +- Remove istanbul JavaScript package. !30232 (Takuya Noguchi) +- Centralize markdownlint configuration. !30263 +- Use PostgreSQL 9.6.11 in CI tests. !30270 (Takuya Noguchi) +- Fix typo in updateResolvableDiscussionsCounts action. !30278 (Frank van Rest) +- Change color for namespace in commit search. !30312 +- Remove applySuggestion from notes service. !30399 (Frank van Rest) +- Improved readability of storage statistics in group / project admin area. !30406 +- Alignign empty container registry message with design guidelines. !30502 +- Remove toggleAward from notes service. !30536 (Frank van Rest) +- Remove deleteNote from notes service. !30537 (Frank van Rest) +- change the use of boardService in favor of boardsStore on footer for the board component. !30616 (eduarmreyes) +- Update example Prometheus scrape config. !30739 +- Update GitLab Pages to v1.7.0. +- Add token_encrypted column to operations_feature_flags_clients table. +- Removes EE diff for app/views/profiles/preferences/show.html.haml. +- Removes EE differences for app/views/layouts/fullscreen.html.haml. +- Removes EE differences for app/views/admin/users/show.html.haml. + + ## 12.0.3 (2019-06-27) - No changes. @@ -415,6 +735,15 @@ entry. - Moves snowplow to CE repo. +## 11.11.4 (2019-06-26) + +### Fixed (3 changes) + +- Fix Fogbugz Importer not working. !29383 +- Fix scrolling to top on assignee change. !29500 +- Fix IDE commit using latest ref in branch and overriding contents. !29769 + + ## 11.11.3 (2019-06-10) ### Fixed (5 changes) @@ -628,6 +957,27 @@ entry. - Add some frozen string to spec/**/*.rb. (gfyoung) +## 11.10.8 (2019-06-27) + +- No changes. +### Security (10 changes) + +- Fix Denial of Service for comments when rendering issues/MR comments. +- Gate MR head_pipeline behind read_pipeline ability. +- Fix DoS vulnerability in color validation regex. +- Expose merge requests count based on user access. +- Persist tmp snippet uploads at users. +- Add missing authorizations in GraphQL. +- Disable Rails SQL query cache when applying service templates. +- Prevent Billion Laughs attack. +- Correctly check permissions when creating snippet notes. +- Prevent the detection of merge request templates by unauthorized users. + +### Performance (1 change) + +- Add improvements to global search of issues and merge requests. !27817 + + ## 11.10.6 (2019-06-04) ### Fixed (7 changes, 1 of them is from the community) diff --git a/Dangerfile b/Dangerfile index d0a605f8d8..094d55e865 100644 --- a/Dangerfile +++ b/Dangerfile @@ -19,4 +19,5 @@ unless helper.release_automation? danger.import_dangerfile(path: 'danger/single_codebase') danger.import_dangerfile(path: 'danger/gitlab_ui_wg') danger.import_dangerfile(path: 'danger/ce_ee_vue_templates') + danger.import_dangerfile(path: 'danger/only_documentation') end diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 6bd281069f..ede3db7b44 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -1.47.3 +1.53.3 diff --git a/GITLAB_PAGES_VERSION b/GITLAB_PAGES_VERSION index 266146b87c..f8a696c8dc 100644 --- a/GITLAB_PAGES_VERSION +++ b/GITLAB_PAGES_VERSION @@ -1 +1 @@ -1.6.3 +1.7.2 diff --git a/Gemfile b/Gemfile index c9a95fb7a3..8bffc2a973 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source 'https://rubygems.org' -gem 'rails', '5.1.7' +gem 'rails', '5.2.3' # Improves copy-on-write performance for MRI gem 'nakayoshi_fork', '~> 0.0.4' @@ -11,7 +11,7 @@ gem 'responders', '~> 2.0' gem 'sprockets', '~> 3.7.0' # Default values for AR models -gem 'gitlab-default_value_for', '~> 3.1.1', require: 'default_value_for' +gem 'default_value_for', '~> 3.2.0' # Supported DBs gem 'mysql2', '~> 0.4.10', group: :mysql @@ -84,6 +84,7 @@ gem 'rack-cors', '~> 1.0.0', require: 'rack/cors' gem 'graphql', '~> 1.8.0' gem 'graphiql-rails', '~> 1.4.10' gem 'apollo_upload_server', '~> 2.0.0.beta3' +gem 'graphql-docs', '~> 1.6.0', group: [:development, :test] # Disable strong_params so that Mash does not respond to :permitted? gem 'hashie-forbidden_attributes' @@ -99,7 +100,7 @@ gem 'carrierwave', '~> 1.3' gem 'mini_magick' # for backups -gem 'fog-aws', '~> 3.3' +gem 'fog-aws', '~> 3.5' # Locked until fog-google resolves https://github.com/fog/fog-google/issues/421. # Also see config/initializers/fog_core_patch.rb. gem 'fog-core', '= 2.1.0' @@ -129,10 +130,10 @@ gem 'rdoc', '~> 6.0' gem 'org-ruby', '~> 0.9.12' gem 'creole', '~> 0.5.0' gem 'wikicloth', '0.8.1' -gem 'asciidoctor', '~> 1.5.8' +gem 'asciidoctor', '~> 2.0.10' gem 'asciidoctor-include-ext', '~> 0.3.1', require: false -gem 'asciidoctor-plantuml', '0.0.8' -gem 'rouge', '~> 3.1' +gem 'asciidoctor-plantuml', '0.0.9' +gem 'rouge', '~> 3.5' gem 'truncato', '~> 0.7.11' gem 'bootstrap_form', '~> 4.2.0' gem 'nokogiri', '~> 1.10.3' @@ -211,7 +212,7 @@ gem 'discordrb-webhooks-blackst0ne', '~> 3.3', require: false # HipChat integration gem 'hipchat', '~> 1.5.0' -# JIRA integration +# Jira integration gem 'jira-ruby', '~> 1.4' # Flowdock integration @@ -300,13 +301,16 @@ gem 'peek-pg', '~> 1.3.0', group: :postgres gem 'peek-rblineprof', '~> 0.2.0' gem 'peek-redis', '~> 1.2.0' +# Memory benchmarks +gem 'derailed_benchmarks', require: false + # Metrics group :metrics do gem 'method_source', '~> 0.8', require: false gem 'influxdb', '~> 0.2', require: false # Prometheus - gem 'prometheus-client-mmap', '~> 0.9.4' + gem 'prometheus-client-mmap', '~> 0.9.8' gem 'raindrops', '~> 0.18' end @@ -336,7 +340,7 @@ group :development, :test do gem 'database_cleaner', '~> 1.7.0' gem 'factory_bot_rails', '~> 4.8.2' - gem 'rspec-rails', '~> 3.7.0' + gem 'rspec-rails', '~> 3.8.0' gem 'rspec-retry', '~> 0.6.1' gem 'rspec_profiling', '~> 0.0.5' gem 'rspec-set', '~> 0.1.3' @@ -365,6 +369,7 @@ group :development, :test do gem 'haml_lint', '~> 0.31.0', require: false gem 'simplecov', '~> 0.16.1', require: false gem 'bundler-audit', '~> 0.5.0', require: false + gem 'mdl', '~> 0.5.0', require: false gem 'benchmark-ips', '~> 2.3.0', require: false @@ -374,7 +379,6 @@ group :development, :test do gem 'activerecord_sane_schema_dumper', '1.0' gem 'stackprof', '~> 0.2.10', require: false - gem 'derailed_benchmarks', require: false gem 'simple_po_parser', '~> 1.1.2', require: false @@ -417,7 +421,7 @@ gem 'vmstat', '~> 2.3.0' gem 'sys-filesystem', '~> 1.1.6' # SSH host key support -gem 'net-ssh', '~> 5.0' +gem 'net-ssh', '~> 5.2' gem 'sshkey', '~> 2.0' # Required for ED25519 SSH host key support @@ -427,7 +431,7 @@ group :ed25519 do end # Gitaly GRPC client -gem 'gitaly-proto', '~> 1.32.0', require: 'gitaly' +gem 'gitaly-proto', '~> 1.37.0', require: 'gitaly' gem 'grpc', '~> 1.19.0' diff --git a/Gemfile.lock b/Gemfile.lock index 4cebf73f17..60939ae918 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -6,44 +6,48 @@ GEM ace-rails-ap (4.1.2) acme-client (2.0.2) faraday (~> 0.9, >= 0.9.1) - actioncable (5.1.7) - actionpack (= 5.1.7) + actioncable (5.2.3) + actionpack (= 5.2.3) nio4r (~> 2.0) - websocket-driver (~> 0.6.1) - actionmailer (5.1.7) - actionpack (= 5.1.7) - actionview (= 5.1.7) - activejob (= 5.1.7) + websocket-driver (>= 0.6.1) + actionmailer (5.2.3) + actionpack (= 5.2.3) + actionview (= 5.2.3) + activejob (= 5.2.3) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (5.1.7) - actionview (= 5.1.7) - activesupport (= 5.1.7) + actionpack (5.2.3) + actionview (= 5.2.3) + activesupport (= 5.2.3) rack (~> 2.0) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (5.1.7) - activesupport (= 5.1.7) + actionview (5.2.3) + activesupport (= 5.2.3) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.3) - activejob (5.1.7) - activesupport (= 5.1.7) + activejob (5.2.3) + activesupport (= 5.2.3) globalid (>= 0.3.6) - activemodel (5.1.7) - activesupport (= 5.1.7) - activerecord (5.1.7) - activemodel (= 5.1.7) - activesupport (= 5.1.7) - arel (~> 8.0) + activemodel (5.2.3) + activesupport (= 5.2.3) + activerecord (5.2.3) + activemodel (= 5.2.3) + activesupport (= 5.2.3) + arel (>= 9.0) activerecord-explain-analyze (0.1.0) activerecord (>= 4) pg activerecord_sane_schema_dumper (1.0) rails (>= 5, < 6) - activesupport (5.1.7) + activestorage (5.2.3) + actionpack (= 5.2.3) + activerecord (= 5.2.3) + marcel (~> 0.3.1) + activesupport (5.2.3) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 0.7, < 2) minitest (~> 5.1) @@ -60,17 +64,17 @@ GEM apollo_upload_server (2.0.0.beta.3) graphql (>= 1.8) rails (>= 4.2) - arel (8.0.0) + arel (9.0.0) asana (0.8.1) faraday (~> 0.9) faraday_middleware (~> 0.9) faraday_middleware-multi_json (~> 0.0) oauth2 (~> 1.0) - asciidoctor (1.5.8) + asciidoctor (2.0.10) asciidoctor-include-ext (0.3.1) asciidoctor (>= 1.5.6, < 3.0.0) - asciidoctor-plantuml (0.0.8) - asciidoctor (~> 1.5) + asciidoctor-plantuml (0.0.9) + asciidoctor (>= 1.5.6, < 3.0.0) ast (2.4.0) atomic (1.1.99) attr_encrypted (3.1.0) @@ -163,6 +167,8 @@ GEM html-pipeline declarative (0.0.10) declarative-option (0.1.0) + default_value_for (3.2.0) + activerecord (>= 3.2.0, < 6.0) derailed_benchmarks (1.3.5) benchmark-ips (~> 2) get_process_mem (~> 0) @@ -214,6 +220,8 @@ GEM excon (0.62.0) execjs (2.6.0) expression_parser (0.9.0) + extended-markdown-filter (0.6.0) + html-pipeline (~> 2.0) factory_bot (4.8.2) activesupport (>= 3.0.0) factory_bot_rails (4.8.2) @@ -245,7 +253,7 @@ GEM fog-json ipaddress (~> 0.8) xml-simple (~> 1.1) - fog-aws (3.3.0) + fog-aws (3.5.2) fog-core (~> 2.1) fog-json (~> 1.1) fog-xml (~> 0.1) @@ -288,6 +296,7 @@ GEM fuubar (2.2.0) rspec-core (~> 3.0) ruby-progressbar (~> 1.4) + gemoji (3.0.1) gemojione (3.3.0) json get_process_mem (0.2.3) @@ -301,11 +310,9 @@ GEM gettext_i18n_rails (>= 0.7.1) po_to_json (>= 1.0.0) rails (>= 3.2.0) - gitaly-proto (1.32.0) + gitaly-proto (1.37.0) grpc (~> 1.0) github-markup (1.7.0) - gitlab-default_value_for (3.1.1) - activerecord (>= 3.2.0, < 6.0) gitlab-labkit (0.3.0) actionpack (~> 5) activesupport (~> 5) @@ -370,6 +377,14 @@ GEM railties sprockets-rails graphql (1.8.1) + graphql-docs (1.6.0) + commonmarker (~> 0.16) + escape_utils (~> 1.2) + extended-markdown-filter (~> 0.4) + gemoji (~> 3.0) + graphql (~> 1.6) + html-pipeline (~> 2.8) + sass (~> 3.4) grpc (1.19.0) google-protobuf (~> 3.1) googleapis-common-protos-types (~> 1.0.0) @@ -459,6 +474,7 @@ GEM kgio (2.11.2) knapsack (1.17.0) rake + kramdown (1.17.0) kubeclient (4.2.2) http (~> 3.0) recursive-open-struct (~> 1.0, >= 1.0.4) @@ -492,6 +508,12 @@ GEM mail (2.7.1) mini_mime (>= 0.1.1) mail_room (0.9.1) + marcel (0.3.3) + mimemagic (~> 0.3.2) + mdl (0.5.0) + kramdown (~> 1.12, >= 1.12.0) + mixlib-cli (~> 1.7, >= 1.7.0) + mixlib-config (~> 2.2, >= 2.2.1) memoist (0.16.0) memoizable (0.4.2) thread_safe (~> 0.3, >= 0.3.1) @@ -505,6 +527,9 @@ GEM mini_mime (1.0.1) mini_portile2 (2.4.0) minitest (5.11.3) + mixlib-cli (1.7.0) + mixlib-config (2.2.18) + tomlrb msgpack (1.2.10) multi_json (1.13.1) multi_xml (0.6.0) @@ -515,7 +540,7 @@ GEM mysql2 (0.4.10) nakayoshi_fork (0.0.4) net-ldap (0.16.0) - net-ssh (5.0.1) + net-ssh (5.2.0) netrc (0.11.0) nio4r (2.3.1) nokogiri (1.10.3) @@ -652,7 +677,7 @@ GEM parser unparser procto (0.0.3) - prometheus-client-mmap (0.9.4) + prometheus-client-mmap (0.9.8) pry (0.11.3) coderay (~> 1.1.0) method_source (~> 0.9.0) @@ -687,17 +712,18 @@ GEM rack-test (1.1.0) rack (>= 1.0, < 3) rack-timeout (0.5.1) - rails (5.1.7) - actioncable (= 5.1.7) - actionmailer (= 5.1.7) - actionpack (= 5.1.7) - actionview (= 5.1.7) - activejob (= 5.1.7) - activemodel (= 5.1.7) - activerecord (= 5.1.7) - activesupport (= 5.1.7) + rails (5.2.3) + actioncable (= 5.2.3) + actionmailer (= 5.2.3) + actionpack (= 5.2.3) + actionview (= 5.2.3) + activejob (= 5.2.3) + activemodel (= 5.2.3) + activerecord (= 5.2.3) + activestorage (= 5.2.3) + activesupport (= 5.2.3) bundler (>= 1.3.0) - railties (= 5.1.7) + railties (= 5.2.3) sprockets-rails (>= 2.0.0) rails-controller-testing (1.0.2) actionpack (~> 5.x, >= 5.0.1) @@ -711,12 +737,12 @@ GEM rails-i18n (5.1.1) i18n (>= 0.7, < 2) railties (>= 5.0, < 6) - railties (5.1.7) - actionpack (= 5.1.7) - activesupport (= 5.1.7) + railties (5.2.3) + actionpack (= 5.2.3) + activesupport (= 5.2.3) method_source rake (>= 0.8.7) - thor (>= 0.18.1, < 2.0) + thor (>= 0.19.0, < 2.0) rainbow (3.0.0) raindrops (0.19.0) rake (12.3.2) @@ -770,41 +796,41 @@ GEM retriable (3.1.2) rinku (2.0.0) rotp (2.1.2) - rouge (3.3.0) + rouge (3.5.1) rqrcode (0.7.0) chunky_png rqrcode-rails3 (0.1.7) rqrcode (>= 0.4.2) - rspec (3.7.0) - rspec-core (~> 3.7.0) - rspec-expectations (~> 3.7.0) - rspec-mocks (~> 3.7.0) - rspec-core (3.7.1) - rspec-support (~> 3.7.0) - rspec-expectations (3.7.0) + rspec (3.8.0) + rspec-core (~> 3.8.0) + rspec-expectations (~> 3.8.0) + rspec-mocks (~> 3.8.0) + rspec-core (3.8.2) + rspec-support (~> 3.8.0) + rspec-expectations (3.8.4) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.7.0) - rspec-mocks (3.7.0) + rspec-support (~> 3.8.0) + rspec-mocks (3.8.1) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.7.0) + rspec-support (~> 3.8.0) rspec-parameterized (0.4.2) binding_ninja (>= 0.2.3) parser proc_to_ast rspec (>= 2.13, < 4) unparser - rspec-rails (3.7.2) + rspec-rails (3.8.2) actionpack (>= 3.0) activesupport (>= 3.0) railties (>= 3.0) - rspec-core (~> 3.7.0) - rspec-expectations (~> 3.7.0) - rspec-mocks (~> 3.7.0) - rspec-support (~> 3.7.0) + rspec-core (~> 3.8.0) + rspec-expectations (~> 3.8.0) + rspec-mocks (~> 3.8.0) + rspec-support (~> 3.8.0) rspec-retry (0.6.1) rspec-core (> 3.3) rspec-set (0.1.3) - rspec-support (3.7.1) + rspec-support (3.8.2) rspec_junit_formatter (0.4.1) rspec-core (>= 2, < 4, != 2.12.0) rspec_profiling (0.0.5) @@ -943,6 +969,7 @@ GEM parslet (~> 1.8.0) toml-rb (1.0.0) citrus (~> 3.0, > 3.0) + tomlrb (1.2.8) truncato (0.7.11) htmlentities (~> 4.3.1) nokogiri (>= 1.7.0, <= 2.0) @@ -999,7 +1026,7 @@ GEM hashdiff webpack-rails (0.9.11) railties (>= 3.2.0) - websocket-driver (0.6.5) + websocket-driver (0.7.0) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.3) wikicloth (0.8.1) @@ -1025,9 +1052,9 @@ DEPENDENCIES akismet (~> 2.0) apollo_upload_server (~> 2.0.0.beta3) asana (~> 0.8.1) - asciidoctor (~> 1.5.8) + asciidoctor (~> 2.0.10) asciidoctor-include-ext (~> 0.3.1) - asciidoctor-plantuml (= 0.0.8) + asciidoctor-plantuml (= 0.0.9) attr_encrypted (~> 3.1.0) awesome_print babosa (~> 1.0.2) @@ -1056,6 +1083,7 @@ DEPENDENCIES creole (~> 0.5.0) database_cleaner (~> 1.7.0) deckar01-task_list (= 2.2.0) + default_value_for (~> 3.2.0) derailed_benchmarks device_detector devise (~> 4.6) @@ -1077,7 +1105,7 @@ DEPENDENCIES flipper-active_support_cache_store (~> 0.13.0) flowdock (~> 0.7) fog-aliyun (~> 0.3) - fog-aws (~> 3.3) + fog-aws (~> 3.5) fog-core (= 2.1.0) fog-google (~> 1.8) fog-local (~> 0.6) @@ -1091,9 +1119,8 @@ DEPENDENCIES gettext (~> 3.2.2) gettext_i18n_rails (~> 1.8.0) gettext_i18n_rails_js (~> 1.3) - gitaly-proto (~> 1.32.0) + gitaly-proto (~> 1.37.0) github-markup (~> 1.7.0) - gitlab-default_value_for (~> 3.1.1) gitlab-labkit (~> 0.3.0) gitlab-markup (~> 1.7.0) gitlab-sidekiq-fetcher (~> 0.4.0) @@ -1109,6 +1136,7 @@ DEPENDENCIES grape_logging (~> 1.7) graphiql-rails (~> 1.4.10) graphql (~> 1.8.0) + graphql-docs (~> 1.6.0) grpc (~> 1.19.0) haml_lint (~> 0.31.0) hamlit (~> 2.8.8) @@ -1134,6 +1162,7 @@ DEPENDENCIES lograge (~> 0.5) loofah (~> 2.2) mail_room (~> 0.9.1) + mdl (~> 0.5.0) memory_profiler (~> 0.9) method_source (~> 0.8) mimemagic (~> 0.3.2) @@ -1142,7 +1171,7 @@ DEPENDENCIES mysql2 (~> 0.4.10) nakayoshi_fork (~> 0.0.4) net-ldap - net-ssh (~> 5.0) + net-ssh (~> 5.2) nokogiri (~> 1.10.3) oauth2 (~> 1.4) octokit (~> 4.9) @@ -1173,7 +1202,7 @@ DEPENDENCIES peek-redis (~> 1.2.0) pg (~> 1.1) premailer-rails (~> 1.9.7) - prometheus-client-mmap (~> 0.9.4) + prometheus-client-mmap (~> 0.9.8) pry-byebug (~> 3.5.1) pry-rails (~> 0.3.4) puma (~> 3.12) @@ -1184,7 +1213,7 @@ DEPENDENCIES rack-oauth2 (~> 1.9.3) rack-proxy (~> 0.6.0) rack-timeout - rails (= 5.1.7) + rails (= 5.2.3) rails-controller-testing rails-i18n (~> 5.1) rainbow (~> 3.0) @@ -1199,10 +1228,10 @@ DEPENDENCIES redis-rails (~> 5.0.2) request_store (~> 1.3) responders (~> 2.0) - rouge (~> 3.1) + rouge (~> 3.5) rqrcode-rails3 (~> 0.1.7) rspec-parameterized - rspec-rails (~> 3.7.0) + rspec-rails (~> 3.8.0) rspec-retry (~> 0.6.1) rspec-set (~> 0.1.3) rspec_junit_formatter diff --git a/PROCESS.md b/PROCESS.md index 07b150ea46..22b68b0aac 100644 --- a/PROCESS.md +++ b/PROCESS.md @@ -84,44 +84,29 @@ star, smile, etc.). Some good tips about code reviews can be found in our [Code Review Guidelines]: https://docs.gitlab.com/ce/development/code_review.html +## Feature flags + +Overview and details of feature flag processes in development of GitLab itself is described in [feature flags process documentation](https://docs.gitlab.com/ee/development/feature_flags/process.html). + +Guides on how to include feature flags in your backend/frontend code while developing GitLab are described in [developing with feature flags documentation](https://docs.gitlab.com/ee/development/feature_flags/developing.html). + +Getting access and how to expose the feature to users is detailed in [controlling feature flags documentation](https://docs.gitlab.com/ee/development/feature_flags/controls.html). + +## Feature proposals from the 22nd to the 1st + +To allow the Product and Engineering teams time to discuss issues that will be placed into an upcoming milestone, +Product Managers must have their proposal for that milestone ready by the 22nd of each month. + +This proposal will be shared with Engineering for discussion, feedback, and planning. +The plan for the upcoming milestone must be finalized by the 1st of the month, one week before kickoff on the 8th. + ## Feature freeze on the 7th for the release on the 22nd -The feature freeze on the 7th has been discontinued. The [transition period overview](https://gitlab.com/gitlab-org/release/docs/blob/21cbd409dd5f157fe252f254f3e897f01908abe2/general/deploy/auto-deploy-transition.md#transition) +The feature freeze on the 7th has been discontinued. [Transition period overview](https://gitlab.com/gitlab-org/release/docs/blob/21cbd409dd5f157fe252f254f3e897f01908abe2/general/deploy/auto-deploy-transition.md#transition) describes the change to this process. During the transition period, the only guarantee that a change will be included in the release on the 22nd is if the change has been deployed to GitLab.com prior to this date. -### Feature flags - -Merge requests that make changes hidden behind a feature flag, or remove an -existing feature flag because a feature is deemed stable, may be merged (and -picked into the stable branches) up to the 19th of the month. Such merge -requests should have the ~"feature flag" label assigned, and don't require a -corresponding exception request to be created. - -A level of common sense should be applied when deciding whether to have a feature -behind a feature flag off or on by default. - -The following guidelines can be applied to help make this decision: - -* If the feature is not fully ready or functioning, the feature flag should be disabled by default. -* If the feature is ready but there are concerns about performance or impact, the feature flag should be enabled by default, but -disabled via chatops before deployment on GitLab.com environments. If the performance concern is confirmed, the final release should have the feature flag disabled by default. -* In most other cases, the feature flag can be enabled by default. - -For more information on rolling out changes using feature flags, read [through the documentation](https://docs.gitlab.com/ee/development/rolling_out_changes_using_feature_flags.html). - -In order to build the final package and present the feature for self-hosted -customers, the feature flag should be removed. This should happen before the -22nd, ideally _at least_ 2 days before. That means MRs with feature -flags being picked at the 19th would have quite a tight schedule, so picking -these _earlier_ is preferable. - -While rare, release managers may decide to reject picking a change into a stable -branch, even when feature flags are used. This might be necessary if the changes -are deemed problematic, too invasive, or there simply isn't enough time to -properly test how the changes behave on GitLab.com. - ### Between the 1st and the 7th These types of merge requests for the upcoming release need special consideration: diff --git a/README.md b/README.md index e64f04cea5..51dc87ac65 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ To see how GitLab looks please see the [features page on our website](https://ab - Manage Git repositories with fine grained access controls that keep your code secure - Perform code reviews and enhance collaboration with merge requests -- Complete continuous integration (CI) and CD pipelines to builds, test, and deploy your applications +- Complete continuous integration (CI) and continuous deployment/delivery (CD) pipelines to build, test, and deploy your applications - Each project can also have an issue tracker, issue board, and a wiki - Used by more than 100,000 organizations, GitLab is the most popular solution to manage Git repositories on-premises - Completely free and open source (MIT Expat license) diff --git a/VERSION b/VERSION index 18eb8a00cf..d6cf4b5bb6 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -12.0.9 +12.1.11 diff --git a/app/assets/images/auth_buttons/salesforce_64.png b/app/assets/images/auth_buttons/salesforce_64.png new file mode 100644 index 0000000000000000000000000000000000000000..c8a86a0c5153da2802a38009c2e9781d86b4ad23 GIT binary patch literal 8774 zcmeHMc|4TuyC1S;ClOi3SW1kUVGJ{oWhmQNvP8CKc`yva7`u`pYbZ)eB$TL>?6QVP z)+|Mftks)+jnoa?|ohO^W2|_wJ&q#7<^yOPB zySE^1))kzko%AlYcTjQRy_#PT`*Il9eEIxv=s?Y2O?BporOCvrzG2(WecrMU6f&Q3 z)-}3JKFWC4LakX>)A1^{@gISQEk?vpv%W69q1JW!t~Cf++39MWgX?Kdd8BqXYTS_B zSUwoDBTH1#jwd-jgSV)3O_loS%ayw-i%YLXHP1%OZ@8?^H_d*l-Rn-xsa!pFvN_J5 zbxfokKK@xdkSXS!x#?nTQQ+$P^)+JsVgBd)o?qfwF`1P{Zopp0u}=j7Pw#y+BEuF% zPxB)JT@i=Q)Z2tTuU#|Iq*1M%WAzhMgwgcT}yLQd3DJvAqyGkBs z1*^nDbg;}!w#Mk)3-|Q0XAHAa{gmx#9ne)llLM8hkY;*;Nvf=UT#Plj*Yob3$>Rlm z#~r4jB{2!WpmB<=gJ+E@+5GxL%xa*Sdw0IkBjMfmhD!K8sP?wzaEtnv^tfH|g)n(v zR(RBj+F0N^aIa+HfQhY>*D}vwz-#i9Q`zUL;Tc$;r1iU;6@f~roJpy^My6*oDX@Is z(Vmsm0$77UR#O(l-&n@*P9XM2KVFmWN7QE{8 zTD)iTc12WIvLD-p z@`3HAd-t!~p3Zyy=)IW5bo;scx*kKNDxViZn@YJXPFqXH4hiLa7B8sU-YvmiGM?xgQ5=iQ>f875+QCR;yJfy+`GVxb}zll#)~ zNoS=GzQoE{#V?u)iX5%FFL?ZpL_~`IN$32TOZd5Se#DPgRF|s;9zVqPrLZ4~HL^lI zksRiHpGj>at)g6-&t7mv4O58CXcm#kxUYd6<&XA!X!#wM4|erblECHNJE6j#B+=9r=(5BRv4+-gt4? zrfQhqFQu34KztY^%QBMlQpVGvRjpFQ823`X(0nA@5puo*1Cp1&`P_BVg&gKmIH6?obTD+VXF#jnsByym}E)l01uiH|bU2(h>UC_~X>bcxaw9qpp6!rLY zOyYd1d_XSJYVIn_V1z_S(3JxSS9t*Ad_;&B~lU!VWoifKv zxzPA9k#67rICWp7>NU#Pq&nrylf3$Mjl0RmD|I;e`SabKPIkQvA?59QgJ9jI+lG9$ z6PQn07}#87-^D{yDb$bhwCgL7nV3%WQn=kaRo!cTU^Brs#iGbKR>tqfIiE~|`$4A( z)Nv>=EHbn3(n!e7yVj~Cfg_p9Y0f!f$THr$-zMf7&UBc9Z=b|I$4=?A6uSXme<#t5|;QKa^!N)8bHQ$O!} zj0E3?@pD8>r-L4(6an2w8JsE4lWJ+S7gwHOFSwP)gX%~=LH ze0I6;T2ag3W^T8&65&%t))ho#jd*jOWPurGho%r9`fA^q-Ntvxvs?}j%i?*Br$8zT zQ5O>w8`gJT!H$fQg0Ed9{HtX{+_kI7p|=#6@`K*`vptY= zUeg|sZVJJLtf$ufBvl$Ni&QmfdrOPk4M2=*-+5rKj!3rgRE*y(t%yzZiHU;N#fxz$ zIX1ew)Lb}}>Pu|w6b(d{>GaP{h` z;JPQo1$1Oj-j!3<#N7>6^{ybtzu-Zgy6- zFw_z0Nza9{8L?A6B|ul(Y? zj3Ens?!4GByO7-`PiE7icD#7eK|maE3ZY$ro7UEJ-)NtqeR)v}S&qL|SkAjh6XB!B)3SIy&?*@YYN!2USb8?3oCUOQ)U_3YY%#G;O_n_F(!1j(rfV2jv> zhwS;{qA`^4T`%satGZI;u$Z;!Pq-|6(*XuipK zarNHlx&f@9AAZLahYmX2{X;)iP__ntN$<2SV~@o%Coa%zXa82G9d zzVuzoqNJBq{Tr8&cIqadT5l2v#1u)!Vl9lY*x#S+8Bg>XCogCjKG6|xcCpI4X~P~L zqe03y6V^8nFXc4I=l6)Rl`vJ_13G&sDbIt;K{8}H5q&-(6+FrakC*iWn zF}JMT^5|>VCc3IWqxtk{L(M1LFXWx~We%0_bZ#^W*rwWy`i)wqC>wrl^=}?i?_^D5 z%@jqvxPu<$cxdO2&x^9}>5JJHn^SPhsy2DvZsKvXy`qiXSmxKL_ZhX1oBXe04Now| zCxi8LS@-U5IGkX6U5HCzC~0Gj-KkDrIm&VGiSa8(M8!yheBapXs!JDkjX59H;4P`s z=zI$2A7cGv^YqK1fQ{9$bOmu}TL?zp9GRD>%1AkbaScR05zJHrMbZnXfzrISAnUhKp6<2!t^X{z=XlB^m@VI)6IYYH!o~(Md2PMgz&14+8*Gfx|VRa22Qu8uqI_V-$z` z!`j>Lr-}?cVL^Bw7(y8i^YZ$Og&*A@;7@=5(!$T0apZ*^1^lS~G$LRS0C>}7es$_Y z@%Q`Hr@tSt)wLZrh2#oj1hwt?SDPb7IEz1Qwq$f8d--fzY@vTel8ArceEeyYZ48MB z11NwOBM?6ZGvY6JI@$Hl1^UZ;wnqL-APjeZ@c#w zkf=m53A6nZPShX(D544!P9PAWNCXK9#jBDCP*pV~fvE0^c6C)J{z7Hs?MKIZ6M-!% z2Dvhs!2?IB!BMJe>QGm_IsuAA5eQHMQUic$005e#p-w`f5x-KH)5wfUz*ByWYKw}* zpi+es)d>hZ5=ug-BcMnXI39{d!AVdQ0fi^15{P&-0>2&2);eHxEsV4vD$4Lbdn_n; zx+|6Dr3Jy^iC}Z9KS!*|UVs%Hzoi;N4W)uWsi`9oD7c2Y3i3~oEkN^QWcd~;0mImPIRGKxFO3{LB z1qmb3Xq^A zk}95&$7n|Kx#Hna1RjM%pw&<)I702O?0!^NdLW(#=(;g-fU(Yu+S*=c@ctj^r|?&J zpgXXYTW|y#3Rj21Rjm;yjG7t-iBN>AVBm1bk0l3d!nStV->0m(wGZKNm|sQF+}fuw zMqAlvJ!YUWOurGp!dIZ|1W?)7);4T zz}t`d??V3-@?2nt~&s5o}rvJz5XA1s5dSFohwAvg;qY{+0rN3;a)Z{h!Ij`RB14@Mb*x1u_oRZC9I<83%GUg2@qm(D$v^ zjhfpjjGmo7hW36Skci;co5?M!ckBODcDfPHfPIX82d}zP8k$ab zpa|LQIbDZVtsb7%;}T*PGQ2C0FU+);10^lQeZWv(pAc4mg~KkDS%I08`Q}=^oVlezEgtfOldoHBLqtMrcW>i79WCk@k?^#yL8G0ac3-?6f*A))Rx zP<^nwa!MXK`%*YbdD>%XPIjTV)_wothak;bw0mYW)pr_5a7Sc++WlPosHhZE;VI+W zPEVaUmcQA)(>0FG7JRB=`Z38VkGa0L5@~md3?8=0M$VT=USEbKiv7P%B?8esPHViA*a%<4=)SPONP1z zxH;SROLP-bm^_oX<&ulbCk#e;W%7)?`r#HVMr~u3eFFPQ(#YB6r>vAhZu0jS!29-1 zieh|AUx{OVONvX5N6yT%DmkxR2JRi2Mz z4q0QpwKD9#5qMgAVm^{nQYZhTENj3~I%R#DHR$o?F29aKjDjboap$ZROwe@l*JE|^a zrKXARtM3+3ozAuztkw-~v~0N6GG*H4=v=o_epiB*^PA#*wtdXS&N{heEDFmk;gfRb zYEyR%%UdMB01s5T=C7^lJvLI^MITt*b?16>NkraxR3ympj-5`LvpKl$ZLHkvIfLwaI|NVksrQk8+oRTd~syHGk6+l`X(CY6ZLF?<{Umw@rx!` z$ds&Gu(c^TSe8Zv)_}CE>rMEC$||Ki=Ahcu2_|mmZbVOlr$?MHi-KB6m~g|p3?_Az z>ZT)Ex;YkFmGz*=tDINtdg^+@x>_b?RfpH(-Nyk&ddK!B-{T^TWer*+R=QqhR{!bjCVB89I8N}|p~miG@XFcO zdr!^7ALVn^g^7#~Cl$_+j+P!eAD>hgG5Fn#yQ=sJOV0UF6&SLG$ za}w!ReYO)9vrZmzp0)0|Rk&|CJs}&WYh1lswJxb39y=x)Hq3gOM0;ltSrAPS+qj1Q zO?PRIJ3xr%HuyH=t&Lh)9;KrTYshJ;BT#7=4Aa9sDT8qMiVb5T0q?QVk1%@;OhWwc emx<#Sc8!c|_m2IOqKuslWMp8be_!v!ng0MA2y~(V literal 0 HcmV?d00001 diff --git a/app/assets/javascripts/api.js b/app/assets/javascripts/api.js index 7cebb88f3a..a649c52140 100644 --- a/app/assets/javascripts/api.js +++ b/app/assets/javascripts/api.js @@ -12,6 +12,7 @@ const Api = { groupProjectsPath: '/api/:version/groups/:id/projects.json', projectsPath: '/api/:version/projects.json', projectPath: '/api/:version/projects/:id', + forkedProjectsPath: '/api/:version/projects/:id/forks', projectLabelsPath: '/:namespace_path/:project_path/-/labels', projectMergeRequestsPath: '/api/:version/projects/:id/merge_requests', projectMergeRequestPath: '/api/:version/projects/:id/merge_requests/:mrid', @@ -23,6 +24,7 @@ const Api = { issuableTemplatePath: '/:namespace_path/:project_path/templates/:type/:key', projectTemplatePath: '/api/:version/projects/:id/templates/:type/:key', projectTemplatesPath: '/api/:version/projects/:id/templates/:type', + userCountsPath: '/api/:version/user_counts', usersPath: '/api/:version/users.json', userPath: '/api/:version/users/:id', userStatusPath: '/api/:version/users/:id/status', @@ -113,6 +115,21 @@ const Api = { return axios.get(url); }, + /** + * Get all projects for a forked relationship to a specified project + * @param {string} projectPath - Path or ID of a project + * @param {Object} params - Get request parameters + * @returns {Promise} - Request promise + */ + projectForks(projectPath, params) { + const url = Api.buildUrl(Api.forkedProjectsPath).replace( + ':id', + encodeURIComponent(projectPath), + ); + + return axios.get(url, { params }); + }, + /** * Get all Merge Requests for a project, eventually filtering based on * supplied parameters @@ -296,6 +313,11 @@ const Api = { }); }, + userCounts() { + const url = Api.buildUrl(this.userCountsPath); + return axios.get(url); + }, + userStatus(id, options) { const url = Api.buildUrl(this.userStatusPath).replace(':id', encodeURIComponent(id)); return axios.get(url, { diff --git a/app/assets/javascripts/behaviors/markdown/render_mermaid.js b/app/assets/javascripts/behaviors/markdown/render_mermaid.js index d0b7f3ff7a..dbc28beffb 100644 --- a/app/assets/javascripts/behaviors/markdown/render_mermaid.js +++ b/app/assets/javascripts/behaviors/markdown/render_mermaid.js @@ -36,7 +36,8 @@ export default function renderMermaid($els) { }); $els.each((i, el) => { - const source = el.textContent; + // Mermaid doesn't like `
` tags, so collapse all like tags into `
`, which is parsed correctly. + const source = el.textContent.replace(//g, '
'); /** * Restrict the rendering to a certain amount of character to @@ -59,6 +60,14 @@ export default function renderMermaid($els) { mermaid.init(undefined, el, id => { const svg = document.getElementById(id); + // As of https://github.com/knsv/mermaid/commit/57b780a0d, + // Mermaid will make two init callbacks:one to initialize the + // flow charts, and another to initialize the Gannt charts. + // Guard against an error caused by double initialization. + if (svg.classList.contains('mermaid')) { + return; + } + svg.classList.add('mermaid'); // pre > code > svg diff --git a/app/assets/javascripts/boards/components/board.js b/app/assets/javascripts/boards/components/board.js index 45b9e57f9a..c6122fbc68 100644 --- a/app/assets/javascripts/boards/components/board.js +++ b/app/assets/javascripts/boards/components/board.js @@ -1,6 +1,7 @@ +import $ from 'jquery'; import Sortable from 'sortablejs'; import Vue from 'vue'; -import { n__ } from '~/locale'; +import { n__, s__ } from '~/locale'; import Icon from '~/vue_shared/components/icon.vue'; import Tooltip from '~/vue_shared/directives/tooltip'; import AccessorUtilities from '../../lib/utils/accessor'; @@ -53,12 +54,19 @@ export default Vue.extend({ const { issuesSize } = this.list; return `${n__('%d issue', '%d issues', issuesSize)}`; }, + caretTooltip() { + return this.list.isExpanded ? s__('Boards|Collapse') : s__('Boards|Expand'); + }, isNewIssueShown() { return ( this.list.type === 'backlog' || (!this.disabled && this.list.type !== 'closed' && this.list.type !== 'blank') ); }, + uniqueKey() { + // eslint-disable-next-line @gitlab/i18n/no-non-i18n-strings + return `boards.${this.boardId}.${this.list.type}.${this.list.id}`; + }, }, watch: { filter: { @@ -72,31 +80,34 @@ export default Vue.extend({ }, }, mounted() { - this.sortableOptions = getBoardSortableDefaultOptions({ + const instance = this; + + const sortableOptions = getBoardSortableDefaultOptions({ disabled: this.disabled, group: 'boards', draggable: '.is-draggable', handle: '.js-board-handle', - onEnd: e => { + onEnd(e) { sortableEnd(); + const sortable = this; + if (e.newIndex !== undefined && e.oldIndex !== e.newIndex) { - const order = this.sortable.toArray(); + const order = sortable.toArray(); const list = boardsStore.findList('id', parseInt(e.item.dataset.id, 10)); - this.$nextTick(() => { + instance.$nextTick(() => { boardsStore.moveList(list, order); }); } }, }); - this.sortable = Sortable.create(this.$el.parentNode, this.sortableOptions); + Sortable.create(this.$el.parentNode, sortableOptions); }, created() { if (this.list.isExpandable && AccessorUtilities.isLocalStorageAccessSafe()) { - const isCollapsed = - localStorage.getItem(`boards.${this.boardId}.${this.list.type}.expanded`) === 'false'; + const isCollapsed = localStorage.getItem(`${this.uniqueKey}.expanded`) === 'false'; this.list.isExpanded = !isCollapsed; } @@ -105,16 +116,17 @@ export default Vue.extend({ showNewIssueForm() { this.$refs['board-list'].showIssueForm = !this.$refs['board-list'].showIssueForm; }, - toggleExpanded(e) { - if (this.list.isExpandable && !e.target.classList.contains('js-no-trigger-collapse')) { + toggleExpanded() { + if (this.list.isExpandable) { this.list.isExpanded = !this.list.isExpanded; if (AccessorUtilities.isLocalStorageAccessSafe()) { - localStorage.setItem( - `boards.${this.boardId}.${this.list.type}.expanded`, - this.list.isExpanded, - ); + localStorage.setItem(`${this.uniqueKey}.expanded`, this.list.isExpanded); } + + // When expanding/collapsing, the tooltip on the caret button sometimes stays open. + // Close all tooltips manually to prevent dangling tooltips. + $('.tooltip').tooltip('hide'); } }, }, diff --git a/app/assets/javascripts/boards/components/board_blank_state.vue b/app/assets/javascripts/boards/components/board_blank_state.vue index 1cbd31729c..d8b0b60c18 100644 --- a/app/assets/javascripts/boards/components/board_blank_state.vue +++ b/app/assets/javascripts/boards/components/board_blank_state.vue @@ -1,4 +1,5 @@ + + diff --git a/app/assets/javascripts/boards/components/board_list.vue b/app/assets/javascripts/boards/components/board_list.vue index b1a8b13f3a..787ff110bf 100644 --- a/app/assets/javascripts/boards/components/board_list.vue +++ b/app/assets/javascripts/boards/components/board_list.vue @@ -227,7 +227,7 @@ export default { :class="{ 'd-none': !list.isExpanded, 'd-flex flex-column': list.isExpanded }" class="board-list-component position-relative h-100" > -
+
  • - Showing all issues + {{ __('Showing all issues') }} Showing {{ list.issues.length }} of {{ list.issuesSize }} issues
  • diff --git a/app/assets/javascripts/boards/components/board_new_issue.vue b/app/assets/javascripts/boards/components/board_new_issue.vue index cc6af8e88c..4180023b7d 100644 --- a/app/assets/javascripts/boards/components/board_new_issue.vue +++ b/app/assets/javascripts/boards/components/board_new_issue.vue @@ -102,9 +102,9 @@ export default {
    -
    An error occurred. Please try again.
    +
    {{ __('An error occurred. Please try again.') }}
    - + {{ __('Submit issue') }} - Submit issue - - - Cancel - + {{ + __('Cancel') + }}
    diff --git a/app/assets/javascripts/boards/components/board_sidebar.js b/app/assets/javascripts/boards/components/board_sidebar.js index c587b276fa..2ace0060c4 100644 --- a/app/assets/javascripts/boards/components/board_sidebar.js +++ b/app/assets/javascripts/boards/components/board_sidebar.js @@ -38,6 +38,7 @@ export default Vue.extend({ issue: {}, list: {}, loadingAssignees: false, + timeTrackingLimitToHours: boardsStore.timeTracking.limitToHours, }; }, computed: { diff --git a/app/assets/javascripts/boards/components/boards_selector.vue b/app/assets/javascripts/boards/components/boards_selector.vue new file mode 100644 index 0000000000..b05de4538f --- /dev/null +++ b/app/assets/javascripts/boards/components/boards_selector.vue @@ -0,0 +1,334 @@ + + + diff --git a/app/assets/javascripts/boards/components/issue_card_inner.vue b/app/assets/javascripts/boards/components/issue_card_inner.vue index a8516f178f..7f554c9966 100644 --- a/app/assets/javascripts/boards/components/issue_card_inner.vue +++ b/app/assets/javascripts/boards/components/issue_card_inner.vue @@ -124,7 +124,7 @@ export default { return `${this.rootPath}${assignee.username}`; }, avatarUrlTitle(assignee) { - return `Avatar for ${assignee.name}`; + return sprintf(__(`Avatar for %{assigneeName}`), { assigneeName: assignee.name }); }, showLabel(label) { if (!label.id) return false; @@ -160,9 +160,10 @@ export default { :title="__('Confidential')" class="confidential-icon append-right-4" :aria-label="__('Confidential')" - />{{ - issue.title - }} + /> + + {{ issue.title }} +
    @@ -204,13 +205,13 @@ export default { placement="bottom" class="board-issue-path block-truncated bold" >{{ issueReferencePath }}#{{ issue.iid }} + > + #{{ issue.iid }} - + + - Assignee {{ assignee.name }} + {{ __('Assignee') }} + {{ assignee.name }} @{{ assignee.username }} @@ -240,9 +242,8 @@ export default { :title="assigneeCounterTooltip" class="avatar-counter" data-placement="bottom" + >{{ assigneeCounterLabel }} - {{ assigneeCounterLabel }} -
    diff --git a/app/assets/javascripts/boards/components/issue_time_estimate.vue b/app/assets/javascripts/boards/components/issue_time_estimate.vue index 98c1d29db1..3385aad5b1 100644 --- a/app/assets/javascripts/boards/components/issue_time_estimate.vue +++ b/app/assets/javascripts/boards/components/issue_time_estimate.vue @@ -2,6 +2,7 @@ import { GlTooltip } from '@gitlab/ui'; import Icon from '~/vue_shared/components/icon.vue'; import { parseSeconds, stringifyTime } from '~/lib/utils/datetime_utility'; +import boardsStore from '../stores/boards_store'; export default { components: { @@ -14,12 +15,17 @@ export default { required: true, }, }, + data() { + return { + limitToHours: boardsStore.timeTracking.limitToHours, + }; + }, computed: { title() { - return stringifyTime(parseSeconds(this.estimate), true); + return stringifyTime(parseSeconds(this.estimate, { limitToHours: this.limitToHours }), true); }, timeEstimate() { - return stringifyTime(parseSeconds(this.estimate)); + return stringifyTime(parseSeconds(this.estimate, { limitToHours: this.limitToHours })); }, }, }; diff --git a/app/assets/javascripts/boards/components/modal/empty_state.vue b/app/assets/javascripts/boards/components/modal/empty_state.vue index 091700de93..66f5900971 100644 --- a/app/assets/javascripts/boards/components/modal/empty_state.vue +++ b/app/assets/javascripts/boards/components/modal/empty_state.vue @@ -1,4 +1,5 @@ + + diff --git a/app/assets/javascripts/branches/components/graph_bar.vue b/app/assets/javascripts/branches/components/graph_bar.vue new file mode 100644 index 0000000000..83da41ca09 --- /dev/null +++ b/app/assets/javascripts/branches/components/graph_bar.vue @@ -0,0 +1,69 @@ + + + diff --git a/app/assets/javascripts/branches/constants.js b/app/assets/javascripts/branches/constants.js new file mode 100644 index 0000000000..16949e662d --- /dev/null +++ b/app/assets/javascripts/branches/constants.js @@ -0,0 +1,6 @@ +export const SIDES = { + full: 'full', + left: 'left', + right: 'right', +}; +export const MAX_COMMIT_COUNT = 1000; diff --git a/app/assets/javascripts/branches/divergence_graph.js b/app/assets/javascripts/branches/divergence_graph.js new file mode 100644 index 0000000000..7dbaf984ac --- /dev/null +++ b/app/assets/javascripts/branches/divergence_graph.js @@ -0,0 +1,51 @@ +import Vue from 'vue'; +import { __ } from '../locale'; +import createFlash from '../flash'; +import axios from '../lib/utils/axios_utils'; +import DivergenceGraph from './components/divergence_graph.vue'; + +export function createGraphVueApp(el, data, maxCommits) { + return new Vue({ + el, + render(h) { + return h(DivergenceGraph, { + props: { + defaultBranch: 'master', + distance: data.distance ? parseInt(data.distance, 10) : null, + aheadCount: parseInt(data.ahead, 10), + behindCount: parseInt(data.behind, 10), + maxCommits, + }, + }); + }, + }); +} + +export default endpoint => { + const names = [...document.querySelectorAll('.js-branch-item')].map( + ({ dataset }) => dataset.name, + ); + return axios + .get(endpoint, { + params: { names }, + }) + .then(({ data }) => { + const maxCommits = Object.entries(data).reduce((acc, [, val]) => { + const max = Math.max(...Object.values(val)); + return max > acc ? max : acc; + }, 100); + + Object.entries(data).forEach(([branchName, val]) => { + const el = document.querySelector( + `[data-name="${branchName}"] .js-branch-divergence-graph`, + ); + + if (!el) return; + + createGraphVueApp(el, val, maxCommits); + }); + }) + .catch(() => + createFlash(__('Error fetching diverging counts for branches. Please try again.')), + ); +}; diff --git a/app/assets/javascripts/clusters/components/application_row.vue b/app/assets/javascripts/clusters/components/application_row.vue index 4771090aa7..cd2121db3b 100644 --- a/app/assets/javascripts/clusters/components/application_row.vue +++ b/app/assets/javascripts/clusters/components/application_row.vue @@ -207,7 +207,7 @@ export default { return __('Updating'); } - return __('Updated'); + return this.updateSuccessful ? __('Updated to') : __('Updated'); }, updateFailureDescription() { return s__('ClusterIntegration|Update failed. Please check the logs and try again.'); @@ -331,8 +331,6 @@ export default { class="form-text text-muted label p-0 js-cluster-application-update-details" > {{ versionLabel }} - to - - {{ __('More information') }} - + {{ + __('More information') + }}

    import LoadingButton from '~/vue_shared/components/loading_button.vue'; import { APPLICATION_STATUS } from '~/clusters/constants'; +import { __ } from '~/locale'; const { UPDATING, UNINSTALLING } = APPLICATION_STATUS; @@ -22,7 +23,7 @@ export default { return this.status === UNINSTALLING; }, label() { - return this.loading ? this.__('Uninstalling') : this.__('Uninstall'); + return this.loading ? __('Uninstalling') : __('Uninstall'); }, }, }; diff --git a/app/assets/javascripts/clusters/components/uninstall_application_confirmation_modal.vue b/app/assets/javascripts/clusters/components/uninstall_application_confirmation_modal.vue index 65827f1cb6..920439ebb2 100644 --- a/app/assets/javascripts/clusters/components/uninstall_application_confirmation_modal.vue +++ b/app/assets/javascripts/clusters/components/uninstall_application_confirmation_modal.vue @@ -14,7 +14,9 @@ const CUSTOM_APP_WARNING_TEXT = { [PROMETHEUS]: s__('ClusterIntegration|All data will be deleted and cannot be restored.'), [RUNNER]: s__('ClusterIntegration|Any running pipelines will be canceled.'), [KNATIVE]: s__('ClusterIntegration|The associated IP will be deleted and cannot be restored.'), - [JUPYTER]: '', + [JUPYTER]: s__( + 'ClusterIntegration|All data not committed to GitLab will be deleted and cannot be restored.', + ), }; export default { diff --git a/app/assets/javascripts/clusters/services/application_state_machine.js b/app/assets/javascripts/clusters/services/application_state_machine.js index 17ea4d7779..6e632519d8 100644 --- a/app/assets/javascripts/clusters/services/application_state_machine.js +++ b/app/assets/javascripts/clusters/services/application_state_machine.js @@ -80,6 +80,9 @@ const applicationStateMachine = { installFailed: false, }, }, + [NOT_INSTALLABLE]: { + target: NOT_INSTALLABLE, + }, // This is possible in artificial environments for E2E testing [INSTALLED]: { target: INSTALLED, @@ -108,6 +111,9 @@ const applicationStateMachine = { updateSuccessful: false, }, }, + [NOT_INSTALLABLE]: { + target: NOT_INSTALLABLE, + }, [UNINSTALL_EVENT]: { target: UNINSTALLING, effects: { diff --git a/app/assets/javascripts/commons/index.js b/app/assets/javascripts/commons/index.js index 0d2fe2925d..ad0f6cc149 100644 --- a/app/assets/javascripts/commons/index.js +++ b/app/assets/javascripts/commons/index.js @@ -4,3 +4,6 @@ import './jquery'; import './bootstrap'; import './vue'; import '../lib/utils/axios_utils'; +import { openUserCountsBroadcast } from './nav/user_merge_requests'; + +openUserCountsBroadcast(); diff --git a/app/assets/javascripts/commons/nav/user_merge_requests.js b/app/assets/javascripts/commons/nav/user_merge_requests.js new file mode 100644 index 0000000000..8e694cca6a --- /dev/null +++ b/app/assets/javascripts/commons/nav/user_merge_requests.js @@ -0,0 +1,67 @@ +import Api from '~/api'; + +let channel; + +function broadcastCount(newCount) { + if (!channel) { + return; + } + + channel.postMessage(newCount); +} + +function updateUserMergeRequestCounts(newCount) { + const mergeRequestsCountEl = document.querySelector('.merge-requests-count'); + mergeRequestsCountEl.textContent = newCount.toLocaleString(); + mergeRequestsCountEl.classList.toggle('hidden', Number(newCount) === 0); +} + +/** + * Refresh user counts (and broadcast if open) + */ +export function refreshUserMergeRequestCounts() { + return Api.userCounts() + .then(({ data }) => { + const count = data.merge_requests; + + updateUserMergeRequestCounts(count); + broadcastCount(count); + }) + .catch(ex => { + console.error(ex); // eslint-disable-line no-console + }); +} + +/** + * Close the broadcast channel for user counts + */ +export function closeUserCountsBroadcast() { + if (!channel) { + return; + } + + channel.close(); + channel = null; +} + +/** + * Open the broadcast channel for user counts, adds user id so we only update + * + * **Please note:** + * Not supported in all browsers, but not polyfilling for now + * to keep bundle size small and + * no special functionality lost except cross tab notifications + */ +export function openUserCountsBroadcast() { + closeUserCountsBroadcast(); + + if (window.BroadcastChannel) { + const currentUserId = typeof gon !== 'undefined' && gon && gon.current_user_id; + if (currentUserId) { + channel = new BroadcastChannel(`mr_count_channel_${currentUserId}`); + channel.onmessage = ev => { + updateUserMergeRequestCounts(ev.data); + }; + } + } +} diff --git a/app/assets/javascripts/commons/polyfills.js b/app/assets/javascripts/commons/polyfills.js index d0cc4897ae..a4394ab7e9 100644 --- a/app/assets/javascripts/commons/polyfills.js +++ b/app/assets/javascripts/commons/polyfills.js @@ -12,6 +12,7 @@ import 'core-js/es/promise/finally'; import 'core-js/es/string/code-point-at'; import 'core-js/es/string/from-code-point'; import 'core-js/es/string/includes'; +import 'core-js/es/string/starts-with'; import 'core-js/es/symbol'; import 'core-js/es/map'; import 'core-js/es/weak-map'; diff --git a/app/assets/javascripts/confidential_merge_request/components/dropdown.vue b/app/assets/javascripts/confidential_merge_request/components/dropdown.vue new file mode 100644 index 0000000000..444640980a --- /dev/null +++ b/app/assets/javascripts/confidential_merge_request/components/dropdown.vue @@ -0,0 +1,58 @@ + + + diff --git a/app/assets/javascripts/confidential_merge_request/components/project_form_group.vue b/app/assets/javascripts/confidential_merge_request/components/project_form_group.vue new file mode 100644 index 0000000000..197a070606 --- /dev/null +++ b/app/assets/javascripts/confidential_merge_request/components/project_form_group.vue @@ -0,0 +1,140 @@ + + + diff --git a/app/assets/javascripts/confidential_merge_request/index.js b/app/assets/javascripts/confidential_merge_request/index.js new file mode 100644 index 0000000000..9672821d30 --- /dev/null +++ b/app/assets/javascripts/confidential_merge_request/index.js @@ -0,0 +1,30 @@ +import Vue from 'vue'; +import { parseBoolean } from '../lib/utils/common_utils'; +import ProjectFormGroup from './components/project_form_group.vue'; +import state from './state'; + +export function isConfidentialIssue() { + return parseBoolean(document.querySelector('.js-create-mr').dataset.isConfidential); +} + +export function canCreateConfidentialMergeRequest() { + return isConfidentialIssue() && Object.keys(state.selectedProject).length > 0; +} + +export function init() { + const el = document.getElementById('js-forked-project'); + + return new Vue({ + el, + render(h) { + return h(ProjectFormGroup, { + props: { + namespacePath: el.dataset.namespacePath, + projectPath: el.dataset.projectPath, + newForkPath: el.dataset.newForkPath, + helpPagePath: el.dataset.helpPagePath, + }, + }); + }, + }); +} diff --git a/app/assets/javascripts/confidential_merge_request/state.js b/app/assets/javascripts/confidential_merge_request/state.js new file mode 100644 index 0000000000..95b0580f4b --- /dev/null +++ b/app/assets/javascripts/confidential_merge_request/state.js @@ -0,0 +1,5 @@ +import Vue from 'vue'; + +export default Vue.observable({ + selectedProject: {}, +}); diff --git a/app/assets/javascripts/create_merge_request_dropdown.js b/app/assets/javascripts/create_merge_request_dropdown.js index 8f5cece078..dce9c1a541 100644 --- a/app/assets/javascripts/create_merge_request_dropdown.js +++ b/app/assets/javascripts/create_merge_request_dropdown.js @@ -5,6 +5,12 @@ import Flash from './flash'; import DropLab from './droplab/drop_lab'; import ISetter from './droplab/plugins/input_setter'; import { __, sprintf } from './locale'; +import { + init as initConfidentialMergeRequest, + isConfidentialIssue, + canCreateConfidentialMergeRequest, +} from './confidential_merge_request'; +import confidentialMergeRequestState from './confidential_merge_request/state'; // Todo: Remove this when fixing issue in input_setter plugin const InputSetter = Object.assign({}, ISetter); @@ -12,6 +18,17 @@ const InputSetter = Object.assign({}, ISetter); const CREATE_MERGE_REQUEST = 'create-mr'; const CREATE_BRANCH = 'create-branch'; +function createEndpoint(projectPath, endpoint) { + if (canCreateConfidentialMergeRequest()) { + return endpoint.replace( + projectPath, + confidentialMergeRequestState.selectedProject.pathWithNamespace, + ); + } + + return endpoint; +} + export default class CreateMergeRequestDropdown { constructor(wrapperEl) { this.wrapperEl = wrapperEl; @@ -42,6 +59,8 @@ export default class CreateMergeRequestDropdown { this.refIsValid = true; this.refsPath = this.wrapperEl.dataset.refsPath; this.suggestedRef = this.refInput.value; + this.projectPath = this.wrapperEl.dataset.projectPath; + this.projectId = this.wrapperEl.dataset.projectId; // These regexps are used to replace // a backend generated new branch name and its source (ref) @@ -58,6 +77,14 @@ export default class CreateMergeRequestDropdown { }; this.init(); + + if (isConfidentialIssue()) { + this.createMergeRequestButton.setAttribute( + 'data-dropdown-trigger', + '#create-merge-request-dropdown', + ); + initConfidentialMergeRequest(); + } } available() { @@ -113,7 +140,9 @@ export default class CreateMergeRequestDropdown { this.isCreatingBranch = true; return axios - .post(this.createBranchPath) + .post(createEndpoint(this.projectPath, this.createBranchPath), { + confidential_issue_project_id: canCreateConfidentialMergeRequest() ? this.projectId : null, + }) .then(({ data }) => { this.branchCreated = true; window.location.href = data.url; @@ -125,7 +154,11 @@ export default class CreateMergeRequestDropdown { this.isCreatingMergeRequest = true; return axios - .post(this.createMrPath) + .post(this.createMrPath, { + target_project_id: canCreateConfidentialMergeRequest() + ? confidentialMergeRequestState.selectedProject.id + : null, + }) .then(({ data }) => { this.mergeRequestCreated = true; window.location.href = data.url; @@ -149,6 +182,8 @@ export default class CreateMergeRequestDropdown { } enable() { + if (isConfidentialIssue() && !canCreateConfidentialMergeRequest()) return; + this.createMergeRequestButton.classList.remove('disabled'); this.createMergeRequestButton.removeAttribute('disabled'); @@ -205,7 +240,7 @@ export default class CreateMergeRequestDropdown { if (!ref) return false; return axios - .get(`${this.refsPath}${encodeURIComponent(ref)}`) + .get(`${createEndpoint(this.projectPath, this.refsPath)}${encodeURIComponent(ref)}`) .then(({ data }) => { const branches = data[Object.keys(data)[0]]; const tags = data[Object.keys(data)[1]]; @@ -325,6 +360,12 @@ export default class CreateMergeRequestDropdown { let xhr = null; event.preventDefault(); + if (isConfidentialIssue() && !event.target.classList.contains('js-create-target')) { + this.droplab.hooks.forEach(hook => hook.list.toggle()); + + return; + } + if (this.isBusy()) { return; } diff --git a/app/assets/javascripts/cycle_analytics/cycle_analytics_bundle.js b/app/assets/javascripts/cycle_analytics/cycle_analytics_bundle.js index b56e08175c..d4b994d492 100644 --- a/app/assets/javascripts/cycle_analytics/cycle_analytics_bundle.js +++ b/app/assets/javascripts/cycle_analytics/cycle_analytics_bundle.js @@ -17,6 +17,7 @@ Vue.use(Translate); export default () => { const OVERVIEW_DIALOG_COOKIE = 'cycle_analytics_help_dismissed'; + const cycleAnalyticsEl = document.querySelector('#cycle-analytics'); // eslint-disable-next-line no-new new Vue({ @@ -33,7 +34,6 @@ export default () => { 'stage-production-component': stageComponent, }, data() { - const cycleAnalyticsEl = document.querySelector('#cycle-analytics'); const cycleAnalyticsService = new CycleAnalyticsService({ requestPath: cycleAnalyticsEl.dataset.requestPath, }); @@ -56,7 +56,13 @@ export default () => { }, }, created() { - this.fetchCycleAnalyticsData(); + // Conditional check placed here to prevent this method from being called on the + // new Cycle Analytics page (i.e. the new page will be initialized blank and only + // after a group is selected the cycle analyitcs data will be fetched). Once the + // old (current) page has been removed this entire created method as well as the + // variable itself can be completely removed. + // Follow up issue: https://gitlab.com/gitlab-org/gitlab-ce/issues/64490 + if (cycleAnalyticsEl.dataset.requestPath) this.fetchCycleAnalyticsData(); }, methods: { handleError() { diff --git a/app/assets/javascripts/diff_notes/components/comment_resolve_btn.js b/app/assets/javascripts/diff_notes/components/comment_resolve_btn.js index f66e07ba31..7817b41514 100644 --- a/app/assets/javascripts/diff_notes/components/comment_resolve_btn.js +++ b/app/assets/javascripts/diff_notes/components/comment_resolve_btn.js @@ -32,15 +32,15 @@ const CommentAndResolveBtn = Vue.extend({ buttonText: function() { if (this.isDiscussionResolved) { if (this.textareaIsEmpty) { - return __('Unresolve discussion'); + return __('Unresolve thread'); } else { - return __('Comment & unresolve discussion'); + return __('Comment & unresolve thread'); } } else { if (this.textareaIsEmpty) { - return __('Resolve discussion'); + return __('Resolve thread'); } else { - return __('Comment & resolve discussion'); + return __('Comment & resolve thread'); } } }, diff --git a/app/assets/javascripts/diffs/components/commit_item.vue b/app/assets/javascripts/diffs/components/commit_item.vue index aaa9f8b759..58d5b658b1 100644 --- a/app/assets/javascripts/diffs/components/commit_item.vue +++ b/app/assets/javascripts/diffs/components/commit_item.vue @@ -49,6 +49,8 @@ export default { return this.author.id ? this.author.id : ''; }, authorUrl() { + // TODO: when the vue i18n rules are merged need to disable @gitlab/i18n/no-non-i18n-strings + // name: 'mailto:' is a false positive: https://gitlab.com/gitlab-org/frontend/eslint-plugin-i18n/issues/26#possible-false-positives return this.author.web_url || `mailto:${this.commit.author_email}`; }, authorAvatar() { @@ -80,7 +82,7 @@ export default { v-html="commit.title_html" > - · {{ commit.short_id }} + · {{ commit.short_id }} diff --git a/app/assets/javascripts/diffs/components/diff_file_header.vue b/app/assets/javascripts/diffs/components/diff_file_header.vue index eb9f146594..4b226e3069 100644 --- a/app/assets/javascripts/diffs/components/diff_file_header.vue +++ b/app/assets/javascripts/diffs/components/diff_file_header.vue @@ -151,7 +151,11 @@ export default { stickyMonitor(this.$refs.header, contentTop() - fileHeaderHeight - 1, false); }, methods: { - ...mapActions('diffs', ['toggleFileDiscussions', 'toggleFullDiff']), + ...mapActions('diffs', [ + 'toggleFileDiscussions', + 'toggleFileDiscussionWrappers', + 'toggleFullDiff', + ]), handleToggleFile(e, checkTarget) { if ( !checkTarget || @@ -165,7 +169,7 @@ export default { this.$emit('showForkMessage'); }, handleToggleDiscussions() { - this.toggleFileDiscussions(this.diffFile); + this.toggleFileDiscussionWrappers(this.diffFile); }, handleFileNameClick(e) { const isLinkToOtherPage = diff --git a/app/assets/javascripts/diffs/components/diff_gutter_avatars.vue b/app/assets/javascripts/diffs/components/diff_gutter_avatars.vue index 7cf3d90d46..af5550aec3 100644 --- a/app/assets/javascripts/diffs/components/diff_gutter_avatars.vue +++ b/app/assets/javascripts/diffs/components/diff_gutter_avatars.vue @@ -1,5 +1,4 @@ @@ -74,9 +63,9 @@ export default { @@ -87,7 +76,7 @@ export default { :img-src="note.author.avatar_url" :tooltip-text="getTooltipText(note)" class="diff-comment-avatar js-diff-comment-avatar" - @click.native="toggleDiscussions" + @click.native="$emit('toggleLineDiscussions')" /> +{{ moreCount }} diff --git a/app/assets/javascripts/diffs/components/diff_line_gutter_content.vue b/app/assets/javascripts/diffs/components/diff_line_gutter_content.vue index 1281f9b17e..351110f0a8 100644 --- a/app/assets/javascripts/diffs/components/diff_line_gutter_content.vue +++ b/app/assets/javascripts/diffs/components/diff_line_gutter_content.vue @@ -105,7 +105,13 @@ export default { }, }, methods: { - ...mapActions('diffs', ['loadMoreLines', 'showCommentForm', 'setHighlightedRow']), + ...mapActions('diffs', [ + 'loadMoreLines', + 'showCommentForm', + 'setHighlightedRow', + 'toggleLineDiscussions', + 'toggleLineDiscussionWrappers', + ]), handleCommentButton() { this.showCommentForm({ lineCode: this.line.line_code, fileHash: this.fileHash }); }, @@ -184,7 +190,14 @@ export default { @click="setHighlightedRow(lineCode)" > - + diff --git a/app/assets/javascripts/diffs/components/inline_diff_comment_row.vue b/app/assets/javascripts/diffs/components/inline_diff_comment_row.vue index 1faa0493e7..a06dbd70ac 100644 --- a/app/assets/javascripts/diffs/components/inline_diff_comment_row.vue +++ b/app/assets/javascripts/diffs/components/inline_diff_comment_row.vue @@ -1,11 +1,14 @@ @@ -49,13 +59,23 @@ export default { :discussions="line.discussions" :help-page-path="helpPagePath" /> - + + + diff --git a/app/assets/javascripts/diffs/components/inline_diff_view.vue b/app/assets/javascripts/diffs/components/inline_diff_view.vue index 8c76a555b6..b2bc3d9914 100644 --- a/app/assets/javascripts/diffs/components/inline_diff_view.vue +++ b/app/assets/javascripts/diffs/components/inline_diff_view.vue @@ -57,6 +57,7 @@ export default { :diff-file-hash="diffFile.file_hash" :line="line" :help-page-path="helpPagePath" + :has-draft="shouldRenderDraftRow(diffFile.file_hash, line) || false" /> -import diffDiscussions from './diff_discussions.vue'; -import diffLineNoteForm from './diff_line_note_form.vue'; +import { mapActions } from 'vuex'; +import DiffDiscussions from './diff_discussions.vue'; +import DiffLineNoteForm from './diff_line_note_form.vue'; +import DiffDiscussionReply from './diff_discussion_reply.vue'; export default { components: { - diffDiscussions, - diffLineNoteForm, + DiffDiscussions, + DiffLineNoteForm, + DiffDiscussionReply, }, props: { line: { @@ -25,28 +28,44 @@ export default { required: false, default: '', }, + hasDraftLeft: { + type: Boolean, + required: false, + default: false, + }, + hasDraftRight: { + type: Boolean, + required: false, + default: false, + }, }, computed: { hasExpandedDiscussionOnLeft() { return this.line.left && this.line.left.discussions.length - ? this.line.left.discussions.every(discussion => discussion.expanded) + ? this.line.left.discussionsExpanded : false; }, hasExpandedDiscussionOnRight() { return this.line.right && this.line.right.discussions.length - ? this.line.right.discussions.every(discussion => discussion.expanded) + ? this.line.right.discussionsExpanded : false; }, hasAnyExpandedDiscussion() { return this.hasExpandedDiscussionOnLeft || this.hasExpandedDiscussionOnRight; }, shouldRenderDiscussionsOnLeft() { - return this.line.left && this.line.left.discussions && this.hasExpandedDiscussionOnLeft; + return ( + this.line.left && + this.line.left.discussions && + this.line.left.discussions.length && + this.hasExpandedDiscussionOnLeft + ); }, shouldRenderDiscussionsOnRight() { return ( this.line.right && this.line.right.discussions && + this.line.right.discussions.length && this.hasExpandedDiscussionOnRight && this.line.right.type ); @@ -81,6 +100,22 @@ export default { return hasCommentFormOnLeft || hasCommentFormOnRight; }, + shouldRenderReplyPlaceholderOnLeft() { + return Boolean( + this.line.left && this.line.left.discussions && this.line.left.discussions.length, + ); + }, + shouldRenderReplyPlaceholderOnRight() { + return Boolean( + this.line.right && this.line.right.discussions && this.line.right.discussions.length, + ); + }, + }, + methods: { + ...mapActions('diffs', ['showCommentForm']), + showNewDiscussionForm() { + this.showCommentForm({ lineCode: this.line.line_code, fileHash: this.diffFileHash }); + }, }, }; @@ -90,37 +125,51 @@ export default {

    - + + +
    - + + + diff --git a/app/assets/javascripts/diffs/components/parallel_diff_view.vue b/app/assets/javascripts/diffs/components/parallel_diff_view.vue index 41a80d9985..c477e68c33 100644 --- a/app/assets/javascripts/diffs/components/parallel_diff_view.vue +++ b/app/assets/javascripts/diffs/components/parallel_diff_view.vue @@ -58,6 +58,8 @@ export default { :diff-file-hash="diffFile.file_hash" :line-index="index" :help-page-path="helpPagePath" + :has-draft-left="hasParallelDraftLeft(diffFile.file_hash, line) || false" + :has-draft-right="hasParallelDraftRight(diffFile.file_hash, line) || false" /> () => false, + hasParallelDraftRight: () => () => false, }, }; diff --git a/app/assets/javascripts/diffs/store/actions.js b/app/assets/javascripts/diffs/store/actions.js index 88d7b4bba6..32e0d8f42e 100644 --- a/app/assets/javascripts/diffs/store/actions.js +++ b/app/assets/javascripts/diffs/store/actions.js @@ -12,6 +12,7 @@ import { getNoteFormData, convertExpandLines, idleCallback, + allDiscussionWrappersExpanded, } from './utils'; import * as types from './mutation_types'; import { @@ -79,6 +80,7 @@ export const assignDiscussionsToDiff = ( discussions = rootState.notes.discussions, ) => { const diffPositionByLineCode = getDiffPositionByLineCode(state.diffFiles); + const hash = getLocationHash(); discussions .filter(discussion => discussion.diff_discussion) @@ -86,6 +88,7 @@ export const assignDiscussionsToDiff = ( commit(types.SET_LINE_DISCUSSIONS_FOR_FILE, { discussion, diffPositionByLineCode, + hash, }); }); @@ -99,6 +102,10 @@ export const removeDiscussionsFromDiff = ({ commit }, removeDiscussion) => { commit(types.REMOVE_LINE_DISCUSSIONS_FOR_FILE, { fileHash: file_hash, lineCode: line_code, id }); }; +export const toggleLineDiscussions = ({ commit }, options) => { + commit(types.TOGGLE_LINE_DISCUSSIONS, options); +}; + export const renderFileForDiscussionId = ({ commit, rootState, state }, discussionId) => { const discussion = rootState.notes.discussions.find(d => d.id === discussionId); @@ -257,6 +264,31 @@ export const toggleFileDiscussions = ({ getters, dispatch }, diff) => { }); }; +export const toggleFileDiscussionWrappers = ({ commit }, diff) => { + const discussionWrappersExpanded = allDiscussionWrappersExpanded(diff); + let linesWithDiscussions; + if (diff.highlighted_diff_lines) { + linesWithDiscussions = diff.highlighted_diff_lines.filter(line => line.discussions.length); + } + if (diff.parallel_diff_lines) { + linesWithDiscussions = diff.parallel_diff_lines.filter( + line => + (line.left && line.left.discussions.length) || + (line.right && line.right.discussions.length), + ); + } + + if (linesWithDiscussions.length) { + linesWithDiscussions.forEach(line => { + commit(types.TOGGLE_LINE_DISCUSSIONS, { + fileHash: diff.file_hash, + lineCode: line.line_code, + expanded: !discussionWrappersExpanded, + }); + }); + } +}; + export const saveDiffDiscussion = ({ state, dispatch }, { note, formData }) => { const postData = getNoteFormData({ commit: state.commit, @@ -267,7 +299,7 @@ export const saveDiffDiscussion = ({ state, dispatch }, { note, formData }) => { return dispatch('saveNote', postData, { root: true }) .then(result => dispatch('updateDiscussion', result.discussion, { root: true })) .then(discussion => dispatch('assignDiscussionsToDiff', [discussion])) - .then(() => dispatch('updateResolvableDiscussonsCounts', null, { root: true })) + .then(() => dispatch('updateResolvableDiscussionsCounts', null, { root: true })) .then(() => dispatch('closeDiffFileCommentForm', formData.diffFile.file_hash)) .catch(() => createFlash(s__('MergeRequests|Saving the comment failed'))); }; diff --git a/app/assets/javascripts/diffs/store/mutation_types.js b/app/assets/javascripts/diffs/store/mutation_types.js index 8d6111da50..9db56331fa 100644 --- a/app/assets/javascripts/diffs/store/mutation_types.js +++ b/app/assets/javascripts/diffs/store/mutation_types.js @@ -35,3 +35,5 @@ export const ADD_CURRENT_VIEW_DIFF_FILE_LINES = 'ADD_CURRENT_VIEW_DIFF_FILE_LINE export const TOGGLE_DIFF_FILE_RENDERING_MORE = 'TOGGLE_DIFF_FILE_RENDERING_MORE'; export const SET_SHOW_SUGGEST_POPOVER = 'SET_SHOW_SUGGEST_POPOVER'; + +export const TOGGLE_LINE_DISCUSSIONS = 'TOGGLE_LINE_DISCUSSIONS'; diff --git a/app/assets/javascripts/diffs/store/mutations.js b/app/assets/javascripts/diffs/store/mutations.js index 00181a63c4..a66f205bbb 100644 --- a/app/assets/javascripts/diffs/store/mutations.js +++ b/app/assets/javascripts/diffs/store/mutations.js @@ -6,6 +6,7 @@ import { addContextLines, prepareDiffData, isDiscussionApplicableToLine, + updateLineInFile, } from './utils'; import * as types from './mutation_types'; @@ -109,7 +110,7 @@ export default { })); }, - [types.SET_LINE_DISCUSSIONS_FOR_FILE](state, { discussion, diffPositionByLineCode }) { + [types.SET_LINE_DISCUSSIONS_FOR_FILE](state, { discussion, diffPositionByLineCode, hash }) { const { latestDiff } = state; const discussionLineCode = discussion.line_code; @@ -130,13 +131,27 @@ export default { : [], }); + const setDiscussionsExpanded = line => { + const isLineNoteTargeted = line.discussions.some( + disc => disc.notes && disc.notes.find(note => hash === `note_${note.id}`), + ); + + return { + ...line, + discussionsExpanded: + line.discussions && line.discussions.length + ? line.discussions.some(disc => !disc.resolved) || isLineNoteTargeted + : false, + }; + }; + state.diffFiles = state.diffFiles.map(diffFile => { if (diffFile.file_hash === fileHash) { const file = { ...diffFile }; if (file.highlighted_diff_lines) { file.highlighted_diff_lines = file.highlighted_diff_lines.map(line => - lineCheck(line) ? mapDiscussions(line) : line, + setDiscussionsExpanded(lineCheck(line) ? mapDiscussions(line) : line), ); } @@ -148,8 +163,10 @@ export default { if (left || right) { return { ...line, - left: line.left ? mapDiscussions(line.left) : null, - right: line.right ? mapDiscussions(line.right, () => !left) : null, + left: line.left ? setDiscussionsExpanded(mapDiscussions(line.left)) : null, + right: line.right + ? setDiscussionsExpanded(mapDiscussions(line.right, () => !left)) + : null, }; } @@ -173,32 +190,11 @@ export default { [types.REMOVE_LINE_DISCUSSIONS_FOR_FILE](state, { fileHash, lineCode }) { const selectedFile = state.diffFiles.find(f => f.file_hash === fileHash); if (selectedFile) { - if (selectedFile.parallel_diff_lines) { - const targetLine = selectedFile.parallel_diff_lines.find( - line => - (line.left && line.left.line_code === lineCode) || - (line.right && line.right.line_code === lineCode), - ); - if (targetLine) { - const side = targetLine.left && targetLine.left.line_code === lineCode ? 'left' : 'right'; - - Object.assign(targetLine[side], { - discussions: targetLine[side].discussions.filter(discussion => discussion.notes.length), - }); - } - } - - if (selectedFile.highlighted_diff_lines) { - const targetInlineLine = selectedFile.highlighted_diff_lines.find( - line => line.line_code === lineCode, - ); - - if (targetInlineLine) { - Object.assign(targetInlineLine, { - discussions: targetInlineLine.discussions.filter(discussion => discussion.notes.length), - }); - } - } + updateLineInFile(selectedFile, lineCode, line => + Object.assign(line, { + discussions: line.discussions.filter(discussion => discussion.notes.length), + }), + ); if (selectedFile.discussions && selectedFile.discussions.length) { selectedFile.discussions = selectedFile.discussions.filter( @@ -207,6 +203,15 @@ export default { } } }, + + [types.TOGGLE_LINE_DISCUSSIONS](state, { fileHash, lineCode, expanded }) { + const selectedFile = state.diffFiles.find(f => f.file_hash === fileHash); + + updateLineInFile(selectedFile, lineCode, line => + Object.assign(line, { discussionsExpanded: expanded }), + ); + }, + [types.TOGGLE_FOLDER_OPEN](state, path) { state.treeEntries[path].opened = !state.treeEntries[path].opened; }, diff --git a/app/assets/javascripts/diffs/store/utils.js b/app/assets/javascripts/diffs/store/utils.js index 71956255ee..1c3ed84001 100644 --- a/app/assets/javascripts/diffs/store/utils.js +++ b/app/assets/javascripts/diffs/store/utils.js @@ -454,3 +454,48 @@ export const convertExpandLines = ({ }; export const idleCallback = cb => requestIdleCallback(cb); + +export const updateLineInFile = (selectedFile, lineCode, updateFn) => { + if (selectedFile.parallel_diff_lines) { + const targetLine = selectedFile.parallel_diff_lines.find( + line => + (line.left && line.left.line_code === lineCode) || + (line.right && line.right.line_code === lineCode), + ); + if (targetLine) { + const side = targetLine.left && targetLine.left.line_code === lineCode ? 'left' : 'right'; + + updateFn(targetLine[side]); + } + } + if (selectedFile.highlighted_diff_lines) { + const targetInlineLine = selectedFile.highlighted_diff_lines.find( + line => line.line_code === lineCode, + ); + + if (targetInlineLine) { + updateFn(targetInlineLine); + } + } +}; + +export const allDiscussionWrappersExpanded = diff => { + const discussionsExpandedArray = []; + if (diff.parallel_diff_lines) { + diff.parallel_diff_lines.forEach(line => { + if (line.left && line.left.discussions.length) { + discussionsExpandedArray.push(line.left.discussionsExpanded); + } + if (line.right && line.right.discussions.length) { + discussionsExpandedArray.push(line.right.discussionsExpanded); + } + }); + } else if (diff.highlighted_diff_lines) { + diff.parallel_diff_lines.forEach(line => { + if (line.discussions.length) { + discussionsExpandedArray.push(line.discussionsExpanded); + } + }); + } + return discussionsExpandedArray.every(el => el); +}; diff --git a/app/assets/javascripts/environments/components/container.vue b/app/assets/javascripts/environments/components/container.vue index f8a637138a..426bb63d4f 100644 --- a/app/assets/javascripts/environments/components/container.vue +++ b/app/assets/javascripts/environments/components/container.vue @@ -57,6 +57,7 @@ export default { :user-callouts-path="userCalloutsPath" :lock-promotion-svg-path="lockPromotionSvgPath" :help-canary-deployments-path="helpCanaryDeploymentsPath" + :deploy-boards-help-path="deployBoardsHelpPath" /> -import { s__, sprintf } from '~/locale'; +import { __, s__, sprintf } from '~/locale'; import { formatTime } from '~/lib/utils/datetime_utility'; import Icon from '~/vue_shared/components/icon.vue'; import eventHub from '../event_hub'; @@ -28,7 +28,7 @@ export default { }, computed: { title() { - return 'Deploy to...'; + return __('Deploy to...'); }, }, methods: { @@ -80,7 +80,8 @@ export default { data-toggle="dropdown" > - + + @@ -94,9 +95,10 @@ export default { class="js-manual-action-link no-btn btn d-flex align-items-center" @click="onClickAction(action)" > - {{ action.name }} + {{ action.name }} - {{ remainingTime(action) }} + + {{ remainingTime(action) }} diff --git a/app/assets/javascripts/environments/components/environment_item.vue b/app/assets/javascripts/environments/components/environment_item.vue index f0e80cba75..813045cb5e 100644 --- a/app/assets/javascripts/environments/components/environment_item.vue +++ b/app/assets/javascripts/environments/components/environment_item.vue @@ -1,4 +1,5 @@ diff --git a/app/assets/javascripts/groups/components/item_caret.vue b/app/assets/javascripts/groups/components/item_caret.vue index 43b9607ea8..18ea481987 100644 --- a/app/assets/javascripts/groups/components/item_caret.vue +++ b/app/assets/javascripts/groups/components/item_caret.vue @@ -21,5 +21,5 @@ export default { diff --git a/app/assets/javascripts/groups/components/item_stats.vue b/app/assets/javascripts/groups/components/item_stats.vue index bc6851ea2b..734a9a89c7 100644 --- a/app/assets/javascripts/groups/components/item_stats.vue +++ b/app/assets/javascripts/groups/components/item_stats.vue @@ -48,7 +48,7 @@ export default { :title="__('Subgroups')" :value="item.subgroupCount" css-class="number-subgroups" - icon-name="folder" + icon-name="folder-o" /> -
    diff --git a/app/assets/javascripts/groups/components/item_type_icon.vue b/app/assets/javascripts/groups/components/item_type_icon.vue index e1ebd03cb5..ae69fbd7bd 100644 --- a/app/assets/javascripts/groups/components/item_type_icon.vue +++ b/app/assets/javascripts/groups/components/item_type_icon.vue @@ -20,7 +20,7 @@ export default { computed: { iconClass() { if (this.itemType === ITEM_TYPE.GROUP) { - return this.isGroupOpen ? 'folder-open' : 'folder'; + return this.isGroupOpen ? 'folder-open' : 'folder-o'; } return 'bookmark'; }, diff --git a/app/assets/javascripts/groups_select.js b/app/assets/javascripts/groups_select.js index a1263d1cda..f1cc675658 100644 --- a/app/assets/javascripts/groups_select.js +++ b/app/assets/javascripts/groups_select.js @@ -77,9 +77,7 @@ export default function groupsSelect() { } }, formatResult(object) { - return `
    ${ - object.full_name - }
    ${object.full_path}
    `; + return `
    ${object.full_name}
    ${object.full_path}
    `; }, formatSelection(object) { return object.full_name; diff --git a/app/assets/javascripts/ide/components/commit_sidebar/list_item.vue b/app/assets/javascripts/ide/components/commit_sidebar/list_item.vue index 4be4b02ac1..c8fbc3cb9f 100644 --- a/app/assets/javascripts/ide/components/commit_sidebar/list_item.vue +++ b/app/assets/javascripts/ide/components/commit_sidebar/list_item.vue @@ -107,7 +107,8 @@ export default { @click="openFileInEditor" > - {{ file.name }} + + {{ file.name }}
    diff --git a/app/assets/javascripts/ide/components/external_link.vue b/app/assets/javascripts/ide/components/external_link.vue index 954f84cea1..d1857f0176 100644 --- a/app/assets/javascripts/ide/components/external_link.vue +++ b/app/assets/javascripts/ide/components/external_link.vue @@ -27,7 +27,7 @@ export default { target="_blank" rel="noopener noreferrer" > - Open in file view + {{ __('Open in file view') }}
    diff --git a/app/assets/javascripts/ide/components/ide_tree_list.vue b/app/assets/javascripts/ide/components/ide_tree_list.vue index 95782b2c88..1af86a9448 100644 --- a/app/assets/javascripts/ide/components/ide_tree_list.vue +++ b/app/assets/javascripts/ide/components/ide_tree_list.vue @@ -30,6 +30,9 @@ export default { showLoading() { return !this.currentTree || this.currentTree.loading; }, + actualTreeList() { + return this.currentTree.tree.filter(entry => !entry.moved); + }, }, mounted() { this.updateViewer(this.viewerType); @@ -54,9 +57,9 @@ export default {
    -