From 52cfd360f99ea8dc75f8a9499f897f63bdec9df0 Mon Sep 17 00:00:00 2001 From: Pirate Praveen Date: Mon, 15 Oct 2018 14:42:47 +0530 Subject: [PATCH] New upstream version 10.8.7+dfsg --- .babelrc | 6 +- .flayignore | 1 + .gitignore | 4 + .gitlab-ci.yml | 76 +- .../Security Developer Workflow.md | 70 + .../Database Changes.md | 2 +- .rubocop_todo.yml | 8 +- .ruby-version | 2 +- CHANGELOG.md | 268 +- CONTRIBUTING.md | 79 +- GITALY_SERVER_VERSION | 2 +- GITLAB_PAGES_VERSION | 2 +- GITLAB_WORKHORSE_VERSION | 2 +- Gemfile | 17 +- Gemfile.lock | 63 +- Gemfile.rails5.lock | 60 +- LICENSE | 27 +- README.md | 6 + VERSION | 2 +- .../ext_snippet_icons/ext_snippet_icons.png | Bin 0 -> 1018 bytes app/assets/images/ext_snippet_icons/logo.png | Bin 0 -> 494 bytes app/assets/javascripts/behaviors/gl_emoji.js | 27 +- .../blob/file_template_mediator.js | 2 +- .../blob/file_template_selector.js | 4 + .../javascripts/boards/components/board.js | 4 +- ...d_blank_state.js => board_blank_state.vue} | 71 +- .../boards/components/modal/empty_state.js | 6 +- .../boards/components/modal/footer.js | 6 +- .../boards/components/modal/header.js | 6 +- .../boards/components/modal/index.js | 3 +- .../boards/components/modal/list.js | 3 +- .../boards/components/modal/lists_dropdown.js | 3 +- .../boards/components/modal/tabs.js | 6 +- app/assets/javascripts/boards/index.js | 7 +- .../javascripts/boards/mixins/modal_mixins.js | 4 +- .../javascripts/boards/stores/modal_store.js | 5 +- .../branches/branches_delete_modal.js | 11 + .../javascripts/clusters/clusters_index.js | 26 +- .../clusters/components/applications.vue | 185 +- .../clusters/components/gcp_signup_offer.js | 27 + .../commit/pipelines/pipelines_table.vue | 26 +- app/assets/javascripts/compare.js | 86 - .../javascripts/compare_autocomplete.js | 49 +- .../create_merge_request_dropdown.js | 33 +- .../deploy_keys/components/action_btn.vue | 71 +- .../deploy_keys/components/app.vue | 214 +- .../deploy_keys/components/key.vue | 314 +- .../deploy_keys/components/keys_panel.vue | 100 +- app/assets/javascripts/deploy_keys/index.js | 39 +- .../javascripts/deploy_keys/service/index.js | 25 +- .../javascripts/deploy_keys/store/index.js | 4 +- app/assets/javascripts/due_date_select.js | 9 +- app/assets/javascripts/emoji/index.js | 6 +- .../emoji/support/unicode_support_map.js | 40 +- .../environments/components/container.vue | 1 + .../components/environment_actions.vue | 18 +- .../components/environment_external_url.vue | 14 +- .../components/environment_monitoring.vue | 15 +- .../components/environment_rollback.vue | 3 - .../environment_terminal_button.vue | 18 +- .../feature_highlight/feature_highlight.js | 17 +- .../feature_highlight_helper.js | 29 +- app/assets/javascripts/gfm_auto_complete.js | 9 +- app/assets/javascripts/gpg_badges.js | 6 +- .../ide/components/activity_bar.vue | 106 + .../ide/components/changed_file_icon.vue | 75 +- .../ide/components/commit_sidebar/actions.vue | 69 +- .../components/commit_sidebar/empty_state.vue | 36 + .../ide/components/commit_sidebar/form.vue | 171 + .../ide/components/commit_sidebar/list.vue | 164 +- .../commit_sidebar/list_collapsed.vue | 121 +- .../components/commit_sidebar/list_item.vue | 61 +- .../commit_sidebar/message_field.vue | 130 + .../components/commit_sidebar/radio_group.vue | 116 +- .../commit_sidebar/stage_button.vue | 59 + .../commit_sidebar/success_message.vue | 33 + .../commit_sidebar/unstage_button.vue | 45 + .../ide/components/editor_mode_dropdown.vue | 80 +- .../ide/components/file_finder/index.vue | 243 + .../ide/components/file_finder/item.vue | 113 + app/assets/javascripts/ide/components/ide.vue | 170 +- .../ide/components/ide_context_bar.vue | 84 - .../ide/components/ide_external_links.vue | 43 - .../components/ide_project_branches_tree.vue | 47 - .../ide/components/ide_project_tree.vue | 65 - .../ide/components/ide_repo_tree.vue | 41 - .../javascripts/ide/components/ide_review.vue | 62 + .../ide/components/ide_side_bar.vue | 143 +- .../ide/components/ide_status_bar.vue | 99 +- .../javascripts/ide/components/ide_tree.vue | 42 + .../ide/components/ide_tree_list.vue | 76 + .../ide/components/mr_file_icon.vue | 4 +- .../ide/components/new_dropdown/index.vue | 91 +- .../ide/components/new_dropdown/modal.vue | 11 +- .../ide/components/repo_commit_section.vue | 184 +- .../ide/components/repo_editor.vue | 68 +- .../javascripts/ide/components/repo_file.vue | 108 +- .../javascripts/ide/components/repo_tab.vue | 56 +- .../javascripts/ide/components/repo_tabs.vue | 17 - app/assets/javascripts/ide/constants.js | 24 + app/assets/javascripts/ide/ide_router.js | 7 +- app/assets/javascripts/ide/index.js | 33 +- .../javascripts/ide/lib/common/model.js | 43 +- .../ide/lib/common/model_manager.js | 4 +- .../ide/lib/decorations/controller.js | 9 + .../javascripts/ide/lib/diff/controller.js | 25 +- app/assets/javascripts/ide/lib/editor.js | 45 +- app/assets/javascripts/ide/lib/keymap.json | 11 + app/assets/javascripts/ide/stores/actions.js | 62 +- .../javascripts/ide/stores/actions/file.js | 51 +- .../javascripts/ide/stores/actions/project.js | 122 +- app/assets/javascripts/ide/stores/getters.js | 62 +- .../ide/stores/modules/commit/actions.js | 84 +- .../ide/stores/modules/commit/getters.js | 14 +- .../javascripts/ide/stores/mutation_types.js | 12 + .../javascripts/ide/stores/mutations.js | 57 +- .../ide/stores/mutations/branch.js | 5 + .../javascripts/ide/stores/mutations/file.js | 104 +- app/assets/javascripts/ide/stores/state.js | 8 +- app/assets/javascripts/ide/stores/utils.js | 18 +- .../stores/workers/files_decorator_worker.js | 8 + app/assets/javascripts/issuable_context.js | 4 +- .../javascripts/jobs/components/header.vue | 150 +- .../jobs/components/sidebar_details_block.vue | 185 +- .../javascripts/jobs/job_details_bundle.js | 5 +- app/assets/javascripts/labels_select.js | 8 +- app/assets/javascripts/lib/utils/keycodes.js | 4 + .../javascripts/lib/utils/text_utility.js | 6 +- app/assets/javascripts/main.js | 61 +- app/assets/javascripts/milestone.js | 22 + app/assets/javascripts/milestone_select.js | 86 +- .../mini_pipeline_graph_dropdown.js | 4 +- .../monitoring/components/graph.vue | 8 +- .../monitoring/components/graph/flag.vue | 22 +- .../monitoring/components/graph/path.vue | 22 +- .../components/graph/track_line.vue | 10 +- .../monitoring/mixins/monitoring_mixins.js | 20 +- .../monitoring/utils/date_time_formatters.js | 2 +- .../monitoring/utils/multiple_time_series.js | 1 + .../notes/components/comment_form.vue | 6 +- .../notes/components/discussion_counter.vue | 2 +- .../javascripts/notes/stores/actions.js | 3 + .../javascripts/notes/stores/getters.js | 3 + .../users/components/delete_user_modal.vue | 5 +- .../pages/dashboard/milestones/show/index.js | 2 + .../pages/groups/milestones/show/index.js | 7 +- .../pages/groups/settings/ci_cd/show/index.js | 4 + app/assets/javascripts/pages/ide/index.js | 9 + .../pages/ldap/omniauth_callbacks/index.js | 3 + .../projects/clusters/gcp/login/index.js | 3 + .../pages/projects/clusters/new/index.js | 3 + .../pages/projects/compare/index.js | 2 +- .../pages/projects/compare/show/index.js | 2 + .../javascripts/pages/projects/edit/index.js | 4 +- .../merge_requests/creations/new/compare.js | 60 + .../merge_requests/creations/new/index.js | 11 +- .../creations/new/target_project_dropdown.js | 22 + .../javascripts/pages/projects/new/index.js | 4 +- .../pages/projects/pipelines/new/index.js | 6 + .../pages/projects/shared/project_new.js | 152 - .../projects/shared/save_project_loader.js | 12 + .../pages/projects/snippets/show/index.js | 6 +- .../sessions/new/signin_tabs_memoizer.js | 2 +- .../javascripts/pages/snippets/show/index.js | 10 +- .../pages/users/activity_calendar.js | 205 +- .../components/performance_bar_app.vue | 5 - .../components/upstream_performance_bar.vue | 20 - .../javascripts/performance_bar/index.js | 2 - .../components/graph/action_component.vue | 60 +- .../graph/dropdown_action_component.vue | 53 - .../graph/dropdown_job_component.vue | 140 +- .../components/graph/graph_component.vue | 16 +- .../components/graph/job_component.vue | 41 +- .../graph/stage_column_component.vue | 15 +- .../pipelines/components/pipelines.vue | 64 +- .../components/pipelines_table_row.vue | 3 + .../pipelines/components/stage.vue | 254 +- app/assets/javascripts/pipelines/constants.js | 2 + .../javascripts/pipelines/mixins/pipelines.js | 41 +- .../pipelines/pipeline_details_bundle.js | 31 +- .../pipelines/pipeline_details_mediator.js | 6 +- .../pipelines/services/pipeline_service.js | 13 +- .../pipelines/services/pipelines_service.js | 42 +- .../projects_dropdown/components/app.vue | 5 +- .../service/projects_service.js | 14 +- .../javascripts/registry/stores/actions.js | 3 + .../javascripts/registry/stores/getters.js | 3 + app/assets/javascripts/right_sidebar.js | 12 +- app/assets/javascripts/shared/popover.js | 33 + app/assets/javascripts/shortcuts.js | 1 + .../shortcuts_dashboard_navigation.js | 11 +- .../components/assignees/assignees.vue | 20 +- .../assignees/sidebar_assignees.vue | 12 +- .../confidential_issue_sidebar.vue | 19 +- .../components/lock/lock_issue_sidebar.vue | 21 +- .../components/participants/participants.vue | 22 +- .../subscriptions/sidebar_subscriptions.vue | 8 +- .../subscriptions/subscriptions.vue | 22 +- .../time_tracking/collapsed_state.vue | 32 +- .../time_tracking/estimate_only_pane.js | 17 - .../time_tracking/estimate_only_pane.vue | 20 + .../{help_state.js => help_state.vue} | 49 +- .../time_tracking/no_tracking_pane.js | 10 - .../time_tracking/no_tracking_pane.vue | 13 + ..._tracking.js => sidebar_time_tracking.vue} | 35 +- .../time_tracking/spent_only_pane.js | 15 - .../time_tracking/spent_only_pane.vue | 18 + .../components/time_tracking/time_tracker.vue | 16 +- .../javascripts/sidebar/mount_sidebar.js | 3 +- .../javascripts/snippet/snippet_embed.js | 23 + app/assets/javascripts/users_select.js | 10 +- app/assets/javascripts/visibility_select.js | 21 - .../components/mr_widget_pipeline.vue | 107 +- .../states/mr_widget_failed_to_merge.vue | 110 +- .../components/states/mr_widget_merged.vue | 14 + .../states/mr_widget_pipeline_failed.js | 18 - .../components/states/pipeline_failed.vue | 25 + ...t_ready_to_merge.js => ready_to_merge.vue} | 271 +- .../states/unresolved_discussions.vue | 12 +- ...{mr_widget_wip.js => work_in_progress.vue} | 79 +- .../vue_merge_request_widget/dependencies.js | 6 +- .../mr_widget_options.js | 4 +- .../stores/mr_widget_store.js | 2 + .../vue_shared/components/callout.vue | 27 + .../vue_shared/components/ci_badge_link.vue | 88 +- .../vue_shared/components/ci_icon.vue | 75 +- .../components/clipboard_button.vue | 76 +- .../vue_shared/components/commit.vue | 217 +- .../vue_shared/components/expand_button.vue | 54 +- .../vue_shared/components/file_icon.vue | 109 +- .../components/header_ci_component.vue | 132 +- .../vue_shared/components/icon.vue | 133 +- .../vue_shared/components/markdown/header.vue | 10 +- .../vue_shared/components/navigation_tabs.vue | 88 +- .../components/sidebar/labels_select/base.vue | 14 +- .../dropdown_value_collapsed.vue | 6 + .../components/sidebar/toggle_sidebar.vue | 39 +- .../javascripts/vue_shared/models/label.js | 2 +- app/assets/stylesheets/application.scss | 6 +- app/assets/stylesheets/emoji_sprites.scss | 5403 +++++++++++++++++ app/assets/stylesheets/framework.scss | 122 +- app/assets/stylesheets/framework/banner.scss | 19 +- app/assets/stylesheets/framework/blocks.scss | 4 +- app/assets/stylesheets/framework/buttons.scss | 42 +- app/assets/stylesheets/framework/common.scss | 2 + .../stylesheets/framework/dropdowns.scss | 33 +- .../stylesheets/framework/emoji_sprites.scss | 1813 ------ .../stylesheets/framework/gitlab_theme.scss | 30 +- app/assets/stylesheets/framework/images.scss | 35 +- .../stylesheets/framework/markdown_area.scss | 10 + app/assets/stylesheets/framework/mobile.scss | 4 - .../secondary_navigation_elements.scss | 4 - app/assets/stylesheets/framework/sidebar.scss | 9 +- .../stylesheets/framework/snippets.scss | 28 +- app/assets/stylesheets/framework/terms.scss | 64 + .../stylesheets/framework/variables.scss | 23 +- app/assets/stylesheets/framework/wells.scss | 1 + .../stylesheets/highlight/embedded.scss | 3 + app/assets/stylesheets/highlight/white.scss | 291 +- .../stylesheets/highlight/white_base.scss | 290 + app/assets/stylesheets/pages/boards.scss | 2 + app/assets/stylesheets/pages/builds.scss | 41 +- app/assets/stylesheets/pages/clusters.scss | 48 + app/assets/stylesheets/pages/commits.scss | 27 +- app/assets/stylesheets/pages/diff.scss | 6 + .../stylesheets/pages/environments.scss | 37 +- app/assets/stylesheets/pages/issuable.scss | 28 +- app/assets/stylesheets/pages/labels.scss | 4 + app/assets/stylesheets/pages/login.scss | 20 +- .../stylesheets/pages/merge_requests.scss | 4 - app/assets/stylesheets/pages/milestone.scss | 49 +- app/assets/stylesheets/pages/notes.scss | 4 - app/assets/stylesheets/pages/pipelines.scss | 219 +- app/assets/stylesheets/pages/projects.scss | 55 +- app/assets/stylesheets/pages/repo.scss | 570 +- app/assets/stylesheets/pages/repo.scss.orig | 786 --- app/assets/stylesheets/performance_bar.scss | 1 - app/assets/stylesheets/snippets.scss | 156 + app/controllers/admin/dashboard_controller.rb | 2 + app/controllers/application_controller.rb | 50 +- .../concerns/authenticates_with_two_factor.rb | 3 + app/controllers/concerns/continue_params.rb | 4 +- app/controllers/concerns/internal_redirect.rb | 35 + app/controllers/concerns/issuable_actions.rb | 1 - .../concerns/issuable_collections.rb | 4 +- app/controllers/concerns/notes_actions.rb | 4 +- app/controllers/concerns/snippets_actions.rb | 4 + app/controllers/groups/runners_controller.rb | 58 + .../groups/variables_controller.rb | 2 +- app/controllers/import/base_controller.rb | 11 + .../import/bitbucket_controller.rb | 6 +- app/controllers/import/fogbugz_controller.rb | 5 +- app/controllers/import/github_controller.rb | 5 +- app/controllers/import/gitlab_controller.rb | 5 +- .../import/google_code_controller.rb | 5 +- .../ldap/omniauth_callbacks_controller.rb | 31 + .../omniauth_callbacks_controller.rb | 144 +- .../profiles/active_sessions_controller.rb | 14 + app/controllers/projects/commit_controller.rb | 1 + .../projects/compare_controller.rb | 65 +- app/controllers/projects/issues_controller.rb | 6 +- app/controllers/projects/labels_controller.rb | 11 +- .../merge_requests/creations_controller.rb | 7 - .../projects/merge_requests_controller.rb | 4 +- .../projects/milestones_controller.rb | 11 +- .../projects/mirrors_controller.rb | 67 + app/controllers/projects/notes_controller.rb | 4 +- .../projects/pipelines_controller.rb | 19 +- .../projects/prometheus/metrics_controller.rb | 2 +- .../projects/runner_projects_controller.rb | 4 +- .../projects/runners_controller.rb | 23 +- .../projects/settings/ci_cd_controller.rb | 12 +- .../settings/repository_controller.rb | 6 + .../projects/snippets_controller.rb | 3 + .../projects/variables_controller.rb | 2 +- app/controllers/projects/wikis_controller.rb | 19 +- .../sent_notifications_controller.rb | 20 +- app/controllers/sessions_controller.rb | 9 +- app/controllers/snippets_controller.rb | 4 + app/controllers/users/terms_controller.rb | 70 + app/finders/group_descendants_finder.rb | 6 +- app/finders/groups_finder.rb | 8 +- app/finders/pipelines_finder.rb | 9 + app/finders/users_finder.rb | 12 + app/helpers/active_sessions_helper.rb | 23 + app/helpers/application_helper.rb | 13 + app/helpers/application_settings_helper.rb | 5 +- app/helpers/auth_helper.rb | 8 +- app/helpers/ci_status_helper.rb | 4 +- app/helpers/clusters_helper.rb | 8 + app/helpers/commits_helper.rb | 2 +- app/helpers/count_helper.rb | 5 + app/helpers/dropdowns_helper.rb | 2 +- app/helpers/gitlab_routing_helper.rb | 16 +- app/helpers/hooks_helper.rb | 2 +- app/helpers/icons_helper.rb | 4 + app/helpers/issuables_helper.rb | 38 +- app/helpers/milestones_helper.rb | 91 +- app/helpers/nav_helper.rb | 2 +- app/helpers/projects_helper.rb | 71 +- app/helpers/safe_params_helper.rb | 2 +- app/helpers/snippets_helper.rb | 35 + app/helpers/system_note_helper.rb | 6 +- app/helpers/tree_helper.rb | 2 +- app/helpers/user_callouts_helper.rb | 5 + app/helpers/users_helper.rb | 22 + app/helpers/webpack_helper.rb | 45 +- app/mailers/emails/issues.rb | 6 + app/mailers/emails/notes.rb | 5 +- app/mailers/notify.rb | 13 +- app/models/ability.rb | 8 + app/models/active_session.rb | 110 + app/models/application_setting.rb | 22 +- app/models/application_setting/term.rb | 13 + app/models/broadcast_message.rb | 6 +- app/models/ci/build.rb | 48 +- app/models/ci/build_trace_chunk.rb | 180 + app/models/ci/group_variable.rb | 2 +- app/models/ci/job_artifact.rb | 29 +- app/models/ci/pipeline.rb | 44 +- app/models/ci/pipeline_variable.rb | 2 + app/models/ci/runner.rb | 78 +- app/models/ci/runner_namespace.rb | 9 + app/models/ci/stage.rb | 21 +- .../clusters/applications/prometheus.rb | 5 + app/models/clusters/applications/runner.rb | 10 +- app/models/commit.rb | 10 + app/models/commit_status.rb | 10 +- app/models/concerns/atomic_internal_id.rb | 5 +- app/models/concerns/cache_markdown_field.rb | 30 +- app/models/concerns/fast_destroy_all.rb | 91 + app/models/concerns/group_descendant.rb | 15 +- app/models/concerns/milestoneish.rb | 4 +- app/models/concerns/nonatomic_internal_id.rb | 22 - app/models/concerns/participable.rb | 4 + app/models/concerns/routable.rb | 7 +- app/models/concerns/sha_attribute.rb | 34 +- .../concerns/storage/legacy_namespace.rb | 30 +- app/models/concerns/uniquify.rb | 22 +- app/models/deploy_token.rb | 5 + app/models/deployment.rb | 4 +- app/models/diff_note.rb | 15 +- app/models/event.rb | 3 + app/models/group.rb | 45 + app/models/identity.rb | 8 +- app/models/internal_id.rb | 3 +- app/models/issue.rb | 17 +- app/models/list.rb | 3 +- app/models/members/group_member.rb | 6 +- app/models/members/project_member.rb | 6 +- app/models/merge_request.rb | 10 +- app/models/merge_request_diff.rb | 4 - app/models/milestone.rb | 5 +- app/models/namespace.rb | 14 +- app/models/note.rb | 4 - app/models/notification_recipient.rb | 12 +- app/models/notification_setting.rb | 3 +- app/models/project.rb | 255 +- app/models/project_ci_cd_setting.rb | 16 + app/models/project_import_state.rb | 55 + .../project_services/flowdock_service.rb | 48 +- app/models/project_statistics.rb | 20 +- app/models/project_wiki.rb | 8 +- app/models/remote_mirror.rb | 219 + app/models/repository.rb | 33 +- app/models/sent_notification.rb | 4 +- app/models/service.rb | 6 +- app/models/storage/hashed_project.rb | 4 +- app/models/storage/legacy_project.rb | 8 +- app/models/system_note_metadata.rb | 6 +- app/models/term_agreement.rb | 6 + app/models/user.rb | 35 +- app/models/user_callout.rb | 3 +- app/models/wiki_page.rb | 18 +- .../application_setting/term_policy.rb | 28 + app/policies/global_policy.rb | 19 +- app/policies/project_policy.rb | 7 + app/policies/user_policy.rb | 6 +- app/presenters/ci/build_presenter.rb | 4 +- app/presenters/ci/pipeline_presenter.rb | 10 + app/presenters/commit_status_presenter.rb | 24 + .../generic_commit_status_presenter.rb | 2 + app/presenters/project_presenter.rb | 2 +- app/serializers/entity_date_helper.rb | 27 + app/serializers/job_entity.rb | 18 + .../merge_request_widget_entity.rb | 7 + app/serializers/project_mirror_entity.rb | 11 + app/serializers/stage_entity.rb | 16 + app/serializers/stage_serializer.rb | 7 + .../application_settings/update_service.rb | 15 + app/services/ci/create_pipeline_service.rb | 1 + app/services/ci/ensure_stage_service.rb | 1 + app/services/ci/register_job_service.rb | 50 +- app/services/ci/update_build_queue_service.rb | 16 +- .../clusters/gcp/finalize_creation_service.rb | 2 +- .../gcp/verify_provision_status_service.rb | 2 +- .../concerns/exclusive_lease_guard.rb | 52 + .../concerns/users/participable_service.rb | 41 + app/services/create_deployment_service.rb | 4 +- app/services/git_push_service.rb | 8 + .../import_export_clean_up_service.rb | 2 +- app/services/issues/close_service.rb | 2 +- app/services/issues/move_service.rb | 2 +- app/services/issues/reopen_service.rb | 2 +- app/services/issues/update_service.rb | 6 +- app/services/labels/transfer_service.rb | 11 +- app/services/merge_requests/close_service.rb | 2 +- app/services/merge_requests/merge_service.rb | 31 +- app/services/merge_requests/reopen_service.rb | 2 +- ...esolved_discussion_notification_service.rb | 2 +- app/services/merge_requests/update_service.rb | 11 +- app/services/notes/resolve_service.rb | 9 + .../notification_recipient_service.rb | 49 +- app/services/notification_service.rb | 89 +- app/services/projects/create_service.rb | 5 +- app/services/projects/destroy_service.rb | 8 +- .../migrate_repository_service.rb | 6 +- app/services/projects/participants_service.rb | 32 +- app/services/projects/transfer_service.rb | 2 +- app/services/projects/update_pages_service.rb | 29 +- .../projects/update_remote_mirror_service.rb | 30 + app/services/projects/update_service.rb | 17 +- .../quick_actions/interpret_service.rb | 26 +- .../repository_archive_clean_up_service.rb | 2 +- app/services/test_hooks/base_service.rb | 2 +- .../users/migrate_to_ghost_user_service.rb | 4 +- .../users/respond_to_terms_service.rb | 24 + app/services/web_hook_service.rb | 2 +- app/uploaders/job_artifact_uploader.rb | 8 +- .../_repository_check.html.haml | 2 +- .../_repository_mirrors_form.html.haml | 16 + .../_repository_storage.html.haml | 2 +- .../application_settings/_terms.html.haml | 22 + .../admin/application_settings/show.html.haml | 122 +- app/views/admin/dashboard/index.html.haml | 21 +- app/views/admin/projects/show.html.haml | 2 +- app/views/admin/runners/_runner.html.haml | 4 +- app/views/admin/runners/index.html.haml | 3 + app/views/admin/runners/show.html.haml | 7 +- app/views/admin/services/index.html.haml | 3 +- app/views/admin/users/_user.html.haml | 6 +- app/views/admin/users/index.html.haml | 14 +- app/views/admin/users/show.html.haml | 4 +- .../ci/status/_dropdown_graph_badge.html.haml | 2 +- .../ci/variables/_variable_row.html.haml | 6 +- .../mailer/unlock_instructions.html.haml | 2 +- .../mailer/unlock_instructions.text.erb | 2 +- app/views/devise/shared/_tab_single.html.haml | 2 +- app/views/devise/shared/_tabs_ldap.html.haml | 2 +- .../devise/shared/_tabs_normal.html.haml | 2 +- .../groups/_group_admin_settings.html.haml | 52 +- app/views/groups/edit.html.haml | 2 + .../groups/runners/_group_runners.html.haml | 24 + app/views/groups/runners/_index.html.haml | 9 + app/views/groups/runners/_runner.html.haml | 27 + app/views/groups/runners/edit.html.haml | 6 + .../groups/settings/ci_cd/show.html.haml | 28 +- app/views/help/index.html.haml | 2 +- app/views/ide/index.html.haml | 3 - app/views/layouts/_flash.html.haml | 4 +- app/views/layouts/_head.html.haml | 3 - .../layouts/_init_auto_complete.html.haml | 15 +- .../header/_current_user_dropdown.html.haml | 22 + app/views/layouts/header/_default.html.haml | 17 +- app/views/layouts/mailer.text.erb | 2 +- .../layouts/nav/sidebar/_profile.html.haml | 11 + .../layouts/nav/sidebar/_project.html.haml | 2 +- app/views/layouts/notify.text.erb | 2 +- app/views/layouts/terms.html.haml | 34 + app/views/notify/issue_due_email.html.haml | 12 + app/views/notify/issue_due_email.text.erb | 7 + app/views/peek/_bar.html.haml | 5 - .../active_sessions/_active_session.html.haml | 31 + .../profiles/active_sessions/index.html.haml | 14 + .../profiles/two_factor_auths/show.html.haml | 2 +- .../projects/_import_project_pane.html.haml | 51 + .../projects/_visibility_select.html.haml | 9 - app/views/projects/blob/_viewer.html.haml | 3 + .../blob/viewers/_highlight_embed.html.haml | 7 + app/views/projects/branches/_branch.html.haml | 13 +- .../_gcp_signup_offer_banner.html.haml | 12 + .../projects/clusters/gcp/login.html.haml | 2 + app/views/projects/clusters/index.html.haml | 2 + app/views/projects/clusters/new.html.haml | 4 +- .../projects/commit/_commit_box.html.haml | 2 +- app/views/projects/commits/_commit.html.haml | 13 +- app/views/projects/commits/show.html.haml | 2 +- app/views/projects/compare/_form.html.haml | 2 +- .../projects/deploy_keys/_index.html.haml | 2 +- app/views/projects/empty.html.haml | 2 +- app/views/projects/forks/new.html.haml | 2 +- app/views/projects/issues/_issue.html.haml | 2 +- app/views/projects/jobs/_sidebar.html.haml | 19 +- app/views/projects/jobs/index.html.haml | 2 +- .../merge_requests/_merge_request.html.haml | 2 +- .../creations/_new_compare.html.haml | 38 +- .../dropdowns/_project.html.haml | 2 +- .../projects/mirrors/_instructions.html.haml | 10 + app/views/projects/mirrors/_push.html.haml | 50 + app/views/projects/mirrors/_show.html.haml | 3 + app/views/projects/new.html.haml | 53 +- app/views/projects/pipelines/_info.html.haml | 2 +- .../projects/pipelines/_with_tabs.html.haml | 13 +- app/views/projects/pipelines/new.html.haml | 27 +- .../_branches_list.html.haml | 2 +- .../_create_protected_branch.html.haml | 8 +- .../_update_protected_branch.html.haml | 4 +- .../shared/_branches_list.html.haml | 2 +- .../shared/_dropdown.html.haml | 4 +- .../shared/_index.html.haml | 2 +- .../shared/_protected_branch.html.haml | 4 +- .../shared/_tags_list.html.haml | 2 +- .../registry/repositories/_tag.html.haml | 2 +- .../registry/repositories/index.html.haml | 2 +- .../projects/runners/_group_runners.html.haml | 37 + app/views/projects/runners/_index.html.haml | 18 +- app/views/projects/runners/_runner.html.haml | 16 +- .../runners/_shared_runners.html.haml | 4 +- app/views/projects/runners/edit.html.haml | 2 +- app/views/projects/services/_index.html.haml | 3 +- .../settings/ci_cd/_autodevops_form.html.haml | 41 + .../projects/settings/ci_cd/_form.html.haml | 38 - .../projects/settings/ci_cd/show.html.haml | 14 +- .../settings/repository/show.html.haml | 2 + .../projects/triggers/_trigger.html.haml | 2 +- .../shared/_auto_devops_callout.html.haml | 10 +- app/views/shared/_group_form.html.haml | 7 + .../shared/_mini_pipeline_graph.html.haml | 3 +- app/views/shared/_ref_switcher.html.haml | 4 +- .../_remote_mirror_update_button.html.haml | 13 + .../shared/boards/components/_board.html.haml | 3 +- .../components/sidebar/_labels.html.haml | 2 +- app/views/shared/issuable/_sidebar.html.haml | 13 +- .../issuable/_sidebar_assignees.html.haml | 2 +- .../shared/issuable/_sidebar_todo.html.haml | 6 +- .../form/_merge_request_assignee.html.haml | 2 +- app/views/shared/members/_group.html.haml | 2 +- app/views/shared/members/_member.html.haml | 2 +- .../milestones/_deprecation_message.html.haml | 14 + .../shared/milestones/_sidebar.html.haml | 35 +- app/views/shared/milestones/_top.html.haml | 13 +- .../runners/_form.html.haml | 13 +- .../runners/_runner_description.html.haml | 16 + .../runners/show.html.haml | 10 +- app/views/shared/snippets/_embed.html.haml | 24 + app/views/shared/snippets/_header.html.haml | 25 +- app/views/shared/snippets/show.js.haml | 2 + .../sherlock/transactions/_general.html.haml | 3 +- .../sherlock/transactions/index.html.haml | 3 +- app/views/users/show.html.haml | 2 +- app/views/users/terms/index.html.haml | 13 + app/workers/admin_email_worker.rb | 6 + app/workers/all_queues.yml | 7 + app/workers/authorized_projects_worker.rb | 8 + .../ci/build_trace_chunk_flush_worker.rb | 12 + .../gitlab/github_import/object_importer.rb | 2 +- app/workers/concerns/mail_scheduler_queue.rb | 11 + .../github_import/advance_stage_worker.rb | 9 +- .../refresh_import_jid_worker.rb | 5 +- app/workers/issue_due_scheduler_worker.rb | 10 + .../mail_scheduler/issue_due_worker.rb | 12 + .../notification_service_worker.rb | 19 + app/workers/new_note_worker.rb | 2 +- .../object_storage/migrate_uploads_worker.rb | 79 - app/workers/post_receive.rb | 2 +- app/workers/repository_check/batch_worker.rb | 35 +- .../single_repository_worker.rb | 52 +- app/workers/repository_fork_worker.rb | 8 +- app/workers/repository_import_worker.rb | 4 +- .../repository_remove_remote_worker.rb | 35 + .../repository_update_remote_mirror_worker.rb | 49 + app/workers/stuck_ci_jobs_worker.rb | 2 +- app/workers/stuck_import_jobs_worker.rb | 9 +- bin/secpick | 47 + bin/spinach | 5 + changelogs/no-rm-rf-gitlab-basics.yml | 5 + config/application.rb | 2 + config/gitlab.yml.example | 20 +- config/initializers/1_settings.rb | 136 +- config/initializers/2_app.rb | 8 - config/initializers/2_gitlab.rb | 1 + config/initializers/8_metrics.rb | 9 +- ...id_type_casting_in_uniqueness_validator.rb | 98 + config/initializers/console_message.rb | 10 + config/initializers/deprecations.rb | 9 + .../forbid_sidekiq_in_transactions.rb | 12 +- config/initializers/gollum.rb | 14 + config/initializers/lograge.rb | 18 - config/initializers/pages.rb | 2 + config/initializers/peek.rb | 1 - config/initializers/sentry.rb | 2 +- config/initializers/session_store.rb | 26 +- config/initializers/static_files.rb | 2 +- config/initializers/trusted_proxies.rb | 13 + config/initializers/warden.rb | 16 +- config/karma.config.js | 89 +- config/prometheus/additional_metrics.yml | 12 +- config/routes/admin.rb | 2 +- config/routes/group.rb | 7 + config/routes/profile.rb | 1 + config/routes/project.rb | 11 +- config/routes/repository.rb | 1 + config/routes/user.rb | 25 + config/settings.rb | 126 + config/sidekiq_queues.yml | 4 + config/webpack.config.js | 178 +- db/fixtures/development/01_admin.rb | 20 +- db/fixtures/development/17_cycle_analytics.rb | 2 +- db/fixtures/development/19_environments.rb | 6 +- ...0141214_remove_dot_git_from_group_names.rb | 12 +- ...226122833_remove_dot_git_from_usernames.rb | 22 +- ...20170301101006_add_ci_runner_namespaces.rb | 17 + ...70906133745_add_runners_token_to_groups.rb | 9 + ...0326202229_create_ci_build_trace_chunks.rb | 17 + ..._add_issue_due_to_notification_settings.rb | 9 + ...403035759_create_project_ci_cd_settings.rb | 68 + ...i_build_trace_chunks_raw_data_for_mysql.rb | 13 + ...te_missing_namespace_for_internal_users.rb | 66 + ...ther_scope_columns_to_internal_id_table.rb | 15 + ..._index_constraints_to_internal_id_table.rb | 40 + ...d_tmp_stage_priority_index_to_ci_builds.rb | 16 + .../20180417101940_add_index_to_ci_stage.rb | 9 + ...20010016_add_pipeline_build_foreign_key.rb | 27 + ...420010616_cleanup_build_stage_migration.rb | 61 + ...d_enforce_terms_to_application_settings.rb | 9 + ...134533_create_application_setting_terms.rb | 13 + .../20180425075446_create_term_agreements.rb | 28 + ...re_commits_count_for_merge_request_diff.rb | 27 + ...180426102016_add_accepted_term_to_users.rb | 23 + ...430101916_add_runner_type_to_ci_runners.rb | 9 + ...180502122856_create_project_mirror_data.rb | 20 + .../20180503131624_create_remote_mirrors.rb | 33 + ...mirror_available_overridden_to_projects.rb | 15 + ...7_add_index_to_namespaces_runners_token.rb | 20 + ..._missing_columns_to_project_mirror_data.rb | 15 + ...5054_add_indexes_to_project_mirror_data.rb | 17 + ...0503193542_add_indexes_to_remote_mirror.rb | 15 + ...irror_available_to_application_settings.rb | 15 + ...20_enable_prometheus_metrics_by_default.rb | 11 + ...make_remote_mirrors_disabled_by_default.rb | 11 + ...aint_to_project_mirror_data_foreign_key.rb | 21 + ...to_project_mirror_data_project_id_index.rb | 31 + ...0529093006_ensure_remote_mirror_columns.rb | 24 + ...i_build_trace_chunks_raw_data_for_mysql.rb | 9 + ...populate_missing_project_ci_cd_settings.rb | 34 + ...0080616_schedule_stages_index_migration.rb | 29 + ...runner_type_for_ci_runners_post_migrate.rb | 23 + ...ta_from_projects_to_project_mirror_data.rb | 38 + db/schema.rb | 105 +- doc/README.md | 47 +- doc/administration/high_availability/nfs.md | 110 +- doc/administration/high_availability/redis.md | 43 +- doc/administration/index.md | 1 + doc/administration/job_artifacts.md | 4 +- doc/administration/job_traces.md | 95 + .../monitoring/prometheus/gitlab_metrics.md | 2 +- .../operations/fast_ssh_key_lookup.md | 2 +- doc/administration/repository_checks.md | 26 +- doc/administration/uploads.md | 2 +- doc/api/README.md | 26 +- doc/api/discussions.md | 585 +- doc/api/group_badges.md | 2 +- doc/api/groups.md | 4 +- doc/api/notes.md | 9 +- doc/api/notification_settings.md | 4 + doc/api/pipeline_schedules.md | 4 +- doc/api/pipelines.md | 1 + doc/api/project_import_export.md | 8 +- doc/api/projects.md | 23 + doc/api/settings.md | 6 + doc/api/tags.md | 6 + doc/api/todos.md | 2 +- doc/api/users.md | 1 + doc/ci/docker/using_docker_build.md | 22 +- doc/ci/docker/using_docker_images.md | 2 +- doc/ci/environments.md | 2 + doc/ci/examples/browser_performance.md | 4 +- doc/ci/examples/container_scanning.md | 2 +- .../index.md | 2 +- .../index.md | 14 +- doc/ci/pipelines.md | 5 +- doc/ci/runners/README.md | 39 +- doc/ci/variables/README.md | 12 +- doc/ci/yaml/README.md | 103 +- doc/development/README.md | 2 +- doc/development/background_migrations.md | 19 +- doc/development/changelog.md | 2 +- doc/development/diffs.md | 115 + doc/development/doc_styleguide.md | 4 +- doc/development/ee_features.md | 2 +- doc/development/emails.md | 18 + .../fe_guide/development_process.md | 77 + doc/development/fe_guide/icons.md | 2 +- doc/development/fe_guide/index.md | 54 +- doc/development/fe_guide/style_guide_js.md | 10 +- doc/development/fe_guide/vue.md | 278 +- doc/development/fe_guide/vuex.md | 358 ++ doc/development/file_storage.md | 2 +- doc/development/gitaly.md | 73 +- doc/development/i18n/externalization.md | 19 +- doc/development/i18n/proofreader.md | 1 + doc/development/img/state-model-issue.png | Bin 7713 -> 0 bytes doc/development/img/state-model-legend.png | Bin 8496 -> 0 bytes .../img/state-model-merge-request.png | Bin 12459 -> 0 bytes .../merge_request_performance_guidelines.md | 2 +- .../new_fe_guide/development/components.md | 20 +- doc/development/object_state_models.md | 25 - doc/development/ordering_table_columns.md | 2 +- .../testing_guide/best_practices.md | 67 +- .../testing_guide/end_to_end_tests.md | 6 +- .../testing_guide/frontend_testing.md | 148 +- .../testing_guide/testing_levels.md | 2 +- .../testing_guide/testing_rake_tasks.md | 2 +- doc/development/ux_guide/components.md | 4 +- doc/development/what_requires_downtime.md | 2 +- doc/development/writing_documentation.md | 2 +- doc/gitlab-basics/command-line-commands.md | 2 +- doc/install/README.md | 4 +- doc/install/database_mysql.md | 2 +- doc/install/google_cloud_platform/index.md | 2 +- doc/install/installation.md | 17 +- doc/install/kubernetes/gitlab_chart.md | 488 +- doc/install/kubernetes/gitlab_runner_chart.md | 34 +- doc/install/kubernetes/index.md | 7 +- doc/integration/github.md | 4 +- doc/integration/shibboleth.md | 2 +- doc/raketasks/backup_restore.md | 42 + .../img/outbound_requests_section.png | Bin 0 -> 18064 bytes doc/security/webhooks.md | 13 +- doc/ssh/README.md | 4 +- doc/topics/autodevops/img/rollout_enabled.png | Bin 0 -> 19536 bytes .../img/rollout_staging_disabled.png | Bin 0 -> 13837 bytes .../img/rollout_staging_enabled.png | Bin 0 -> 17306 bytes doc/topics/autodevops/img/staging_enabled.png | Bin 0 -> 17929 bytes doc/topics/autodevops/index.md | 108 +- doc/topics/autodevops/quick_start_guide.md | 4 + doc/university/glossary/README.md | 2 +- .../high-availability/aws/README.md | 4 +- doc/university/support/README.md | 2 +- doc/university/training/end-user/README.md | 2 +- doc/university/training/topics/tags.md | 2 +- doc/university/training/user_training.md | 2 +- doc/update/10.7-to-10.8.md | 362 ++ .../admin_area/settings/img/enforce_terms.png | Bin 0 -> 51979 bytes .../settings/img/respond_to_terms.png | Bin 0 -> 205994 bytes .../settings/sign_up_restrictions.md | 2 +- doc/user/admin_area/settings/terms.md | 38 + doc/user/group/img/groups.png | Bin 202498 -> 249533 bytes doc/user/group/img/new_group_from_groups.png | Bin 97271 -> 109302 bytes .../group/img/new_group_from_other_pages.png | Bin 70899 -> 90423 bytes doc/user/group/subgroups/index.md | 2 +- doc/user/index.md | 2 +- doc/user/permissions.md | 4 + doc/user/profile/active_sessions.md | 20 + doc/user/profile/img/active_sessions_list.png | Bin 0 -> 41649 bytes doc/user/profile/index.md | 1 + doc/user/project/clusters/index.md | 1 + doc/user/project/deploy_tokens/index.md | 12 +- doc/user/project/index.md | 1 + .../integrations/custom_issue_tracker.md | 6 +- .../prometheus_library/cloudwatch.md | 2 +- .../prometheus_library/haproxy.md | 2 +- .../prometheus_library/metrics.md | 3 +- .../integrations/prometheus_library/nginx.md | 12 +- .../prometheus_library/nginx_ingress.md | 6 +- doc/user/project/issues/closing_issues.md | 6 +- .../project/issues/crosslinking_issues.md | 2 +- doc/user/project/issues/due_dates.md | 4 + .../project/issues/issues_functionalities.md | 4 +- doc/user/project/milestones/index.md | 2 +- .../pages/getting_started_part_three.md | 2 +- .../project/pages/getting_started_part_two.md | 6 +- ...nship.png => remove_fork_relationship.png} | Bin doc/user/project/pages/index.md | 36 +- doc/user/project/quick_actions.md | 7 +- .../reducing_the_repo_size_using_git.md | 2 +- doc/user/project/settings/import_export.md | 3 +- doc/user/search/index.md | 2 +- doc/user/snippets.md | 33 + .../lfs/manage_large_binaries_with_git_lfs.md | 10 +- doc/workflow/notifications.md | 14 +- doc/workflow/repository_mirroring.md | 111 + ...ository_mirroring_diverged_branch_push.png | Bin 0 -> 9512 bytes ...ring_github_edit_personal_access_token.png | Bin 0 -> 20739 bytes ...ing_gitlab_push_to_a_remote_repository.png | Bin 0 -> 16538 bytes ...push_to_a_remote_repository_update_now.png | Bin 0 -> 16765 bytes .../repository_mirroring_push_settings.png | Bin 0 -> 18226 bytes doc/workflow/todos.md | 4 +- .../ee/ldap/omniauth_callbacks_controller.rb | 22 + .../omniauth_callbacks_controller_spec.rb | 29 + features/project/builds/artifacts.feature | 65 - features/project/builds/permissions.feature | 54 - features/project/commits/branches.feature | 42 - features/project/commits/comments.feature | 51 - features/project/commits/commits.feature | 96 - features/project/find_file.feature | 42 - features/project/issues/milestones.feature | 43 - features/project/project.feature | 86 - .../project/source/markdown_render.feature | 147 - features/steps/project/builds/artifacts.rb | 98 - features/steps/project/builds/permissions.rb | 7 - features/steps/project/commits/branches.rb | 57 - features/steps/project/commits/commits.rb | 192 - features/steps/project/deploy_keys.rb | 7 +- .../steps/project/forked_merge_requests.rb | 2 +- features/steps/project/issues/milestones.rb | 58 - features/steps/project/project.rb | 154 - features/steps/project/project_find_file.rb | 72 - .../steps/project/source/markdown_render.rb | 317 - features/steps/shared/builds.rb | 78 - features/steps/shared/group.rb | 4 - features/steps/shared/markdown.rb | 13 - features/steps/shared/note.rb | 122 - features/steps/shared/paths.rb | 32 - features/steps/shared/project.rb | 113 - features/support/capybara.rb | 8 +- features/support/env.rb | 6 +- lib/api/api_guard.rb | 12 +- lib/api/discussions.rb | 96 +- lib/api/entities.rb | 44 +- lib/api/group_variables.rb | 4 +- lib/api/groups.rb | 16 +- lib/api/helpers.rb | 4 + lib/api/helpers/custom_attributes.rb | 3 + lib/api/helpers/notes_helpers.rb | 60 +- lib/api/internal.rb | 12 +- lib/api/issues.rb | 2 +- lib/api/job_artifacts.rb | 2 +- lib/api/jobs.rb | 4 +- lib/api/notes.rb | 30 +- lib/api/pipelines.rb | 1 + lib/api/project_snippets.rb | 2 +- lib/api/projects.rb | 17 +- lib/api/runner.rb | 36 +- lib/api/snippets.rb | 8 +- lib/api/triggers.rb | 8 +- lib/api/users.rb | 2 +- lib/api/v3/builds.rb | 8 +- lib/api/v3/projects.rb | 2 +- lib/api/v3/snippets.rb | 6 +- lib/api/v3/triggers.rb | 4 +- lib/api/variables.rb | 4 +- lib/api/version.rb | 2 +- lib/backup/files.rb | 2 + lib/backup/helper.rb | 14 + lib/backup/repository.rb | 2 + lib/banzai/renderer/common_mark/html.rb | 2 +- lib/banzai/renderer/redcarpet/html.rb | 2 +- lib/declarative_policy/runner.rb | 2 +- lib/gitlab.rb | 44 +- lib/gitlab/auth.rb | 2 +- lib/gitlab/auth/blocked_user_tracker.rb | 4 +- lib/gitlab/auth/ldap/user.rb | 9 +- lib/gitlab/auth/o_auth/identity_linker.rb | 8 + lib/gitlab/auth/o_auth/user.rb | 14 + .../auth/omniauth_identity_linker_base.rb | 51 + lib/gitlab/auth/saml/identity_linker.rb | 8 + lib/gitlab/auth/saml/user.rb | 13 +- lib/gitlab/auth/user_access_denied_reason.rb | 33 + .../migrate_stage_index.rb | 47 + .../populate_import_state.rb | 39 + .../rollback_import_state_data.rb | 40 + lib/gitlab/bare_repository_import/importer.rb | 9 +- lib/gitlab/build_access.rb | 12 + .../cache/ci/project_pipeline_status.rb | 2 +- lib/gitlab/ci/cron_parser.rb | 8 +- lib/gitlab/ci/pipeline/chain/build.rb | 3 +- lib/gitlab/ci/pipeline/chain/command.rb | 2 +- lib/gitlab/ci/pipeline/chain/populate.rb | 6 +- lib/gitlab/ci/pipeline/seed/stage.rb | 1 + lib/gitlab/ci/status/build/erased.rb | 2 +- lib/gitlab/ci/trace.rb | 32 +- lib/gitlab/ci/trace/chunked_io.rb | 231 + lib/gitlab/ci/trace/stream.rb | 17 +- lib/gitlab/daemon.rb | 4 +- lib/gitlab/database.rb | 2 +- lib/gitlab/database/arel_methods.rb | 18 + lib/gitlab/database/count.rb | 48 + lib/gitlab/database/migration_helpers.rb | 4 +- .../v1/rename_base.rb | 10 +- .../v1/rename_namespaces.rb | 13 +- .../v1/rename_projects.rb | 2 +- lib/gitlab/diff/file_collection/base.rb | 2 + lib/gitlab/diff/highlight.rb | 5 +- lib/gitlab/diff/position.rb | 4 + lib/gitlab/ee_compat_check.rb | 2 +- .../email/handler/create_issue_handler.rb | 6 +- .../handler/create_merge_request_handler.rb | 4 - .../email/handler/create_note_handler.rb | 7 +- lib/gitlab/email/handler/reply_processing.rb | 8 +- .../email/handler/unsubscribe_handler.rb | 4 - lib/gitlab/gfm/uploads_rewriter.rb | 2 +- lib/gitlab/git.rb | 6 + lib/gitlab/git/attributes_parser.rb | 12 +- lib/gitlab/git/blob.rb | 26 +- lib/gitlab/git/commit.rb | 2 + lib/gitlab/git/committer_with_hooks.rb | 47 + lib/gitlab/git/diff.rb | 2 +- lib/gitlab/git/gitlab_projects.rb | 3 +- lib/gitlab/git/info_attributes.rb | 49 - lib/gitlab/git/path_helper.rb | 2 +- lib/gitlab/git/popen.rb | 4 +- lib/gitlab/git/raw_diff_change.rb | 71 + lib/gitlab/git/remote_repository.rb | 7 +- lib/gitlab/git/repository.rb | 145 +- lib/gitlab/git/repository_mirroring.rb | 2 +- .../git/support/format-git-cat-file-input | 21 + lib/gitlab/git/wiki.rb | 60 +- lib/gitlab/git_access.rb | 12 +- lib/gitlab/gitaly_client/commit_service.rb | 10 +- .../gitaly_client/repository_service.rb | 21 +- lib/gitlab/gitaly_client/wiki_service.rb | 2 + .../importer/pull_requests_importer.rb | 2 +- lib/gitlab/github_import/parallel_importer.rb | 3 +- lib/gitlab/gl_id.rb | 8 +- lib/gitlab/gon_helper.rb | 3 +- lib/gitlab/import_export.rb | 2 +- lib/gitlab/import_export/import_export.yml | 6 +- lib/gitlab/import_export/relation_factory.rb | 3 +- lib/gitlab/kubernetes/helm/base_command.rb | 3 + lib/gitlab/legacy_github_import/importer.rb | 3 +- lib/gitlab/metrics/web_transaction.rb | 18 +- lib/gitlab/optimistic_locking.rb | 19 +- lib/gitlab/pages_client.rb | 117 + lib/gitlab/project_template.rb | 6 +- lib/gitlab/redis/shared_state.rb | 2 + lib/gitlab/sentry.rb | 23 + lib/gitlab/shell.rb | 60 +- lib/gitlab/sidekiq_middleware/shutdown.rb | 2 +- lib/gitlab/usage_data.rb | 1 + lib/gitlab/utils.rb | 4 + lib/gitlab/view/presenter/base.rb | 4 + .../dev_server_middleware.rb} | 4 +- lib/gitlab/webpack/manifest.rb | 27 + lib/rspec_flaky/config.rb | 4 +- lib/rspec_flaky/flaky_examples_collection.rb | 10 +- lib/rspec_flaky/listener.rb | 39 +- lib/rspec_flaky/report.rb | 54 + lib/tasks/cache.rake | 23 +- lib/tasks/gitlab/check.rake | 5 +- lib/tasks/gitlab/info.rake | 2 +- lib/tasks/gitlab/list_repos.rake | 5 +- lib/tasks/gitlab/pages.rake | 9 + lib/tasks/gitlab/setup.rake | 11 + lib/tasks/gitlab/storage.rake | 4 +- lib/tasks/migrate/add_limits_mysql.rake | 2 + locale/gitlab.pot | 561 +- package.json | 62 +- qa/Dockerfile | 2 +- qa/Gemfile | 1 - qa/Gemfile.lock | 4 +- qa/qa.rb | 10 +- qa/qa/factory/base.rb | 2 +- qa/qa/factory/repository/push.rb | 26 +- qa/qa/factory/resource/branch.rb | 92 + qa/qa/factory/resource/deploy_key.rb | 14 +- qa/qa/factory/resource/merge_request.rb | 6 +- qa/qa/factory/resource/project.rb | 7 + qa/qa/factory/resource/secret_variable.rb | 3 +- qa/qa/git/location.rb | 2 +- qa/qa/git/repository.rb | 13 +- qa/qa/page/README.md | 4 +- qa/qa/page/base.rb | 4 + qa/qa/page/group/show.rb | 2 +- qa/qa/page/menu/main.rb | 7 +- qa/qa/page/merge_request/show.rb | 2 +- qa/qa/page/project/pipeline/show.rb | 4 +- qa/qa/page/project/settings/deploy_keys.rb | 12 + .../project/settings/protected_branches.rb | 88 + qa/qa/page/project/settings/repository.rb | 6 + .../page/project/settings/secret_variables.rb | 20 +- qa/qa/page/project/show.rb | 25 +- qa/qa/runtime/key/base.rb | 36 + qa/qa/runtime/key/ecdsa.rb | 12 + qa/qa/runtime/key/ed25519.rb | 12 + qa/qa/runtime/key/rsa.rb | 11 + qa/qa/runtime/rsa_key.rb | 21 - qa/qa/scenario/template.rb | 2 +- qa/qa/scenario/test/sanity/selectors.rb | 2 +- qa/qa/service/shellout.rb | 4 +- .../features/project/add_deploy_key_spec.rb | 3 +- .../features/project/deploy_key_clone_spec.rb | 138 +- qa/qa/specs/features/repository/clone_spec.rb | 6 +- .../repository/protected_branches_spec.rb | 70 + qa/spec/runtime/key/ecdsa_spec.rb | 18 + qa/spec/runtime/key/ed25519_spec.rb | 9 + .../runtime/{rsa_key.rb => key/rsa_spec.rb} | 4 +- .../cop/avoid_break_from_strong_memoize.rb | 48 + rubocop/cop/avoid_return_from_blocks.rb | 77 + rubocop/cop/migration/safer_boolean_column.rb | 4 +- rubocop/rubocop.rb | 2 + rubocop/spec_helpers.rb | 2 +- scripts/gitaly-test-build | 37 +- scripts/gitaly-test-spawn | 26 +- scripts/gitaly_test.rb | 97 + scripts/prune-old-flaky-specs | 24 + .../application_controller_spec.rb | 87 + .../concerns/continue_params_spec.rb | 45 + ...er_with_cross_project_access_check_spec.rb | 12 +- .../concerns/internal_redirect_spec.rb | 66 + .../groups/runners_controller_spec.rb | 74 + .../import/bitbucket_controller_spec.rb | 5 +- .../import/gitlab_controller_spec.rb | 5 +- .../omniauth_callbacks_controller_spec.rb | 58 + spec/controllers/profiles_controller_spec.rb | 6 +- .../projects/clusters/gcp_controller_spec.rb | 2 +- .../projects/compare_controller_spec.rb | 314 +- .../projects/forks_controller_spec.rb | 6 +- .../projects/jobs_controller_spec.rb | 3 +- .../projects/labels_controller_spec.rb | 8 + .../creations_controller_spec.rb | 30 - .../projects/milestones_controller_spec.rb | 10 +- .../projects/mirrors_controller_spec.rb | 72 + .../projects/pipelines_controller_spec.rb | 39 +- .../prometheus/metrics_controller_spec.rb | 85 +- .../settings/ci_cd_controller_spec.rb | 17 + spec/controllers/search_controller_spec.rb | 2 +- spec/controllers/sessions_controller_spec.rb | 2 +- .../users/terms_controller_spec.rb | 88 + spec/db/production/settings_spec.rb | 13 +- spec/factories/ci/build_trace_chunks.rb | 7 + spec/factories/ci/builds.rb | 8 +- spec/factories/ci/stages.rb | 1 + spec/factories/commit_statuses.rb | 1 + spec/factories/commits.rb | 2 +- spec/factories/deploy_tokens.rb | 8 + spec/factories/gpg_key_subkeys.rb | 2 - spec/factories/gpg_keys.rb | 2 +- spec/factories/gpg_signature.rb | 2 - spec/factories/groups.rb | 8 + spec/factories/import_state.rb | 38 + spec/factories/namespaces.rb | 18 +- spec/factories/notes.rb | 2 +- spec/factories/project_wikis.rb | 2 +- spec/factories/projects.rb | 35 +- spec/factories/remote_mirrors.rb | 6 + spec/factories/term_agreements.rb | 6 + spec/factories/terms.rb | 5 + spec/fast_spec_helper.rb | 16 + spec/features/admin/admin_runners_spec.rb | 41 + spec/features/admin/admin_settings_spec.rb | 21 +- spec/features/admin/admin_users_spec.rb | 2 +- .../admin_uses_repository_checks_spec.rb | 2 +- spec/features/boards/sidebar_spec.rb | 20 +- spec/features/dashboard/groups_list_spec.rb | 22 +- .../dashboard/milestone_filter_spec.rb | 49 +- spec/features/dashboard/projects_spec.rb | 4 +- .../members/manage_access_requests_spec.rb | 47 - .../master_manages_access_requests_spec.rb | 8 + spec/features/issues/issue_sidebar_spec.rb | 9 +- spec/features/issues/todo_spec.rb | 4 +- .../issues/user_uses_slash_commands_spec.rb | 6 +- spec/features/issues_spec.rb | 14 + .../user_selects_branches_for_new_mr_spec.rb | 66 +- spec/features/milestone_spec.rb | 14 + spec/features/milestones/show_spec.rb | 26 - .../milestones/user_creates_milestone_spec.rb | 29 + .../milestones/user_deletes_milestone_spec.rb | 25 + .../milestones/user_views_milestone_spec.rb | 31 + .../milestones/user_views_milestones_spec.rb | 35 + spec/features/oauth_login_spec.rb | 51 +- .../features/profiles/active_sessions_spec.rb | 89 + spec/features/projects/activity/rss_spec.rb | 7 +- .../activity/user_sees_activity_spec.rb | 21 + .../projects/artifacts/browse_spec.rb | 67 - .../projects/artifacts/download_spec.rb | 61 - .../artifacts/user_browses_artifacts_spec.rb | 110 + .../user_downloads_artifacts_spec.rb | 44 + .../branches/user_creates_branch_spec.rb | 46 + .../branches/user_deletes_branch_spec.rb | 23 + .../branches/user_views_branches_spec.rb | 34 + spec/features/projects/clusters/gcp_spec.rb | 48 +- spec/features/projects/clusters_spec.rb | 2 +- .../commit/user_comments_on_commit_spec.rb | 110 + .../commits/user_browses_commits_spec.rb | 194 +- spec/features/projects/compare_spec.rb | 69 +- spec/features/projects/deploy_keys_spec.rb | 6 +- spec/features/projects/edit_spec.rb | 62 - .../environments/environments_spec.rb | 16 + .../projects/files/browse_files_spec.rb | 46 - .../projects/files/creating_a_file_spec.rb | 37 - .../files/dockerfile_dropdown_spec.rb | 13 +- .../projects/files/download_buttons_spec.rb | 34 +- .../files/edit_file_soft_wrap_spec.rb | 7 +- .../projects/files/editing_a_file_spec.rb | 9 +- ...files_sort_submodules_with_folders_spec.rb | 7 +- .../projects/files/find_file_keyboard_spec.rb | 5 +- .../projects/files/gitignore_dropdown_spec.rb | 13 +- .../files/gitlab_ci_yml_dropdown_spec.rb | 13 +- ...project_owner_creates_license_file_spec.rb | 12 +- ...eate_license_file_in_empty_project_spec.rb | 9 +- .../files/template_selector_menu_spec.rb | 66 + .../files/template_type_dropdown_spec.rb | 31 +- .../projects/files/undo_template_spec.rb | 9 +- ..._with_a_folder_containing_only_a_folder.rb | 4 +- .../projects/files/user_browses_files_spec.rb | 249 + .../files/user_browses_lfs_files_spec.rb | 57 + .../user_creates_directory_spec.rb | 2 +- .../{ => files}/user_creates_files_spec.rb | 27 +- .../{ => files}/user_deletes_files_spec.rb | 2 +- .../{ => files}/user_edits_files_spec.rb | 2 +- .../projects/files/user_find_file_spec.rb | 66 + .../files/user_reads_pipeline_status_spec.rb | 46 + .../{ => files}/user_replaces_files_spec.rb | 2 +- .../files/user_searches_for_files_spec.rb | 20 +- .../{ => files}/user_uploads_files_spec.rb | 26 +- .../projects/guest_navigation_menu_spec.rb | 82 - .../import_export/import_file_spec.rb | 2 +- .../import_export/test_project_export.tar.gz | Bin 341299 -> 343091 bytes .../issues/user_toggles_subscription_spec.rb | 8 +- .../projects/jobs/permissions_spec.rb | 130 + .../projects/jobs/user_browses_jobs_spec.rb | 2 +- spec/features/projects/jobs_spec.rb | 64 +- .../master_manages_access_requests_spec.rb | 45 +- .../user_accepts_merge_request_spec.rb | 9 + spec/features/projects/new_project_spec.rb | 4 +- .../projects/pipelines/pipeline_spec.rb | 49 +- .../projects/pipelines/pipelines_spec.rb | 21 +- .../projects/project_settings_spec.rb | 205 - spec/features/projects/remote_mirror_spec.rb | 34 + .../settings/forked_project_settings_spec.rb | 2 +- .../settings/integration_settings_spec.rb | 28 +- .../projects/settings/lfs_settings_spec.rb | 27 + .../settings/pipelines_settings_spec.rb | 44 +- .../settings/repository_settings_spec.rb | 45 +- .../user_archives_project_spec.rb | 12 +- .../settings/user_changes_avatar_spec.rb | 44 + .../user_changes_default_branch_spec.rb | 20 + .../settings/user_manages_group_links_spec.rb | 2 +- ...r_manages_merge_requests_settings_spec.rb} | 52 +- .../user_manages_project_members_spec.rb | 2 +- .../settings/user_renames_a_project_spec.rb | 100 + .../settings/user_tags_project_spec.rb | 23 + .../settings/user_transfers_a_project_spec.rb | 73 + .../settings/visibility_settings_spec.rb | 40 +- ...r_views_empty_project_instructions_spec.rb | 2 +- .../{main => show}/download_buttons_spec.rb | 2 +- .../projects/{ => show}/no_password_spec.rb | 0 .../projects/{ => show}/redirects_spec.rb | 2 +- .../projects/{main => show}/rss_spec.rb | 2 +- .../user_interacts_with_stars_spec.rb | 2 +- .../show/user_manages_notifications_spec.rb | 19 + ...user_sees_deletion_failure_message_spec.rb | 18 + .../user_sees_git_instructions_spec.rb} | 23 +- .../user_sees_last_commit_ci_status_spec.rb | 18 + .../projects/show/user_sees_readme_spec.rb | 16 + .../user_sees_setup_shortcut_buttons_spec.rb | 318 + spec/features/projects/show_project_spec.rb | 359 -- .../projects/snippets/create_snippet_spec.rb | 2 +- spec/features/projects/snippets/show_spec.rb | 2 +- .../snippets/user_comments_on_snippet_spec.rb | 14 +- .../snippets/user_deletes_snippet_spec.rb | 2 +- .../snippets/user_updates_snippet_spec.rb | 2 +- .../snippets/user_views_snippets_spec.rb | 14 +- spec/features/projects/snippets_spec.rb | 49 - .../projects/tree/create_directory_spec.rb | 7 + .../projects/tree/create_file_spec.rb | 5 + .../projects/tree/upload_file_spec.rb | 13 - .../projects/user_browses_files_spec.rb | 189 - .../projects/user_sees_sidebar_spec.rb | 106 + .../projects/user_transfers_a_project_spec.rb | 49 - .../projects/user_uses_shortcuts_spec.rb | 6 +- .../projects/wiki/markdown_preview_spec.rb | 2 +- spec/features/projects/wiki/shortcuts_spec.rb | 2 +- .../wiki/user_creates_wiki_page_spec.rb | 288 +- .../wiki/user_deletes_wiki_page_spec.rb | 2 +- .../wiki/user_git_access_wiki_page_spec.rb | 2 +- .../wiki/user_updates_wiki_page_spec.rb | 8 +- .../user_views_wiki_in_project_page_spec.rb | 1 + .../wiki/user_views_wiki_page_spec.rb | 2 +- spec/features/raven_js_spec.rb | 2 +- spec/features/runners_spec.rb | 194 +- .../user_searches_for_wiki_pages_spec.rb | 2 +- .../snippets/embedded_snippet_spec.rb | 25 + spec/features/users/active_sessions_spec.rb | 69 + spec/features/users/login_spec.rb | 143 +- spec/features/users/signup_spec.rb | 25 + spec/features/users/terms_spec.rb | 103 + spec/finders/group_descendants_finder_spec.rb | 9 - spec/finders/groups_finder_spec.rb | 74 +- spec/finders/pipelines_finder_spec.rb | 20 + .../api/schemas/ci_detailed_status.json | 24 + .../entities/merge_request_widget.json | 2 + spec/fixtures/api/schemas/job.json | 24 + spec/fixtures/api/schemas/list.json | 2 + spec/fixtures/api/schemas/pipeline_stage.json | 24 + .../api/schemas/public_api/v4/notes.json | 5 +- .../api/schemas/public_api/v4/tag.json | 1 + spec/fixtures/exported-project.gz | Bin 2306 -> 2560 bytes spec/helpers/application_helper_spec.rb | 12 + spec/helpers/auth_helper_spec.rb | 24 + spec/helpers/gitlab_routing_helper_spec.rb | 15 + spec/helpers/icons_helper_spec.rb | 7 + spec/helpers/issuables_helper_spec.rb | 8 +- spec/helpers/milestones_helper_spec.rb | 54 - spec/helpers/projects_helper_spec.rb | 74 +- spec/helpers/snippets_helper_spec.rb | 33 + spec/helpers/users_helper_spec.rb | 37 + spec/javascripts/.eslintrc | 1 + spec/javascripts/activities_spec.js | 75 +- .../behaviors/quick_submit_spec.js | 2 +- .../blob/blob_file_dropzone_spec.js | 2 +- .../boards/board_blank_state_spec.js | 4 +- spec/javascripts/boards/modal_store_spec.js | 3 +- .../branches/branches_delete_modal_spec.js | 40 + .../collapsed_sidebar_todo_spec.js | 10 +- spec/javascripts/comment_type_toggle_spec.js | 5 +- .../commit/pipelines/pipelines_spec.js | 167 +- spec/javascripts/commits_spec.js | 12 +- .../deploy_keys/components/action_btn_spec.js | 64 +- .../deploy_keys/components/app_spec.js | 128 +- .../deploy_keys/components/key_spec.js | 102 +- .../deploy_keys/components/keys_panel_spec.js | 44 +- spec/javascripts/droplab/hook_spec.js | 5 +- .../feature_highlight_helper_spec.js | 159 +- .../feature_highlight_spec.js | 16 +- .../filtered_search_manager_spec.js | 17 +- .../recent_searches_root_spec.js | 6 +- spec/javascripts/fixtures/deploy_keys.rb | 4 + spec/javascripts/fixtures/graph.html.haml | 1 - .../fixtures/linked_tabs.html.haml | 2 +- .../fixtures/mini_dropdown_graph.html.haml | 1 + .../fixtures/signin_tabs.html.haml | 8 +- spec/javascripts/gl_dropdown_spec.js | 7 +- spec/javascripts/gpg_badges_spec.js | 4 +- .../javascripts/groups/components/app_spec.js | 5 +- .../groups/components/group_item_spec.js | 5 +- .../helpers/class_spec_helper_spec.js | 2 +- .../helpers/vue_component_helper.js | 21 +- .../ide/components/activity_bar_spec.js | 92 + .../components/commit_sidebar/actions_spec.js | 8 + .../commit_sidebar/empty_state_spec.js | 29 + .../components/commit_sidebar/form_spec.js | 146 + .../commit_sidebar/list_collapsed_spec.js | 54 +- .../commit_sidebar/list_item_spec.js | 15 +- .../components/commit_sidebar/list_spec.js | 21 +- .../commit_sidebar/message_field_spec.js | 174 + .../commit_sidebar/radio_group_spec.js | 13 - .../commit_sidebar/stage_button_spec.js | 46 + .../commit_sidebar/success_message_spec.js | 35 + .../commit_sidebar/unstage_button_spec.js | 39 + .../ide/components/file_finder/index_spec.js | 308 + .../ide/components/file_finder/item_spec.js | 140 + .../ide/components/ide_context_bar_spec.js | 37 - .../ide/components/ide_external_links_spec.js | 43 - .../ide/components/ide_project_tree_spec.js | 39 - .../ide/components/ide_repo_tree_spec.js | 43 - .../ide/components/ide_review_spec.js | 69 + .../ide/components/ide_side_bar_spec.js | 33 +- spec/javascripts/ide/components/ide_spec.js | 80 +- .../ide/components/ide_status_bar_spec.js | 63 + .../ide/components/ide_tree_list_spec.js | 54 + .../ide/components/ide_tree_spec.js | 34 + .../ide/components/new_dropdown/index_spec.js | 22 +- .../ide/components/new_dropdown/modal_spec.js | 14 +- .../components/repo_commit_section_spec.js | 153 +- .../ide/components/repo_editor_spec.js | 91 +- .../ide/components/repo_file_spec.js | 67 +- .../ide/components/repo_tabs_spec.js | 54 +- spec/javascripts/ide/lib/common/model_spec.js | 34 +- .../ide/lib/decorations/controller_spec.js | 29 + .../ide/lib/diff/controller_spec.js | 70 +- spec/javascripts/ide/lib/editor_spec.js | 6 +- spec/javascripts/ide/mock_data.js | 15 + .../ide/stores/actions/file_spec.js | 113 +- .../ide/stores/actions/project_spec.js | 71 + spec/javascripts/ide/stores/actions_spec.js | 152 +- spec/javascripts/ide/stores/getters_spec.js | 117 +- .../ide/stores/modules/commit/actions_spec.js | 103 +- .../ide/stores/modules/commit/getters_spec.js | 10 +- .../ide/stores/mutations/branch_spec.js | 22 + .../ide/stores/mutations/file_spec.js | 88 +- spec/javascripts/ide/stores/mutations_spec.js | 72 + .../issue_show/components/app_spec.js | 25 +- .../issue_show/components/description_spec.js | 15 +- spec/javascripts/issue_spec.js | 1 + spec/javascripts/job_spec.js | 3 +- spec/javascripts/jobs/header_spec.js | 34 +- .../jobs/sidebar_details_block_spec.js | 61 +- spec/javascripts/lib/utils/csrf_token_spec.js | 2 +- .../lib/utils/image_utility_spec.js | 8 +- .../lib/utils/text_utility_spec.js | 8 + spec/javascripts/merge_request_tabs_spec.js | 13 +- .../javascripts/monitoring/graph/flag_spec.js | 19 +- .../monitoring/graph/track_line_spec.js | 10 +- .../javascripts/monitoring/graph_path_spec.js | 2 + spec/javascripts/monitoring/graph_spec.js | 7 - .../monitoring/monitoring_store_spec.js | 2 +- spec/javascripts/notes_spec.js | 7 +- spec/javascripts/pager_spec.js | 43 +- .../index/components/stop_jobs_modal_spec.js | 5 +- .../components/delete_milestone_modal_spec.js | 5 +- .../pipeline_schedule_callout_spec.js | 2 +- .../pipelines/graph/action_component_spec.js | 42 +- .../graph/dropdown_action_component_spec.js | 32 - .../graph/dropdown_job_component_spec.js | 93 + .../pipelines/graph/graph_component_spec.js | 43 +- .../pipelines/graph/job_component_spec.js | 37 +- spec/javascripts/pipelines/graph/mock_data.js | 2 +- .../graph/stage_column_component_spec.js | 38 +- spec/javascripts/pipelines/mock_data.js | 423 ++ .../pipeline_details_mediator_spec.js | 36 +- spec/javascripts/pipelines/pipelines_spec.js | 219 +- spec/javascripts/pipelines/stage_spec.js | 120 +- .../projects_dropdown/components/app_spec.js | 41 +- spec/javascripts/right_sidebar_spec.js | 4 +- spec/javascripts/search_autocomplete_spec.js | 4 - spec/javascripts/settings_panels_spec.js | 4 +- spec/javascripts/shared/popover_spec.js | 162 + .../shortcuts_dashboard_navigation_spec.js | 23 + spec/javascripts/shortcuts_issuable_spec.js | 2 +- spec/javascripts/sidebar/participants_spec.js | 14 + .../sidebar/sidebar_mediator_spec.js | 7 +- .../sidebar/sidebar_move_issue_spec.js | 2 +- .../javascripts/sidebar/sidebar_store_spec.js | 2 +- .../sidebar/sidebar_subscriptions_spec.js | 3 +- .../javascripts/sidebar/subscriptions_spec.js | 19 + spec/javascripts/signin_tabs_memoizer_spec.js | 8 +- spec/javascripts/test_bundle.js | 16 +- spec/javascripts/todos_spec.js | 5 +- spec/javascripts/u2f/authenticate_spec.js | 2 +- spec/javascripts/u2f/register_spec.js | 2 +- spec/javascripts/visibility_select_spec.js | 98 - .../components/deployment_spec.js | 5 +- .../components/mr_widget_pipeline_spec.js | 40 + .../states/mr_widget_conflicts_spec.js | 2 +- .../states/mr_widget_failed_to_merge_spec.js | 46 +- .../states/mr_widget_merged_spec.js | 22 + .../states/mr_widget_pipeline_blocked_spec.js | 2 +- .../states/mr_widget_pipeline_failed_spec.js | 11 +- .../states/mr_widget_ready_to_merge_spec.js | 25 +- .../states/mr_widget_sha_mismatch_spec.js | 2 +- .../mr_widget_unresolved_discussions_spec.js | 52 +- .../components/states/mr_widget_wip_spec.js | 8 +- spec/javascripts/vue_mr_widget/mock_data.js | 2 + .../vue_shared/components/callout_spec.js | 45 + .../vue_shared/components/ci_icon_spec.js | 149 +- .../components/clipboard_button_spec.js | 2 +- .../vue_shared/components/commit_spec.js | 93 +- .../components/expand_button_spec.js | 4 +- .../components/markdown/header_spec.js | 33 +- .../sidebar/labels_select/base_spec.js | 16 + .../dropdown_value_collapsed_spec.js | 10 + spec/lib/backup/files_spec.rb | 14 + spec/lib/backup/repository_spec.rb | 16 +- spec/lib/banzai/object_renderer_spec.rb | 2 +- .../gitlab/auth/blocked_user_tracker_spec.rb | 44 +- spec/lib/gitlab/auth/ldap/user_spec.rb | 8 +- .../auth/o_auth/identity_linker_spec.rb | 62 + .../gitlab/auth/saml/identity_linker_spec.rb | 48 + .../auth/user_access_denied_reason_spec.rb | 34 + .../migrate_stage_index_spec.rb | 35 + .../populate_import_state_spec.rb | 38 + .../rollback_import_state_data_spec.rb | 28 + .../bare_repository_import/importer_spec.rb | 21 +- .../bare_repository_import/repository_spec.rb | 2 +- .../bitbucket_import/project_creator_spec.rb | 2 +- spec/lib/gitlab/build_access_spec.rb | 23 + .../cache/ci/project_pipeline_status_spec.rb | 2 +- .../gitlab/ci/pipeline/chain/build_spec.rb | 9 +- .../gitlab/ci/pipeline/chain/create_spec.rb | 2 +- .../gitlab/ci/pipeline/chain/populate_spec.rb | 9 +- .../lib/gitlab/ci/pipeline/seed/stage_spec.rb | 3 +- spec/lib/gitlab/ci/trace/chunked_io_spec.rb | 383 ++ spec/lib/gitlab/ci/trace/stream_spec.rb | 643 +- spec/lib/gitlab/ci/trace_spec.rb | 547 +- .../lib/gitlab/data_builder/wiki_page_spec.rb | 2 +- spec/lib/gitlab/database/count_spec.rb | 62 + spec/lib/gitlab/database_spec.rb | 14 + spec/lib/gitlab/diff/highlight_spec.rb | 9 +- .../handler/create_issue_handler_spec.rb | 1 - .../create_merge_request_handler_spec.rb | 1 - .../email/handler/create_note_handler_spec.rb | 1 - .../email/handler/unsubscribe_handler_spec.rb | 1 - spec/lib/gitlab/email/handler_spec.rb | 30 + spec/lib/gitlab/email/receiver_spec.rb | 1 - spec/lib/gitlab/git/attributes_parser_spec.rb | 12 - spec/lib/gitlab/git/blob_spec.rb | 20 + .../gitlab/git/committer_with_hooks_spec.rb | 154 + spec/lib/gitlab/git/info_attributes_spec.rb | 43 - spec/lib/gitlab/git/raw_diff_change_spec.rb | 66 + spec/lib/gitlab/git/repository_spec.rb | 67 +- spec/lib/gitlab/git/wiki_spec.rb | 2 +- spec/lib/gitlab/git_access_spec.rb | 94 +- .../gitaly_client/commit_service_spec.rb | 8 +- .../gitaly_client/repository_service_spec.rb | 22 + .../importer/pull_requests_importer_spec.rb | 1 - .../importer/repository_importer_spec.rb | 4 +- .../github_import/parallel_importer_spec.rb | 4 +- .../gitlab_import/project_creator_spec.rb | 2 +- .../project_creator_spec.rb | 2 +- spec/lib/gitlab/import_export/all_models.yml | 6 +- .../import_export/safe_model_attributes.yml | 9 +- .../import_export/wiki_repo_saver_spec.rb | 2 +- .../import_export/wiki_restorer_spec.rb | 4 +- spec/lib/gitlab/incoming_email_spec.rb | 4 +- .../kubernetes/helm/base_command_spec.rb | 18 +- .../kubernetes/helm/init_command_spec.rb | 20 +- .../kubernetes/helm/install_command_spec.rb | 70 +- .../project_creator_spec.rb | 2 +- .../gitlab/metrics/web_transaction_spec.rb | 6 +- spec/lib/gitlab/pages_client_spec.rb | 172 + .../lib/gitlab/project_search_results_spec.rb | 6 +- spec/lib/gitlab/sentry_spec.rb | 44 +- spec/lib/gitlab/shell_spec.rb | 54 +- spec/lib/gitlab/usage_data_spec.rb | 1 + spec/lib/gitlab/utils_spec.rb | 11 +- spec/lib/gitlab/view/presenter/base_spec.rb | 7 + spec/lib/gitlab_spec.rb | 76 +- spec/lib/rspec_flaky/config_spec.rb | 30 +- .../flaky_examples_collection_spec.rb | 14 +- spec/lib/rspec_flaky/listener_spec.rb | 124 +- spec/lib/rspec_flaky/report_spec.rb | 125 + spec/mailers/notify_spec.rb | 32 - ...to_project_mirror_data_foreign_key_spec.rb | 18 + .../add_pipeline_build_foreign_key_spec.rb | 32 + ...mmits_count_for_merge_request_diff_spec.rb | 32 + .../cleanup_build_stage_migration_spec.rb | 53 + ...ssing_namespace_for_internal_users_spec.rb | 42 + ...om_projects_to_project_mirror_data_spec.rb | 56 + .../schedule_stages_index_migration_spec.rb | 35 + spec/models/active_session_spec.rb | 216 + spec/models/application_setting/term_spec.rb | 15 + spec/models/application_setting_spec.rb | 15 + spec/models/blob_viewer/readme_spec.rb | 2 +- spec/models/broadcast_message_spec.rb | 6 +- spec/models/ci/build_spec.rb | 97 +- spec/models/ci/build_trace_chunk_spec.rb | 396 ++ spec/models/ci/job_artifact_spec.rb | 56 +- spec/models/ci/pipeline_spec.rb | 2 +- spec/models/ci/runner_spec.rb | 268 +- spec/models/ci/stage_spec.rb | 34 +- .../clusters/applications/prometheus_spec.rb | 10 + .../clusters/applications/runner_spec.rb | 3 +- spec/models/commit_spec.rb | 5 + spec/models/commit_status_spec.rb | 38 + .../concerns/cache_markdown_field_spec.rb | 225 +- spec/models/concerns/group_descendant_spec.rb | 17 +- spec/models/concerns/sha_attribute_spec.rb | 69 +- spec/models/concerns/uniquify_spec.rb | 9 + spec/models/deploy_token_spec.rb | 19 + spec/models/deployment_spec.rb | 9 + spec/models/diff_note_spec.rb | 33 +- spec/models/generic_commit_status_spec.rb | 6 + spec/models/group_spec.rb | 89 + spec/models/issue_spec.rb | 63 + spec/models/members/group_member_spec.rb | 48 +- spec/models/members/project_member_spec.rb | 12 +- spec/models/merge_request_spec.rb | 26 +- spec/models/milestone_spec.rb | 32 +- spec/models/namespace_spec.rb | 24 +- spec/models/notification_setting_spec.rb | 7 +- spec/models/project_ci_cd_setting_spec.rb | 24 + spec/models/project_import_state_spec.rb | 13 + .../microsoft_teams_service_spec.rb | 2 +- spec/models/project_spec.rb | 292 +- spec/models/project_statistics_spec.rb | 80 +- spec/models/project_wiki_spec.rb | 21 +- spec/models/remote_mirror_spec.rb | 267 + spec/models/repository_spec.rb | 53 +- spec/models/term_agreement_spec.rb | 8 + spec/models/user_spec.rb | 50 +- spec/models/wiki_page_spec.rb | 4 +- .../application_setting/term_policy_spec.rb | 50 + spec/policies/global_policy_spec.rb | 92 + spec/policies/user_policy_spec.rb | 18 +- spec/presenters/ci/build_presenter_spec.rb | 37 +- .../commit_status_presenter_spec.rb | 15 + spec/presenters/project_presenter_spec.rb | 2 +- spec/requests/api/discussions_spec.rb | 33 +- spec/requests/api/helpers_spec.rb | 18 + spec/requests/api/jobs_spec.rb | 6 +- spec/requests/api/project_import_spec.rb | 5 +- spec/requests/api/projects_spec.rb | 51 +- spec/requests/api/runner_spec.rb | 81 +- spec/requests/api/runners_spec.rb | 155 +- spec/requests/api/search_spec.rb | 2 +- spec/requests/api/settings_spec.rb | 10 +- spec/requests/api/users_spec.rb | 12 + spec/requests/api/v3/builds_spec.rb | 4 +- spec/requests/api/version_spec.rb | 2 +- spec/requests/api/wikis_spec.rb | 34 +- spec/requests/git_http_spec.rb | 53 + spec/routing/admin_routing_spec.rb | 2 +- spec/routing/project_routing_spec.rb | 2 +- .../avoid_break_from_strong_memoize_spec.rb | 74 + .../cop/avoid_return_from_blocks_spec.rb | 127 + spec/serializers/entity_date_helper_spec.rb | 55 + spec/serializers/job_entity_spec.rb | 63 +- spec/serializers/pipeline_serializer_spec.rb | 2 +- .../update_service_spec.rb | 57 + .../applications/create_service_spec.rb | 14 +- .../ci/create_pipeline_service_spec.rb | 20 +- spec/services/ci/register_job_service_spec.rb | 204 +- spec/services/ci/retry_build_service_spec.rb | 6 +- .../ci/update_build_queue_service_spec.rb | 62 +- spec/services/git_push_service_spec.rb | 66 + spec/services/groups/destroy_service_spec.rb | 16 +- .../groups/nested_create_service_spec.rb | 7 +- .../common_system_notes_service_spec.rb | 28 - spec/services/labels/transfer_service_spec.rb | 10 + .../merge_requests/merge_service_spec.rb | 4 +- spec/services/notes/resolve_service_spec.rb | 23 + spec/services/notification_service_spec.rb | 113 +- .../create_from_template_service_spec.rb | 2 +- spec/services/projects/create_service_spec.rb | 5 +- .../services/projects/destroy_service_spec.rb | 29 +- spec/services/projects/fork_service_spec.rb | 2 +- .../migrate_repository_service_spec.rb | 14 +- .../projects/transfer_service_spec.rb | 6 +- .../projects/update_pages_service_spec.rb | 51 +- .../update_remote_mirror_service_spec.rb | 355 ++ spec/services/projects/update_service_spec.rb | 2 +- .../quick_actions/interpret_service_spec.rb | 76 + .../test_hooks/project_service_spec.rb | 1 + spec/services/users/destroy_service_spec.rb | 4 +- .../users/respond_to_terms_service_spec.rb | 37 + spec/services/web_hook_service_spec.rb | 2 +- .../wiki_pages/create_service_spec.rb | 2 +- spec/spec_helper.rb | 82 +- spec/support/capybara.rb | 29 +- spec/support/chunked_io/chunked_io_helpers.rb | 11 + ...ubish_import_controller_shared_examples.rb | 9 +- ...uth_callbacks_controller_shared_context.rb | 33 + spec/support/factory_bot.rb | 3 - spec/support/generate-seed-repo-rb | 2 +- spec/support/gitlab-git-test.git/README.md | 2 +- spec/support/{ => helpers}/api_helpers.rb | 0 .../{ => helpers}/bare_repo_operations.rb | 10 +- spec/support/{ => helpers}/board_helpers.rb | 0 .../support/{ => helpers}/capybara_helpers.rb | 4 - spec/support/{ => helpers}/cookie_helper.rb | 0 .../{ => helpers}/cycle_analytics_helpers.rb | 4 - .../database_connection_helpers.rb | 0 spec/support/{ => helpers}/devise_helpers.rb | 0 spec/support/{ => helpers}/drag_to_helper.rb | 0 spec/support/{ => helpers}/dropzone_helper.rb | 0 spec/support/{ => helpers}/email_helpers.rb | 0 .../{ => helpers}/fake_migration_classes.rb | 0 spec/support/{ => helpers}/fake_u2f_device.rb | 0 .../helpers/features/branches_helpers.rb | 33 + .../filter_item_select_helper.rb | 0 .../{ => helpers}/filter_spec_helper.rb | 0 .../{ => helpers}/filtered_search_helpers.rb | 0 spec/support/{ => helpers}/fixture_helpers.rb | 4 - .../support/{ => helpers}/git_http_helpers.rb | 0 spec/support/helpers/gitlab_verify_helpers.rb | 25 + spec/support/{ => helpers}/gpg_helpers.rb | 0 .../{ => helpers}/import_spec_helper.rb | 0 spec/support/{ => helpers}/input_helper.rb | 0 .../support/{ => helpers}/inspect_requests.rb | 0 spec/support/{ => helpers}/issue_helpers.rb | 0 .../javascript_fixtures_helpers.rb | 2 +- .../{ => helpers}/jira_service_helper.rb | 0 .../{ => helpers}/kubernetes_helpers.rb | 0 spec/support/{ => helpers}/ldap_helpers.rb | 4 + spec/support/{ => helpers}/live_debugger.rb | 0 spec/support/{ => helpers}/login_helpers.rb | 4 +- .../support/{ => helpers}/markdown_feature.rb | 0 .../{ => helpers}/merge_request_helpers.rb | 0 .../{ => helpers}/migrations_helpers.rb | 10 + spec/support/{ => helpers}/mobile_helpers.rb | 0 spec/support/helpers/notification_helpers.rb | 33 + .../{ => helpers}/project_forks_helper.rb | 0 .../{ => helpers}/prometheus_helpers.rb | 0 spec/support/helpers/query_recorder.rb | 38 + spec/support/helpers/quick_actions_helpers.rb | 10 + spec/support/{ => helpers}/rake_helpers.rb | 0 .../{ => helpers}/reactive_caching_helpers.rb | 0 .../{ => helpers}/redis_without_keys.rb | 0 .../{ => helpers}/reference_parser_helpers.rb | 0 spec/support/{ => helpers}/repo_helpers.rb | 0 spec/support/{ => helpers}/search_helpers.rb | 0 spec/support/{ => helpers}/seed_helper.rb | 10 +- spec/support/{ => helpers}/seed_repo.rb | 0 spec/support/{ => helpers}/select2_helper.rb | 0 .../support/{ => helpers}/selection_helper.rb | 0 spec/support/helpers/sorting_helper.rb | 18 + .../{ => helpers}/stub_configuration.rb | 3 + spec/support/{ => helpers}/stub_env.rb | 0 .../{ => helpers}/stub_feature_flags.rb | 0 .../{ => helpers}/stub_gitlab_calls.rb | 0 .../support/{ => helpers}/stub_gitlab_data.rb | 0 .../{ => helpers}/stub_object_storage.rb | 2 +- spec/support/helpers/terms_helper.rb | 19 + spec/support/{ => helpers}/test_env.rb | 11 +- spec/support/{ => helpers}/upload_helpers.rb | 0 .../{ => helpers}/user_activities_helpers.rb | 0 .../{ => helpers}/wait_for_requests.rb | 0 .../{ => helpers}/workhorse_helpers.rb | 0 ...issuables_list_metadata_shared_examples.rb | 46 - ...n_response_helpers.rb => json_response.rb} | 4 - .../background_migrations_matchers.rb | 0 .../exceed_query_limit.rb} | 39 - .../prepare-gitlab-git-test-for-commit | 2 +- spec/support/redis/redis_helpers.rb | 18 + spec/support/routing_helpers.rb | 3 - spec/support/rspec.rb | 12 + spec/support/seed.rb | 7 + ...e_to_ghost_user_service_shared_examples.rb | 2 +- .../shared_contexts}/email_shared_blocks.rb | 0 .../json_response_shared_context.rb | 3 + .../services_shared_context.rb | 0 .../chat_slash_commands_shared_examples.rb | 0 .../ci_trace_shared_examples.rb | 741 +++ .../common_system_notes_examples.rb | 27 + .../email_format_shared_examples.rb | 0 .../shared_examples/fast_destroy_all.rb | 38 + ...creatable_merge_request_shared_examples.rb | 4 +- ..._manages_access_requests_shared_example.rb | 52 + .../{ => shared_examples}/gitlab_verify.rb | 26 - .../group_members_shared_example.rb | 0 .../shared_examples/helm_generated_script.rb | 19 + .../issuable_shared_examples.rb | 0 ...issuables_list_metadata_shared_examples.rb | 62 + .../issue_tracker_service_shared_example.rb | 0 .../ldap_shared_examples.rb | 0 .../legacy_path_redirect_shared_examples.rb | 0 .../malicious_regexp_shared_examples.rb | 0 .../mentionable_shared_examples.rb | 0 .../milestone_tabs_examples.rb | 0 .../models/atomic_internal_id_spec.rb | 8 + .../members_notifications_shared_example.rb | 63 + .../notify_shared_examples.rb | 32 + .../reference_parser_shared_examples.rb | 0 .../requests/api/diff_discussions.rb | 57 + .../requests/api/resolvable_discussions.rb | 87 + ...attermost_notifications_shared_examples.rb | 2 +- .../snippet_visibility.rb | 0 .../snippets_shared_examples.rb | 0 .../taskable_shared_examples.rb | 0 .../time_tracking_shared_examples.rb | 0 .../unique_ip_check_shared_examples.rb | 0 .../update_invalid_issuable.rb | 0 .../updating_mentions_shared_examples.rb | 0 .../gitlab_uploader_shared_examples.rb | 2 +- spec/tasks/cache/clear/redis_spec.rb | 19 + spec/tasks/gitlab/backup_rake_spec.rb | 21 +- .../migrate_uploads_worker_spec.rb | 205 +- .../admin/dashboard/index.html.haml_spec.rb | 6 + spec/views/help/index.html.haml_spec.rb | 2 +- .../projects/imports/new.html.haml_spec.rb | 3 +- ....rb => _autodevops_form.html.haml_spec.rb} | 2 +- .../views/shared/milestones/_top.html.haml.rb | 35 + spec/workers/admin_email_worker_spec.rb | 41 + .../github_import/object_importer_spec.rb | 1 - spec/workers/concerns/waitable_worker_spec.rb | 6 + .../advance_stage_worker_spec.rb | 6 +- .../import_diff_note_worker_spec.rb | 1 - .../github_import/import_issue_worker_spec.rb | 1 - .../github_import/import_note_worker_spec.rb | 1 - .../import_pull_request_worker_spec.rb | 1 - .../refresh_import_jid_worker_spec.rb | 20 +- .../issue_due_scheduler_worker_spec.rb | 24 + .../mail_scheduler/issue_due_worker_spec.rb | 21 + .../notification_service_worker_spec.rb | 44 + ...mespaceless_project_destroy_worker_spec.rb | 15 +- .../repository_check/batch_worker_spec.rb | 4 +- .../single_repository_worker_spec.rb | 89 +- spec/workers/repository_import_worker_spec.rb | 8 +- .../repository_remove_remote_worker_spec.rb | 50 + ...sitory_update_remote_mirror_worker_spec.rb | 84 + spec/workers/stuck_import_jobs_worker_spec.rb | 12 +- .../javascripts/peek.performance_bar.js | 182 - vendor/gitignore/Global/JetBrains.gitignore | 3 +- vendor/gitignore/Global/Vim.gitignore | 2 + vendor/gitignore/Java.gitignore | 1 + vendor/gitignore/Objective-C.gitignore | 2 +- vendor/gitignore/Swift.gitignore | 2 +- vendor/gitignore/TeX.gitignore | 6 + vendor/gitignore/Unity.gitignore | 3 +- vendor/gitignore/VisualStudio.gitignore | 1 + .../gitlab-ci-yml/Auto-DevOps.gitlab-ci.yml | 193 +- vendor/gitlab-ci-yml/Maven.gitlab-ci.yml | 2 +- vendor/gitlab-ci-yml/Swift.gitlab-ci.yml | 16 +- vendor/ingress/values.yaml | 5 + vendor/licenses.csv | 396 +- vendor/project_templates/express.tar.gz | Bin 5614 -> 4866 bytes vendor/project_templates/rails.tar.gz | Bin 25007 -> 25151 bytes vendor/project_templates/spring.tar.gz | Bin 50945 -> 49430 bytes yarn.lock | 2409 +++++--- 1721 files changed, 45512 insertions(+), 20206 deletions(-) create mode 100644 .gitlab/issue_templates/Security Developer Workflow.md create mode 100644 app/assets/images/ext_snippet_icons/ext_snippet_icons.png create mode 100644 app/assets/images/ext_snippet_icons/logo.png rename app/assets/javascripts/boards/components/{board_blank_state.js => board_blank_state.vue} (61%) create mode 100644 app/assets/javascripts/clusters/components/gcp_signup_offer.js delete mode 100644 app/assets/javascripts/compare.js create mode 100644 app/assets/javascripts/ide/components/activity_bar.vue create mode 100644 app/assets/javascripts/ide/components/commit_sidebar/empty_state.vue create mode 100644 app/assets/javascripts/ide/components/commit_sidebar/form.vue create mode 100644 app/assets/javascripts/ide/components/commit_sidebar/message_field.vue create mode 100644 app/assets/javascripts/ide/components/commit_sidebar/stage_button.vue create mode 100644 app/assets/javascripts/ide/components/commit_sidebar/success_message.vue create mode 100644 app/assets/javascripts/ide/components/commit_sidebar/unstage_button.vue create mode 100644 app/assets/javascripts/ide/components/file_finder/index.vue create mode 100644 app/assets/javascripts/ide/components/file_finder/item.vue delete mode 100644 app/assets/javascripts/ide/components/ide_context_bar.vue delete mode 100644 app/assets/javascripts/ide/components/ide_external_links.vue delete mode 100644 app/assets/javascripts/ide/components/ide_project_branches_tree.vue delete mode 100644 app/assets/javascripts/ide/components/ide_project_tree.vue delete mode 100644 app/assets/javascripts/ide/components/ide_repo_tree.vue create mode 100644 app/assets/javascripts/ide/components/ide_review.vue create mode 100644 app/assets/javascripts/ide/components/ide_tree.vue create mode 100644 app/assets/javascripts/ide/components/ide_tree_list.vue create mode 100644 app/assets/javascripts/ide/constants.js create mode 100644 app/assets/javascripts/ide/lib/keymap.json create mode 100644 app/assets/javascripts/lib/utils/keycodes.js create mode 100644 app/assets/javascripts/pages/ide/index.js create mode 100644 app/assets/javascripts/pages/ldap/omniauth_callbacks/index.js create mode 100644 app/assets/javascripts/pages/projects/clusters/gcp/login/index.js create mode 100644 app/assets/javascripts/pages/projects/clusters/new/index.js create mode 100644 app/assets/javascripts/pages/projects/merge_requests/creations/new/compare.js create mode 100644 app/assets/javascripts/pages/projects/merge_requests/creations/new/target_project_dropdown.js delete mode 100644 app/assets/javascripts/pages/projects/shared/project_new.js create mode 100644 app/assets/javascripts/pages/projects/shared/save_project_loader.js delete mode 100644 app/assets/javascripts/performance_bar/components/upstream_performance_bar.vue delete mode 100644 app/assets/javascripts/pipelines/components/graph/dropdown_action_component.vue create mode 100644 app/assets/javascripts/pipelines/constants.js create mode 100644 app/assets/javascripts/shared/popover.js delete mode 100644 app/assets/javascripts/sidebar/components/time_tracking/estimate_only_pane.js create mode 100644 app/assets/javascripts/sidebar/components/time_tracking/estimate_only_pane.vue rename app/assets/javascripts/sidebar/components/time_tracking/{help_state.js => help_state.vue} (54%) delete mode 100644 app/assets/javascripts/sidebar/components/time_tracking/no_tracking_pane.js create mode 100644 app/assets/javascripts/sidebar/components/time_tracking/no_tracking_pane.vue rename app/assets/javascripts/sidebar/components/time_tracking/{sidebar_time_tracking.js => sidebar_time_tracking.vue} (78%) delete mode 100644 app/assets/javascripts/sidebar/components/time_tracking/spent_only_pane.js create mode 100644 app/assets/javascripts/sidebar/components/time_tracking/spent_only_pane.vue create mode 100644 app/assets/javascripts/snippet/snippet_embed.js delete mode 100644 app/assets/javascripts/visibility_select.js delete mode 100644 app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_pipeline_failed.js create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/states/pipeline_failed.vue rename app/assets/javascripts/vue_merge_request_widget/components/states/{mr_widget_ready_to_merge.js => ready_to_merge.vue} (62%) rename app/assets/javascripts/vue_merge_request_widget/components/states/{mr_widget_wip.js => work_in_progress.vue} (50%) create mode 100644 app/assets/javascripts/vue_shared/components/callout.vue create mode 100644 app/assets/stylesheets/emoji_sprites.scss delete mode 100644 app/assets/stylesheets/framework/emoji_sprites.scss create mode 100644 app/assets/stylesheets/framework/terms.scss create mode 100644 app/assets/stylesheets/highlight/embedded.scss create mode 100644 app/assets/stylesheets/highlight/white_base.scss delete mode 100644 app/assets/stylesheets/pages/repo.scss.orig create mode 100644 app/assets/stylesheets/snippets.scss create mode 100644 app/controllers/concerns/internal_redirect.rb create mode 100644 app/controllers/groups/runners_controller.rb create mode 100644 app/controllers/ldap/omniauth_callbacks_controller.rb create mode 100644 app/controllers/profiles/active_sessions_controller.rb create mode 100644 app/controllers/projects/mirrors_controller.rb create mode 100644 app/controllers/users/terms_controller.rb create mode 100644 app/helpers/active_sessions_helper.rb create mode 100644 app/helpers/count_helper.rb create mode 100644 app/models/active_session.rb create mode 100644 app/models/application_setting/term.rb create mode 100644 app/models/ci/build_trace_chunk.rb create mode 100644 app/models/ci/runner_namespace.rb create mode 100644 app/models/concerns/fast_destroy_all.rb delete mode 100644 app/models/concerns/nonatomic_internal_id.rb create mode 100644 app/models/project_ci_cd_setting.rb create mode 100644 app/models/project_import_state.rb create mode 100644 app/models/remote_mirror.rb create mode 100644 app/models/term_agreement.rb create mode 100644 app/policies/application_setting/term_policy.rb create mode 100644 app/presenters/commit_status_presenter.rb create mode 100644 app/presenters/generic_commit_status_presenter.rb create mode 100644 app/serializers/project_mirror_entity.rb create mode 100644 app/serializers/stage_serializer.rb create mode 100644 app/services/concerns/exclusive_lease_guard.rb create mode 100644 app/services/concerns/users/participable_service.rb create mode 100644 app/services/notes/resolve_service.rb create mode 100644 app/services/projects/update_remote_mirror_service.rb create mode 100644 app/services/users/respond_to_terms_service.rb create mode 100644 app/views/admin/application_settings/_repository_mirrors_form.html.haml create mode 100644 app/views/admin/application_settings/_terms.html.haml create mode 100644 app/views/groups/runners/_group_runners.html.haml create mode 100644 app/views/groups/runners/_index.html.haml create mode 100644 app/views/groups/runners/_runner.html.haml create mode 100644 app/views/groups/runners/edit.html.haml create mode 100644 app/views/layouts/header/_current_user_dropdown.html.haml create mode 100644 app/views/layouts/terms.html.haml create mode 100644 app/views/notify/issue_due_email.html.haml create mode 100644 app/views/notify/issue_due_email.text.erb create mode 100644 app/views/profiles/active_sessions/_active_session.html.haml create mode 100644 app/views/profiles/active_sessions/index.html.haml create mode 100644 app/views/projects/_import_project_pane.html.haml delete mode 100644 app/views/projects/_visibility_select.html.haml create mode 100644 app/views/projects/blob/viewers/_highlight_embed.html.haml create mode 100644 app/views/projects/clusters/_gcp_signup_offer_banner.html.haml mode change 100644 => 100755 app/views/projects/forks/new.html.haml create mode 100644 app/views/projects/mirrors/_instructions.html.haml create mode 100644 app/views/projects/mirrors/_push.html.haml create mode 100644 app/views/projects/mirrors/_show.html.haml create mode 100644 app/views/projects/runners/_group_runners.html.haml create mode 100644 app/views/projects/settings/ci_cd/_autodevops_form.html.haml create mode 100644 app/views/shared/_remote_mirror_update_button.html.haml create mode 100644 app/views/shared/milestones/_deprecation_message.html.haml rename app/views/{projects => shared}/runners/_form.html.haml (87%) create mode 100644 app/views/shared/runners/_runner_description.html.haml rename app/views/{projects => shared}/runners/show.html.haml (86%) create mode 100644 app/views/shared/snippets/_embed.html.haml create mode 100644 app/views/shared/snippets/show.js.haml create mode 100644 app/views/users/terms/index.html.haml create mode 100644 app/workers/ci/build_trace_chunk_flush_worker.rb create mode 100644 app/workers/concerns/mail_scheduler_queue.rb create mode 100644 app/workers/issue_due_scheduler_worker.rb create mode 100644 app/workers/mail_scheduler/issue_due_worker.rb create mode 100644 app/workers/mail_scheduler/notification_service_worker.rb create mode 100644 app/workers/repository_remove_remote_worker.rb create mode 100644 app/workers/repository_update_remote_mirror_worker.rb create mode 100755 bin/secpick create mode 100644 changelogs/no-rm-rf-gitlab-basics.yml delete mode 100644 config/initializers/2_app.rb create mode 100644 config/initializers/2_gitlab.rb create mode 100644 config/initializers/active_record_avoid_type_casting_in_uniqueness_validator.rb create mode 100644 config/initializers/console_message.rb create mode 100644 config/initializers/deprecations.rb create mode 100644 config/initializers/pages.rb create mode 100644 config/settings.rb create mode 100644 db/migrate/20170301101006_add_ci_runner_namespaces.rb create mode 100644 db/migrate/20170906133745_add_runners_token_to_groups.rb create mode 100644 db/migrate/20180326202229_create_ci_build_trace_chunks.rb create mode 100644 db/migrate/20180330121048_add_issue_due_to_notification_settings.rb create mode 100644 db/migrate/20180403035759_create_project_ci_cd_settings.rb create mode 100644 db/migrate/20180406204716_add_limits_ci_build_trace_chunks_raw_data_for_mysql.rb create mode 100644 db/migrate/20180413022611_create_missing_namespace_for_internal_users.rb create mode 100644 db/migrate/20180416155103_add_further_scope_columns_to_internal_id_table.rb create mode 100644 db/migrate/20180417090132_add_index_constraints_to_internal_id_table.rb create mode 100644 db/migrate/20180417101040_add_tmp_stage_priority_index_to_ci_builds.rb create mode 100644 db/migrate/20180417101940_add_index_to_ci_stage.rb create mode 100644 db/migrate/20180420010016_add_pipeline_build_foreign_key.rb create mode 100644 db/migrate/20180420010616_cleanup_build_stage_migration.rb create mode 100644 db/migrate/20180424090541_add_enforce_terms_to_application_settings.rb create mode 100644 db/migrate/20180424134533_create_application_setting_terms.rb create mode 100644 db/migrate/20180425075446_create_term_agreements.rb create mode 100644 db/migrate/20180425131009_assure_commits_count_for_merge_request_diff.rb create mode 100644 db/migrate/20180426102016_add_accepted_term_to_users.rb create mode 100644 db/migrate/20180430101916_add_runner_type_to_ci_runners.rb create mode 100644 db/migrate/20180502122856_create_project_mirror_data.rb create mode 100644 db/migrate/20180503131624_create_remote_mirrors.rb create mode 100644 db/migrate/20180503141722_add_remote_mirror_available_overridden_to_projects.rb create mode 100644 db/migrate/20180503150427_add_index_to_namespaces_runners_token.rb create mode 100644 db/migrate/20180503175053_ensure_missing_columns_to_project_mirror_data.rb create mode 100644 db/migrate/20180503175054_add_indexes_to_project_mirror_data.rb create mode 100644 db/migrate/20180503193542_add_indexes_to_remote_mirror.rb create mode 100644 db/migrate/20180503193953_add_mirror_available_to_application_settings.rb create mode 100644 db/migrate/20180503200320_enable_prometheus_metrics_by_default.rb create mode 100644 db/migrate/20180508055821_make_remote_mirrors_disabled_by_default.rb create mode 100644 db/migrate/20180508100222_add_not_null_constraint_to_project_mirror_data_foreign_key.rb create mode 100644 db/migrate/20180508102840_add_unique_constraint_to_project_mirror_data_project_id_index.rb create mode 100644 db/migrate/20180529093006_ensure_remote_mirror_columns.rb create mode 100644 db/migrate/limits_ci_build_trace_chunks_raw_data_for_mysql.rb create mode 100644 db/post_migrate/20180409170809_populate_missing_project_ci_cd_settings.rb create mode 100644 db/post_migrate/20180420080616_schedule_stages_index_migration.rb create mode 100644 db/post_migrate/20180430143705_backfill_runner_type_for_ci_runners_post_migrate.rb create mode 100644 db/post_migrate/20180502134117_migrate_import_attributes_data_from_projects_to_project_mirror_data.rb create mode 100644 doc/development/diffs.md create mode 100644 doc/development/fe_guide/development_process.md create mode 100644 doc/development/fe_guide/vuex.md delete mode 100644 doc/development/img/state-model-issue.png delete mode 100644 doc/development/img/state-model-legend.png delete mode 100644 doc/development/img/state-model-merge-request.png delete mode 100644 doc/development/object_state_models.md create mode 100644 doc/security/img/outbound_requests_section.png create mode 100644 doc/topics/autodevops/img/rollout_enabled.png create mode 100644 doc/topics/autodevops/img/rollout_staging_disabled.png create mode 100644 doc/topics/autodevops/img/rollout_staging_enabled.png create mode 100644 doc/topics/autodevops/img/staging_enabled.png create mode 100644 doc/update/10.7-to-10.8.md create mode 100755 doc/user/admin_area/settings/img/enforce_terms.png create mode 100755 doc/user/admin_area/settings/img/respond_to_terms.png create mode 100644 doc/user/admin_area/settings/terms.md create mode 100644 doc/user/profile/active_sessions.md create mode 100644 doc/user/profile/img/active_sessions_list.png rename doc/user/project/pages/img/{remove_fork_relashionship.png => remove_fork_relationship.png} (100%) create mode 100644 doc/workflow/repository_mirroring.md create mode 100644 doc/workflow/repository_mirroring/repository_mirroring_diverged_branch_push.png create mode 100644 doc/workflow/repository_mirroring/repository_mirroring_github_edit_personal_access_token.png create mode 100644 doc/workflow/repository_mirroring/repository_mirroring_gitlab_push_to_a_remote_repository.png create mode 100644 doc/workflow/repository_mirroring/repository_mirroring_gitlab_push_to_a_remote_repository_update_now.png create mode 100644 doc/workflow/repository_mirroring/repository_mirroring_push_settings.png create mode 100644 ee/app/controllers/ee/ldap/omniauth_callbacks_controller.rb create mode 100644 ee/spec/controllers/ldap/omniauth_callbacks_controller_spec.rb delete mode 100644 features/project/builds/artifacts.feature delete mode 100644 features/project/builds/permissions.feature delete mode 100644 features/project/commits/branches.feature delete mode 100644 features/project/commits/comments.feature delete mode 100644 features/project/commits/commits.feature delete mode 100644 features/project/find_file.feature delete mode 100644 features/project/issues/milestones.feature delete mode 100644 features/project/project.feature delete mode 100644 features/project/source/markdown_render.feature delete mode 100644 features/steps/project/builds/artifacts.rb delete mode 100644 features/steps/project/builds/permissions.rb delete mode 100644 features/steps/project/commits/commits.rb delete mode 100644 features/steps/project/project.rb delete mode 100644 features/steps/project/project_find_file.rb delete mode 100644 features/steps/project/source/markdown_render.rb delete mode 100644 features/steps/shared/builds.rb create mode 100644 lib/gitlab/auth/o_auth/identity_linker.rb create mode 100644 lib/gitlab/auth/omniauth_identity_linker_base.rb create mode 100644 lib/gitlab/auth/saml/identity_linker.rb create mode 100644 lib/gitlab/auth/user_access_denied_reason.rb create mode 100644 lib/gitlab/background_migration/migrate_stage_index.rb create mode 100644 lib/gitlab/background_migration/populate_import_state.rb create mode 100644 lib/gitlab/background_migration/rollback_import_state_data.rb create mode 100644 lib/gitlab/build_access.rb create mode 100644 lib/gitlab/ci/trace/chunked_io.rb create mode 100644 lib/gitlab/database/arel_methods.rb create mode 100644 lib/gitlab/database/count.rb create mode 100644 lib/gitlab/git/committer_with_hooks.rb delete mode 100644 lib/gitlab/git/info_attributes.rb create mode 100644 lib/gitlab/git/raw_diff_change.rb create mode 100755 lib/gitlab/git/support/format-git-cat-file-input create mode 100644 lib/gitlab/pages_client.rb rename lib/gitlab/{middleware/webpack_proxy.rb => webpack/dev_server_middleware.rb} (91%) create mode 100644 lib/gitlab/webpack/manifest.rb create mode 100644 lib/rspec_flaky/report.rb create mode 100644 lib/tasks/gitlab/pages.rake create mode 100644 qa/qa/factory/resource/branch.rb create mode 100644 qa/qa/page/project/settings/protected_branches.rb create mode 100644 qa/qa/runtime/key/base.rb create mode 100644 qa/qa/runtime/key/ecdsa.rb create mode 100644 qa/qa/runtime/key/ed25519.rb create mode 100644 qa/qa/runtime/key/rsa.rb delete mode 100644 qa/qa/runtime/rsa_key.rb create mode 100644 qa/qa/specs/features/repository/protected_branches_spec.rb create mode 100644 qa/spec/runtime/key/ecdsa_spec.rb create mode 100644 qa/spec/runtime/key/ed25519_spec.rb rename qa/spec/runtime/{rsa_key.rb => key/rsa_spec.rb} (82%) create mode 100644 rubocop/cop/avoid_break_from_strong_memoize.rb create mode 100644 rubocop/cop/avoid_return_from_blocks.rb create mode 100644 scripts/gitaly_test.rb create mode 100755 scripts/prune-old-flaky-specs create mode 100644 spec/controllers/concerns/continue_params_spec.rb create mode 100644 spec/controllers/concerns/internal_redirect_spec.rb create mode 100644 spec/controllers/groups/runners_controller_spec.rb create mode 100644 spec/controllers/ldap/omniauth_callbacks_controller_spec.rb create mode 100644 spec/controllers/projects/mirrors_controller_spec.rb create mode 100644 spec/controllers/users/terms_controller_spec.rb create mode 100644 spec/factories/ci/build_trace_chunks.rb create mode 100644 spec/factories/import_state.rb create mode 100644 spec/factories/remote_mirrors.rb create mode 100644 spec/factories/term_agreements.rb create mode 100644 spec/factories/terms.rb create mode 100644 spec/fast_spec_helper.rb delete mode 100644 spec/features/groups/members/manage_access_requests_spec.rb create mode 100644 spec/features/groups/members/master_manages_access_requests_spec.rb delete mode 100644 spec/features/milestones/show_spec.rb create mode 100644 spec/features/milestones/user_creates_milestone_spec.rb create mode 100644 spec/features/milestones/user_deletes_milestone_spec.rb create mode 100644 spec/features/milestones/user_views_milestone_spec.rb create mode 100644 spec/features/milestones/user_views_milestones_spec.rb create mode 100644 spec/features/profiles/active_sessions_spec.rb create mode 100644 spec/features/projects/activity/user_sees_activity_spec.rb delete mode 100644 spec/features/projects/artifacts/browse_spec.rb delete mode 100644 spec/features/projects/artifacts/download_spec.rb create mode 100644 spec/features/projects/artifacts/user_browses_artifacts_spec.rb create mode 100644 spec/features/projects/artifacts/user_downloads_artifacts_spec.rb create mode 100644 spec/features/projects/branches/user_creates_branch_spec.rb create mode 100644 spec/features/projects/branches/user_deletes_branch_spec.rb create mode 100644 spec/features/projects/branches/user_views_branches_spec.rb create mode 100644 spec/features/projects/commit/user_comments_on_commit_spec.rb delete mode 100644 spec/features/projects/edit_spec.rb delete mode 100644 spec/features/projects/files/browse_files_spec.rb delete mode 100644 spec/features/projects/files/creating_a_file_spec.rb create mode 100644 spec/features/projects/files/template_selector_menu_spec.rb rename spec/features/projects/{ => files}/user_browses_a_tree_with_a_folder_containing_only_a_folder.rb (83%) create mode 100644 spec/features/projects/files/user_browses_files_spec.rb create mode 100644 spec/features/projects/files/user_browses_lfs_files_spec.rb rename spec/features/projects/{ => files}/user_creates_directory_spec.rb (97%) rename spec/features/projects/{ => files}/user_creates_files_spec.rb (84%) rename spec/features/projects/{ => files}/user_deletes_files_spec.rb (97%) rename spec/features/projects/{ => files}/user_edits_files_spec.rb (99%) create mode 100644 spec/features/projects/files/user_find_file_spec.rb create mode 100644 spec/features/projects/files/user_reads_pipeline_status_spec.rb rename spec/features/projects/{ => files}/user_replaces_files_spec.rb (98%) rename spec/features/projects/{ => files}/user_uploads_files_spec.rb (76%) delete mode 100644 spec/features/projects/guest_navigation_menu_spec.rb create mode 100644 spec/features/projects/jobs/permissions_spec.rb delete mode 100644 spec/features/projects/project_settings_spec.rb create mode 100644 spec/features/projects/remote_mirror_spec.rb create mode 100644 spec/features/projects/settings/lfs_settings_spec.rb rename spec/features/projects/{ => settings}/user_archives_project_spec.rb (81%) create mode 100644 spec/features/projects/settings/user_changes_avatar_spec.rb create mode 100644 spec/features/projects/settings/user_changes_default_branch_spec.rb rename spec/features/projects/settings/{merge_requests_settings_spec.rb => user_manages_merge_requests_settings_spec.rb} (72%) create mode 100644 spec/features/projects/settings/user_renames_a_project_spec.rb create mode 100644 spec/features/projects/settings/user_tags_project_spec.rb create mode 100644 spec/features/projects/settings/user_transfers_a_project_spec.rb rename spec/features/projects/{ => show}/developer_views_empty_project_instructions_spec.rb (94%) rename spec/features/projects/{main => show}/download_buttons_spec.rb (96%) rename spec/features/projects/{ => show}/no_password_spec.rb (100%) rename spec/features/projects/{ => show}/redirects_spec.rb (97%) rename spec/features/projects/{main => show}/rss_spec.rb (94%) rename spec/features/projects/{ => show}/user_interacts_with_stars_spec.rb (92%) create mode 100644 spec/features/projects/show/user_manages_notifications_spec.rb create mode 100644 spec/features/projects/show/user_sees_deletion_failure_message_spec.rb rename spec/features/projects/{user_views_details_spec.rb => show/user_sees_git_instructions_spec.rb} (85%) create mode 100644 spec/features/projects/show/user_sees_last_commit_ci_status_spec.rb create mode 100644 spec/features/projects/show/user_sees_readme_spec.rb create mode 100644 spec/features/projects/show/user_sees_setup_shortcut_buttons_spec.rb delete mode 100644 spec/features/projects/show_project_spec.rb delete mode 100644 spec/features/projects/snippets_spec.rb delete mode 100644 spec/features/projects/user_browses_files_spec.rb create mode 100644 spec/features/projects/user_sees_sidebar_spec.rb delete mode 100644 spec/features/projects/user_transfers_a_project_spec.rb create mode 100644 spec/features/snippets/embedded_snippet_spec.rb create mode 100644 spec/features/users/active_sessions_spec.rb create mode 100644 spec/features/users/terms_spec.rb create mode 100644 spec/fixtures/api/schemas/ci_detailed_status.json create mode 100644 spec/fixtures/api/schemas/job.json create mode 100644 spec/fixtures/api/schemas/pipeline_stage.json create mode 100644 spec/helpers/snippets_helper_spec.rb create mode 100644 spec/javascripts/branches/branches_delete_modal_spec.js delete mode 100644 spec/javascripts/fixtures/graph.html.haml create mode 100644 spec/javascripts/ide/components/activity_bar_spec.js create mode 100644 spec/javascripts/ide/components/commit_sidebar/empty_state_spec.js create mode 100644 spec/javascripts/ide/components/commit_sidebar/form_spec.js create mode 100644 spec/javascripts/ide/components/commit_sidebar/message_field_spec.js create mode 100644 spec/javascripts/ide/components/commit_sidebar/stage_button_spec.js create mode 100644 spec/javascripts/ide/components/commit_sidebar/success_message_spec.js create mode 100644 spec/javascripts/ide/components/commit_sidebar/unstage_button_spec.js create mode 100644 spec/javascripts/ide/components/file_finder/index_spec.js create mode 100644 spec/javascripts/ide/components/file_finder/item_spec.js delete mode 100644 spec/javascripts/ide/components/ide_context_bar_spec.js delete mode 100644 spec/javascripts/ide/components/ide_external_links_spec.js delete mode 100644 spec/javascripts/ide/components/ide_project_tree_spec.js delete mode 100644 spec/javascripts/ide/components/ide_repo_tree_spec.js create mode 100644 spec/javascripts/ide/components/ide_review_spec.js create mode 100644 spec/javascripts/ide/components/ide_status_bar_spec.js create mode 100644 spec/javascripts/ide/components/ide_tree_list_spec.js create mode 100644 spec/javascripts/ide/components/ide_tree_spec.js create mode 100644 spec/javascripts/ide/mock_data.js create mode 100644 spec/javascripts/ide/stores/actions/project_spec.js delete mode 100644 spec/javascripts/pipelines/graph/dropdown_action_component_spec.js create mode 100644 spec/javascripts/pipelines/graph/dropdown_job_component_spec.js create mode 100644 spec/javascripts/pipelines/mock_data.js create mode 100644 spec/javascripts/shared/popover_spec.js create mode 100644 spec/javascripts/shortcuts_dashboard_navigation_spec.js delete mode 100644 spec/javascripts/visibility_select_spec.js create mode 100644 spec/javascripts/vue_shared/components/callout_spec.js create mode 100644 spec/lib/gitlab/auth/o_auth/identity_linker_spec.rb create mode 100644 spec/lib/gitlab/auth/saml/identity_linker_spec.rb create mode 100644 spec/lib/gitlab/auth/user_access_denied_reason_spec.rb create mode 100644 spec/lib/gitlab/background_migration/migrate_stage_index_spec.rb create mode 100644 spec/lib/gitlab/background_migration/populate_import_state_spec.rb create mode 100644 spec/lib/gitlab/background_migration/rollback_import_state_data_spec.rb create mode 100644 spec/lib/gitlab/build_access_spec.rb create mode 100644 spec/lib/gitlab/ci/trace/chunked_io_spec.rb create mode 100644 spec/lib/gitlab/database/count_spec.rb create mode 100644 spec/lib/gitlab/git/committer_with_hooks_spec.rb delete mode 100644 spec/lib/gitlab/git/info_attributes_spec.rb create mode 100644 spec/lib/gitlab/git/raw_diff_change_spec.rb create mode 100644 spec/lib/gitlab/pages_client_spec.rb create mode 100644 spec/lib/rspec_flaky/report_spec.rb create mode 100644 spec/migrations/add_not_null_constraint_to_project_mirror_data_foreign_key_spec.rb create mode 100644 spec/migrations/add_pipeline_build_foreign_key_spec.rb create mode 100644 spec/migrations/assure_commits_count_for_merge_request_diff_spec.rb create mode 100644 spec/migrations/cleanup_build_stage_migration_spec.rb create mode 100644 spec/migrations/create_missing_namespace_for_internal_users_spec.rb create mode 100644 spec/migrations/migrate_import_attributes_data_from_projects_to_project_mirror_data_spec.rb create mode 100644 spec/migrations/schedule_stages_index_migration_spec.rb create mode 100644 spec/models/active_session_spec.rb create mode 100644 spec/models/application_setting/term_spec.rb create mode 100644 spec/models/ci/build_trace_chunk_spec.rb create mode 100644 spec/models/project_ci_cd_setting_spec.rb create mode 100644 spec/models/project_import_state_spec.rb create mode 100644 spec/models/remote_mirror_spec.rb create mode 100644 spec/models/term_agreement_spec.rb create mode 100644 spec/policies/application_setting/term_policy_spec.rb create mode 100644 spec/presenters/commit_status_presenter_spec.rb create mode 100644 spec/rubocop/cop/avoid_break_from_strong_memoize_spec.rb create mode 100644 spec/rubocop/cop/avoid_return_from_blocks_spec.rb create mode 100644 spec/services/application_settings/update_service_spec.rb create mode 100644 spec/services/notes/resolve_service_spec.rb create mode 100644 spec/services/projects/update_remote_mirror_service_spec.rb create mode 100644 spec/services/users/respond_to_terms_service_spec.rb create mode 100644 spec/support/chunked_io/chunked_io_helpers.rb create mode 100644 spec/support/controllers/ldap_omniauth_callbacks_controller_shared_context.rb delete mode 100644 spec/support/factory_bot.rb rename spec/support/{ => helpers}/api_helpers.rb (100%) rename spec/support/{ => helpers}/bare_repo_operations.rb (76%) rename spec/support/{ => helpers}/board_helpers.rb (100%) rename spec/support/{ => helpers}/capybara_helpers.rb (93%) rename spec/support/{ => helpers}/cookie_helper.rb (100%) rename spec/support/{ => helpers}/cycle_analytics_helpers.rb (98%) rename spec/support/{ => helpers}/database_connection_helpers.rb (100%) rename spec/support/{ => helpers}/devise_helpers.rb (100%) rename spec/support/{ => helpers}/drag_to_helper.rb (100%) rename spec/support/{ => helpers}/dropzone_helper.rb (100%) rename spec/support/{ => helpers}/email_helpers.rb (100%) rename spec/support/{ => helpers}/fake_migration_classes.rb (100%) rename spec/support/{ => helpers}/fake_u2f_device.rb (100%) create mode 100644 spec/support/helpers/features/branches_helpers.rb rename spec/support/{ => helpers}/filter_item_select_helper.rb (100%) rename spec/support/{ => helpers}/filter_spec_helper.rb (100%) rename spec/support/{ => helpers}/filtered_search_helpers.rb (100%) rename spec/support/{ => helpers}/fixture_helpers.rb (81%) rename spec/support/{ => helpers}/git_http_helpers.rb (100%) create mode 100644 spec/support/helpers/gitlab_verify_helpers.rb rename spec/support/{ => helpers}/gpg_helpers.rb (100%) rename spec/support/{ => helpers}/import_spec_helper.rb (100%) rename spec/support/{ => helpers}/input_helper.rb (100%) rename spec/support/{ => helpers}/inspect_requests.rb (100%) rename spec/support/{ => helpers}/issue_helpers.rb (100%) rename spec/support/{ => helpers}/javascript_fixtures_helpers.rb (98%) rename spec/support/{ => helpers}/jira_service_helper.rb (100%) rename spec/support/{ => helpers}/kubernetes_helpers.rb (100%) rename spec/support/{ => helpers}/ldap_helpers.rb (93%) rename spec/support/{ => helpers}/live_debugger.rb (100%) rename spec/support/{ => helpers}/login_helpers.rb (97%) rename spec/support/{ => helpers}/markdown_feature.rb (100%) rename spec/support/{ => helpers}/merge_request_helpers.rb (100%) rename spec/support/{ => helpers}/migrations_helpers.rb (89%) rename spec/support/{ => helpers}/mobile_helpers.rb (100%) create mode 100644 spec/support/helpers/notification_helpers.rb rename spec/support/{ => helpers}/project_forks_helper.rb (100%) rename spec/support/{ => helpers}/prometheus_helpers.rb (100%) create mode 100644 spec/support/helpers/query_recorder.rb create mode 100644 spec/support/helpers/quick_actions_helpers.rb rename spec/support/{ => helpers}/rake_helpers.rb (100%) rename spec/support/{ => helpers}/reactive_caching_helpers.rb (100%) rename spec/support/{ => helpers}/redis_without_keys.rb (100%) rename spec/support/{ => helpers}/reference_parser_helpers.rb (100%) rename spec/support/{ => helpers}/repo_helpers.rb (100%) rename spec/support/{ => helpers}/search_helpers.rb (100%) rename spec/support/{ => helpers}/seed_helper.rb (95%) rename spec/support/{ => helpers}/seed_repo.rb (100%) rename spec/support/{ => helpers}/select2_helper.rb (100%) rename spec/support/{ => helpers}/selection_helper.rb (100%) create mode 100644 spec/support/helpers/sorting_helper.rb rename spec/support/{ => helpers}/stub_configuration.rb (96%) rename spec/support/{ => helpers}/stub_env.rb (100%) rename spec/support/{ => helpers}/stub_feature_flags.rb (100%) rename spec/support/{ => helpers}/stub_gitlab_calls.rb (100%) rename spec/support/{ => helpers}/stub_gitlab_data.rb (100%) rename spec/support/{ => helpers}/stub_object_storage.rb (98%) create mode 100644 spec/support/helpers/terms_helper.rb rename spec/support/{ => helpers}/test_env.rb (97%) rename spec/support/{ => helpers}/upload_helpers.rb (100%) rename spec/support/{ => helpers}/user_activities_helpers.rb (100%) rename spec/support/{ => helpers}/wait_for_requests.rb (100%) rename spec/support/{ => helpers}/workhorse_helpers.rb (100%) delete mode 100644 spec/support/issuables_list_metadata_shared_examples.rb rename spec/support/{json_response_helpers.rb => json_response.rb} (66%) rename spec/support/{ => matchers}/background_migrations_matchers.rb (100%) rename spec/support/{query_recorder.rb => matchers/exceed_query_limit.rb} (65%) create mode 100644 spec/support/redis/redis_helpers.rb delete mode 100644 spec/support/routing_helpers.rb create mode 100644 spec/support/rspec.rb create mode 100644 spec/support/seed.rb rename spec/{lib/gitlab/email => support/shared_contexts}/email_shared_blocks.rb (100%) create mode 100644 spec/support/shared_contexts/json_response_shared_context.rb rename spec/support/{ => shared_contexts}/services_shared_context.rb (100%) rename spec/support/{ => shared_examples}/chat_slash_commands_shared_examples.rb (100%) create mode 100644 spec/support/shared_examples/ci_trace_shared_examples.rb create mode 100644 spec/support/shared_examples/common_system_notes_examples.rb rename spec/support/{ => shared_examples}/email_format_shared_examples.rb (100%) create mode 100644 spec/support/shared_examples/fast_destroy_all.rb create mode 100644 spec/support/shared_examples/features/master_manages_access_requests_shared_example.rb rename spec/support/{ => shared_examples}/gitlab_verify.rb (59%) rename spec/support/{ => shared_examples}/group_members_shared_example.rb (100%) create mode 100644 spec/support/shared_examples/helm_generated_script.rb rename spec/support/{ => shared_examples}/issuable_shared_examples.rb (100%) create mode 100644 spec/support/shared_examples/issuables_list_metadata_shared_examples.rb rename spec/support/{ => shared_examples}/issue_tracker_service_shared_example.rb (100%) rename spec/support/{ => shared_examples}/ldap_shared_examples.rb (100%) rename spec/support/{ => shared_examples}/legacy_path_redirect_shared_examples.rb (100%) rename spec/support/{ => shared_examples}/malicious_regexp_shared_examples.rb (100%) rename spec/support/{ => shared_examples}/mentionable_shared_examples.rb (100%) rename spec/support/{ => shared_examples}/milestone_tabs_examples.rb (100%) create mode 100644 spec/support/shared_examples/models/members_notifications_shared_example.rb rename spec/support/{ => shared_examples}/notify_shared_examples.rb (89%) rename spec/support/{ => shared_examples}/reference_parser_shared_examples.rb (100%) create mode 100644 spec/support/shared_examples/requests/api/diff_discussions.rb create mode 100644 spec/support/shared_examples/requests/api/resolvable_discussions.rb rename spec/support/{ => shared_examples}/slack_mattermost_notifications_shared_examples.rb (99%) rename spec/support/{ => shared_examples}/snippet_visibility.rb (100%) rename spec/support/{ => shared_examples}/snippets_shared_examples.rb (100%) rename spec/support/{ => shared_examples}/taskable_shared_examples.rb (100%) rename spec/support/{ => shared_examples}/time_tracking_shared_examples.rb (100%) rename spec/support/{ => shared_examples}/unique_ip_check_shared_examples.rb (100%) rename spec/support/{ => shared_examples}/update_invalid_issuable.rb (100%) rename spec/support/{ => shared_examples}/updating_mentions_shared_examples.rb (100%) create mode 100644 spec/tasks/cache/clear/redis_spec.rb rename spec/views/projects/settings/ci_cd/{_form.html.haml_spec.rb => _autodevops_form.html.haml_spec.rb} (96%) create mode 100644 spec/views/shared/milestones/_top.html.haml.rb create mode 100644 spec/workers/admin_email_worker_spec.rb create mode 100644 spec/workers/issue_due_scheduler_worker_spec.rb create mode 100644 spec/workers/mail_scheduler/issue_due_worker_spec.rb create mode 100644 spec/workers/mail_scheduler/notification_service_worker_spec.rb create mode 100644 spec/workers/repository_remove_remote_worker_spec.rb create mode 100644 spec/workers/repository_update_remote_mirror_worker_spec.rb delete mode 100644 vendor/assets/javascripts/peek.performance_bar.js diff --git a/.babelrc b/.babelrc index 8cf07b7342..50d85f58d6 100644 --- a/.babelrc +++ b/.babelrc @@ -1,6 +1,9 @@ { "presets": [["latest", { "es2015": { "modules": false } }], "stage-2"], "env": { + "karma": { + "plugins": ["rewire"] + }, "coverage": { "plugins": [ [ @@ -14,7 +17,8 @@ { "process.env.BABEL_ENV": "coverage" } - ] + ], + "rewire" ] } } diff --git a/.flayignore b/.flayignore index 3d69bb2c98..0c4eee10ff 100644 --- a/.flayignore +++ b/.flayignore @@ -9,3 +9,4 @@ lib/gitlab/gitaly_client/operation_service.rb lib/gitlab/background_migration/* app/models/project_services/kubernetes_service.rb lib/gitlab/workhorse.rb +lib/gitlab/ci/trace/chunked_io.rb diff --git a/.gitignore b/.gitignore index e9ff0048c1..51b77d5ac9 100644 --- a/.gitignore +++ b/.gitignore @@ -64,11 +64,15 @@ eslint-report.html /tags /tmp/* /vendor/bundle/* +/vendor/gitaly-ruby /builds* /shared/* /.gitlab_workhorse_secret /webpack-report/ +/knapsack/ +/rspec_flaky/ /locale/**/LC_MESSAGES /locale/**/*.time_stamp /.rspec /plugins/* +/.gitlab_pages_secret diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 26e442ccea..8dddad11f4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.3.6-golang-1.9-git-2.16-chrome-63.0-node-8.x-yarn-1.2-postgresql-9.6" +image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.3.7-golang-1.9-git-2.17-chrome-65.0-node-8.x-yarn-1.2-postgresql-9.6" .dedicated-runner: &dedicated-runner retry: 1 @@ -6,10 +6,11 @@ image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.3.6-golang-1.9-git - gitlab-org .default-cache: &default-cache - key: "ruby-2.3.6-with-yarn" + key: "ruby-2.3.7-debian-stretch-with-yarn" paths: - vendor/ruby - .yarn-cache/ + - vendor/gitaly-ruby .push-cache: &push-cache cache: @@ -110,7 +111,7 @@ stages: # Jobs that only need to pull cache .dedicated-no-docs-pull-cache-job: &dedicated-no-docs-pull-cache-job <<: *dedicated-runner - <<: *except-docs-and-qa + <<: *except-docs <<: *pull-cache dependencies: - setup-test-env @@ -122,6 +123,10 @@ stages: variables: SETUP_DB: "false" +.dedicated-no-docs-and-no-qa-pull-cache-job: &dedicated-no-docs-and-no-qa-pull-cache-job + <<: *dedicated-no-docs-pull-cache-job + <<: *except-docs-and-qa + .rake-exec: &rake-exec <<: *dedicated-no-docs-no-db-pull-cache-job script: @@ -222,7 +227,7 @@ stages: - master@gitlab/gitlab-ee .gitlab-setup: &gitlab-setup - <<: *dedicated-no-docs-pull-cache-job + <<: *dedicated-no-docs-and-no-qa-pull-cache-job <<: *use-pg variables: CREATE_DB_USER: "true" @@ -262,12 +267,12 @@ stages: # DB migration, rollback, and seed jobs .db-migrate-reset: &db-migrate-reset - <<: *dedicated-no-docs-pull-cache-job + <<: *dedicated-no-docs-and-no-qa-pull-cache-job script: - bundle exec rake db:migrate:reset .migration-paths: &migration-paths - <<: *dedicated-no-docs-pull-cache-job + <<: *dedicated-no-docs-and-no-qa-pull-cache-job variables: CREATE_DB_USER: "true" script: @@ -289,7 +294,6 @@ stages: # Trigger a package build in omnibus-gitlab repository # package-and-qa: - <<: *dedicated-runner image: ruby:2.4-alpine before_script: [] stage: build @@ -364,10 +368,11 @@ update-tests-metadata: - rspec_flaky/ policy: push script: - - retry gem install fog-aws mime-types + - retry gem install fog-aws mime-types activesupport - scripts/merge-reports ${KNAPSACK_RSPEC_SUITE_REPORT_PATH} knapsack/${CI_PROJECT_NAME}/rspec-pg_node_*.json - scripts/merge-reports ${KNAPSACK_SPINACH_SUITE_REPORT_PATH} knapsack/${CI_PROJECT_NAME}/spinach-pg_node_*.json - scripts/merge-reports ${FLAKY_RSPEC_SUITE_REPORT_PATH} rspec_flaky/all_*_*.json + - FLAKY_RSPEC_GENERATE_REPORT=1 scripts/prune-old-flaky-specs ${FLAKY_RSPEC_SUITE_REPORT_PATH} - '[[ -z ${TESTS_METADATA_S3_BUCKET} ]] || scripts/sync-reports put $TESTS_METADATA_S3_BUCKET $KNAPSACK_RSPEC_SUITE_REPORT_PATH $KNAPSACK_SPINACH_SUITE_REPORT_PATH' - '[[ -z ${TESTS_METADATA_S3_BUCKET} ]] || scripts/sync-reports put $TESTS_METADATA_S3_BUCKET $FLAKY_RSPEC_SUITE_REPORT_PATH' - rm -f knapsack/${CI_PROJECT_NAME}/*_node_*.json @@ -434,6 +439,7 @@ setup-test-env: paths: - tmp/tests - config/secrets.yml + - vendor/gitaly-ruby rspec-pg 0 28: *rspec-metadata-pg rspec-pg 1 28: *rspec-metadata-pg @@ -571,7 +577,7 @@ static-analysis: script: - scripts/static-analysis cache: - key: "ruby-2.3.6-with-yarn-and-rubocop" + key: "ruby-2.3.7-debian-stretch-with-yarn-and-rubocop" paths: - vendor/ruby - .yarn-cache/ @@ -647,7 +653,7 @@ migration:path-mysql: <<: *use-mysql .db-rollback: &db-rollback - <<: *dedicated-no-docs-pull-cache-job + <<: *dedicated-no-docs-and-no-qa-pull-cache-job script: - bundle exec rake db:migrate VERSION=20170523121229 - bundle exec rake db:migrate @@ -670,7 +676,7 @@ gitlab:setup-mysql: # Frontend-related jobs gitlab:assets:compile: - <<: *dedicated-no-docs-no-db-pull-cache-job + <<: *dedicated-no-docs-and-no-qa-pull-cache-job dependencies: [] variables: NODE_ENV: "production" @@ -691,7 +697,7 @@ gitlab:assets:compile: - webpack-report/ karma: - <<: *dedicated-no-docs-pull-cache-job + <<: *dedicated-no-docs-and-no-qa-pull-cache-job <<: *use-pg dependencies: - compile-assets @@ -720,7 +726,7 @@ codequality: tags: [] before_script: [] services: - - docker:dind + - docker:stable-dind variables: SETUP_DB: "false" DOCKER_DRIVER: overlay2 @@ -735,16 +741,50 @@ codequality: expire_in: 1 week sast: - <<: *except-docs - image: registry.gitlab.com/gitlab-org/gl-sast:latest + <<: *dedicated-no-docs-no-db-pull-cache-job + image: docker:stable variables: - CONFIDENCE_LEVEL: 2 + SAST_CONFIDENCE_LEVEL: 2 + DOCKER_DRIVER: overlay2 + allow_failure: true + tags: [] before_script: [] + cache: {} + dependencies: [] + services: + - docker:stable-dind script: - - /app/bin/run . + - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/') + - docker run + --env SAST_CONFIDENCE_LEVEL="${SAST_CONFIDENCE_LEVEL:-3}" + --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: paths: [gl-sast-report.json] +dependency_scanning: + <<: *dedicated-no-docs-no-db-pull-cache-job + image: docker:stable + variables: + DOCKER_DRIVER: overlay2 + allow_failure: true + 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/') + - docker run + --env DEP_SCAN_DISABLE_REMOTE_CHECKS="${DEP_SCAN_DISABLE_REMOTE_CHECKS:-false}" + --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: + paths: [gl-dependency-scanning-report.json] + qa:internal: <<: *dedicated-no-docs-no-db-pull-cache-job services: [] @@ -781,7 +821,7 @@ coverage: - coverage/assets/ lint:javascript:report: - <<: *dedicated-no-docs-no-db-pull-cache-job + <<: *dedicated-no-docs-and-no-qa-pull-cache-job stage: post-test dependencies: - compile-assets diff --git a/.gitlab/issue_templates/Security Developer Workflow.md b/.gitlab/issue_templates/Security Developer Workflow.md new file mode 100644 index 0000000000..0c878dbf64 --- /dev/null +++ b/.gitlab/issue_templates/Security Developer Workflow.md @@ -0,0 +1,70 @@ + + +### Prior to the security release + +- [ ] Read the [security process for developers] if you are not familiar with it. +- [ ] Link to the original issue adding it to the [links section](#links) +- [ ] Run `scripts/security-harness` in the CE, EE, and/or Omnibus to prevent pushing to any remote besides `dev.gitlab.org` +- [ ] Create an MR targetting `org` `master`, prefixing your branch with `security-` +- [ ] Label your MR with the ~security label, prefix the title with `WIP: [master]` +- [ ] Add a link to the MR to the [links section](#links) +- [ ] Add a link to an EE MR if required +- [ ] Make sure the MR remains in-progress and gets approved after the review cycle, **but never merged**. +- [ ] Assign the MR to a RM once is reviewed and ready to be merged. Check the [RM list] to see who to ping. + +#### Backports + +- [ ] Once the MR is ready to be merged, create MRs targetting the last 3 releases + - [ ] At this point, it might be easy to squash the commits from the MR into one + - You can use the script `bin/secpick` instead of the following steps, to help you cherry-picking. See the [seckpick documentation] + - [ ] Create the branch `security-X-Y` from `X-Y-stable` if it doesn't exist (and make sure it's up to date with stable) + - [ ] Create each MR targetting the security branch `security-X-Y` + - [ ] Add the ~security label and prefix with the version `WIP: [X.Y]` the title of the MR +- [ ] Make sure all MRs have a link in the [links section](#links) and are assigned to a Release Manager. + +[seckpick documentation]: https://gitlab.com/gitlab-org/release/docs/blob/master/general/security/developer.md#secpick-script + +#### Documentation and final details + +- [ ] Check the topic on #security to see when the next release is going to happen and add a link to the [links section](#links) +- [ ] Find out the versions affected (the Git history of the files affected may help you with this) and add them to the [details section](#details) +- [ ] Fill in any upgrade notes that users may need to take into account in the [details section](#details) +- [ ] Add Yes/No and further details if needed to the migration and settings columns in the [details section](#details) +- [ ] Add the nickname of the external user who found the issue (and/or HackerOne profile) to the Thanks row in the [details section](#details) + +### Summary +#### Links + +| Description | Link | +| -------- | -------- | +| Original issue | #TODO | +| Security release issue | #TODO | +| `master` MR | !TODO | +| `master` MR (EE) | !TODO | +| `Backport X.Y` MR | !TODO | +| `Backport X.Y` MR | !TODO | +| `Backport X.Y` MR | !TODO | +| `Backport X.Y` MR (EE) | !TODO | +| `Backport X.Y` MR (EE) | !TODO | +| `Backport X.Y` MR (EE) | !TODO | + +#### Details + +| Description | Details | Further details| +| -------- | -------- | -------- | +| Versions affected | X.Y | | +| Upgrade notes | | | +| GitLab Settings updated | Yes/No| | +| Migration required | Yes/No | | +| Thanks | | | + +[security process for developers]: https://gitlab.com/gitlab-org/release/docs/blob/master/general/security/developer.md +[RM list]: https://about.gitlab.com/release-managers/ + +/label ~security diff --git a/.gitlab/merge_request_templates/Database Changes.md b/.gitlab/merge_request_templates/Database Changes.md index 68bc0fd1c7..2bb1f374e9 100644 --- a/.gitlab/merge_request_templates/Database Changes.md +++ b/.gitlab/merge_request_templates/Database Changes.md @@ -45,4 +45,4 @@ When removing columns, tables, indexes or other structures: - [ ] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits) - [ ] Internationalization required/considered - [ ] If paid feature, have we considered GitLab.com plan and how it works for groups and is there a design for promoting it to users who aren't on the correct plan -- [ ] End-to-end tests pass (`package-qa` manual pipeline job) +- [ ] End-to-end tests pass (`package-and-qa` manual pipeline job) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index d443238b9e..16b0b5c95e 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -143,7 +143,7 @@ Lint/MissingCopEnableDirective: Lint/NestedPercentLiteral: Exclude: - 'lib/gitlab/git/repository.rb' - - 'spec/support/email_format_shared_examples.rb' + - 'spec/support/shared_examples/email_format_shared_examples.rb' # Offense count: 1 Lint/ReturnInVoidContext: @@ -195,8 +195,8 @@ Naming/HeredocDelimiterCase: - 'spec/lib/gitlab/diff/parser_spec.rb' - 'spec/lib/json_web_token/rsa_token_spec.rb' - 'spec/models/commit_spec.rb' - - 'spec/support/repo_helpers.rb' - - 'spec/support/seed_repo.rb' + - 'spec/support/helpers/repo_helpers.rb' + - 'spec/support/helpers/seed_repo.rb' # Offense count: 112 # Configuration parameters: Blacklist. @@ -496,7 +496,7 @@ Style/EmptyLiteral: - 'spec/lib/gitlab/request_context_spec.rb' - 'spec/lib/gitlab/workhorse_spec.rb' - 'spec/requests/api/jobs_spec.rb' - - 'spec/support/chat_slash_commands_shared_examples.rb' + - 'spec/support/shared_examples/chat_slash_commands_shared_examples.rb' # Offense count: 102 # Cop supports --auto-correct. diff --git a/.ruby-version b/.ruby-version index e75da3e63d..00355e29d1 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.3.6 +2.3.7 diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a5d2102a5..7d48a173de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,30 +2,58 @@ documentation](doc/development/changelog.md) for instructions on adding your own entry. -## 10.7.7 (2018-07-17) +## 10.8.7 (2018-07-26) -### Security (1 change) +### Security (4 changes) + +- Don't expose project names in various counters. +- Don't expose project names in GitHub counters. +- Adding CSRF protection to Hooks test action. +- Fixed XSS in branch name in Web IDE. + +### Fixed (1 change) + +- Escapes milestone and label's names on flash notice when promoting them. + + +## 10.8.6 (2018-07-17) + +### Security (2 changes) - Fix symlink vulnerability in project import. +- Merge branch 'fix-mr-widget-border' into 'master'. -## 10.7.6 (2018-06-21) +## 10.8.5 (2018-06-21) -### Security (6 changes) +### Security (5 changes) - Fix XSS vulnerability for table of content generation. - Update sanitize gem to 4.6.5 to fix HTML injection vulnerability. - HTML escape branch name in project graphs page. - HTML escape the name of the user in ProjectsHelper#link_to_member. - Don't show events from internal projects for anonymous users in public feed. -- XSS fix to use safe_params instead of params in url_for helpers. - -### Other (1 change) - -- Replacing gollum libraries for gitlab custom libs. !18343 -## 10.7.5 (2018-05-28) +## 10.8.4 (2018-06-06) + +- No changes. + +## 10.8.3 (2018-05-30) + +### Fixed (4 changes) + +- Replace Gitlab::REVISION with Gitlab.revision and handle installations without a .git directory. !19125 +- Fix encoding of branch names on compare and new merge request page. !19143 +- Fix remote mirror database inconsistencies when upgrading from EE to CE. !19196 +- Fix local storage not being cleared after creating a new issue. + +### Performance (1 change) + +- Memoize Gitlab::Database.version. + + +## 10.8.2 (2018-05-28) ### Security (3 changes) @@ -34,11 +62,195 @@ entry. - Fixed bug that allowed importing arbitrary project attributes. -## 10.7.4 (2018-05-21) +## 10.8.1 (2018-05-23) -### Fixed (1 change) +### Fixed (9 changes) +- Allow CommitStatus class to use presentable methods. !18979 +- Fix corrupted environment pages with unathorized proxy url. !18989 +- Fixes deploy token variables on Ci::Build. !19047 +- Fix project mirror database inconsistencies when upgrading from EE to CE. !19109 +- Render 404 when prometheus adapter is disabled in Prometheus metrics controller. !19110 - Fix error when deleting an empty list of refs. +- Fixed U2F login when used with LDAP. +- Bump prometheus-client-mmap to 0.9.3 to fix nil exception error. +- Fix system hook not firing for blocked users when LDAP sign-in is used. + + +## 10.8.0 (2018-05-22) + +### Security (3 changes, 1 of them is from the community) + +- Update faraday_middlewar to 0.12.2. !18397 (Takuya Noguchi) +- Serve archive requests with the correct file in all cases. +- Sanitizes user name to avoid XSS attacks. + +### Fixed (47 changes, 11 of them are from the community) + +- Refactor CSS to eliminate vertical misalignment of login nav. !16275 (Takuya Noguchi) +- Fix pipeline status in branch/tag tree page. !17995 +- Allow group owner to enable runners from subgroups (#41981). !18009 +- Fix template selector menu visibility when toggling preview mode in file edit view. !18118 (Fabian Schneider) +- Fix confirmation modal for deleting a protected branch. !18176 (Paul Bonaud @PaulRbR) +- Triggering custom hooks by Wiki UI edit. !18251 +- Now `rake cache:clear` will also clear pipeline status cache. !18257 +- Fix `joined` information on project members page. !18290 (Fabian Schneider) +- Fix missing namespace for some internal users. !18357 +- Show shared projects on group page. !18390 +- Restore label underline color. !18407 (George Tsiolis) +- Fix undefined `html_escape` method during markdown rendering. !18418 +- Fix unassign slash command preview. !18447 +- Correct text and functionality for delete user / delete user and contributions modal. !18463 (Marc Schwede) +- Fix discussions API setting created_at for notable in a group or notable in a project in a group with owners. !18464 +- Don't include lfs_file_locks data in export bundle. !18495 +- Reset milestone filter when clicking "Any Milestone" in dashboard. !18531 +- Ensure member notifications are sent after the member actual creation/update in the DB. !18538 +- Update links to /ci/lint with ones to project ci/lint. !18539 (Takuya Noguchi) +- Fix tabs container styles to make RSS button clickable. !18559 +- Raise NoRepository error for non-valid repositories when calculating repository checksum. !18594 +- Don't automatically remove artifacts for pages jobs after pages:deploy has run. !18628 +- Increase new issue metadata form margin. !18630 (George Tsiolis) +- Add loading icon padding for pipeline environments. !18631 (George Tsiolis) +- ShaAttribute no longer stops startup if database is missing. !18726 +- Fix close keyboard shortcuts dialog using the keyboard shortcut. !18783 (Lars Greiss) +- Fixes database inconsistencies between Community and Enterprise Edition on import state. !18811 +- Add database foreign key constraint between pipelines and build. !18822 +- Fix finding wiki pages when they have invalidly-encoded content. !18856 +- Fix outdated Web IDE welcome copy. !18861 +- fixed copy to blipboard button in embed bar of snippets. !18923 (haseebeqx) +- Disables RBAC on nginx-ingress. !18947 +- Correct skewed Kubernetes popover illustration. !18949 +- Resolve Import/Export ci_cd_settings error updating the project. !46049 +- Fix project creation for user endpoint when jobs_enabled parameter supplied. +- 46210 Display logo and user dropdown on mobile for terms page and fix styling. +- Adds illustration for when job log was erased. +- Ensure web hook 'blocked URL' errors are stored in web hook logs and properly surfaced to the user. +- Make toggle markdown preview shortcut only toggle selected field. +- Verifiy if pipeline has commit idetails and render information in MR widget when branch is deleted. +- Fixed inconsistent protected branch pill baseline. +- Fix setting Gitlab metrics content types. +- Display only generic message on merge error to avoid exposing any potentially sensitive or user unfriendly backend messages. +- Fix label links update on project transfer. +- Breaks commit not found message in pipelines table. +- Adjust issue boards list header label text color. +- Prevent pipeline actions in dropdown to redirct to a new page. + +### Changed (35 changes, 15 of them are from the community) + +- Improve tooltips in collapsed right sidebar. !17714 +- Partition job_queue_duration_seconds with jobs_running_for_project. !17730 +- For group dashboard, we no longer show groups which the visitor is not a member of (this applies to admins and auditors). !17884 (Roger Rüttimann) +- Use RFC 3676 mail signature delimiters. !17979 (Enrico Scholz) +- Add sha filter to pipelines list API. !18125 +- New CI Job live-trace architecture. !18169 +- Make project deploy keys table more clearly structured. !18279 +- Remove green background from unlock button in admin area. !18288 +- Renamed Overview to Project in the contextual navigation at a project level. !18295 (Constance Okoghenun) +- Load branches on new merge request page asynchronously. !18315 +- Create settings section for autodevops. !18321 +- Add a comma to the time estimate system notes. !18326 +- Enable specifying variables when executing a manual pipeline. !18440 +- Fix size and position for fork icon. !18449 (George Tsiolis) +- Refactored activity calendar. !18469 (Enrico Scholz) +- Small improvements to repository checks. !18484 +- Add 2FA filter to users API for admins only. !18503 +- Align project avatar on small viewports. !18513 (George Tsiolis) +- Show group and project LFS settings in the interface to Owners and Masters. !18562 +- Update environment item action buttons icons. !18632 (George Tsiolis) +- Update timeline icon for description edit. !18633 (George Tsiolis) +- Revert discussion counter height. !18656 (George Tsiolis) +- Improve quick actions summary preview. !18659 (George Tsiolis) +- Change font for tables inside diff discussions. !18660 (George Tsiolis) +- Add padding to profile description. !18663 (George Tsiolis) +- Break issue title for board card title and issuable header text. !18674 (George Tsiolis) +- Adds push mirrors to GitLab Community Edition. !18715 +- Inform the user when there are no project import options available. !18716 (George Tsiolis) +- Improve commit message body rendering and fix responsive compare panels. !18725 (Constance Okoghenun) +- Reconcile project templates with Auto DevOps. !18737 +- Remove branch name from the status bar of WebIDE. +- Clean up WebIDE status bar and add useful info. +- Improve interaction on WebIDE commit panel. +- Keep current labels visible when editing them in the sidebar. +- Use VueJS for rendering pipeline stages. + +### Performance (26 changes, 11 of them are from the community) + +- Move WorkInProgress vue component. !17536 (George Tsiolis) +- Move ReadyToMerge vue component. !17545 (George Tsiolis) +- Move BoardBlankState vue component. !17666 (George Tsiolis) +- Improve DB performance of calculating total artifacts size. !17839 +- Add i18n and update specs for UnresolvedDiscussions vue component. !17866 (George Tsiolis) +- Introduce new ProjectCiCdSetting model with group_runners_enabled. !18144 +- Move PipelineFailed vue component. !18277 (George Tsiolis) +- Move TimeTrackingEstimateOnlyPane vue component. !18318 (George Tsiolis) +- Move TimeTrackingHelpState vue component. !18319 (George Tsiolis) +- Reduce queries on merge requests list page for merge requests from forks. !18561 +- Destroy build_chunks efficiently with FastDestroyAll module. !18575 +- Improve performance of a service responsible for creating a pipeline. !18582 +- Replace time_ago_in_words with JS-based one. !18607 (Takuya Noguchi) +- Move TimeTrackingNoTrackingPane vue component. !18676 (George Tsiolis) +- Move SidebarTimeTracking vue component. !18677 (George Tsiolis) +- Move TimeTrackingSpentOnlyPane vue component. !18710 (George Tsiolis) +- Detecting tags containing a commit uses Gitaly by default. +- Increase cluster applications installer availability using alpine linux mirrors. +- Compute notification recipients in background jobs. +- Use persisted diff data instead fetching Git on discussions. +- Detecting branchnames containing a commit uses Gitaly by default. +- Detect repository license on Gitaly by default. +- Finish NamespaceService migration to Gitaly. +- Check if a ref exists is done by Gitaly by default. +- Compute Gitlab::Git::Repository#checksum on Gitaly by default. +- Repository#exists? is always executed through Gitaly. + +### Added (22 changes, 10 of them are from the community) + +- Allow group masters to configure runners for groups. !9646 (Alexis Reigel) +- Adds Embedded Snippets Support. !15695 (haseebeqx) +- Add Copy metadata quick action. !16473 (Mateusz Bajorski) +- Show Runner's description on job's page. !17321 +- Add deprecation message to dynamic milestone pages. !17505 +- Show new branch/mr button even when branch exists. !17712 (Jacopo Beschi @jacopo-beschi) +- API: add languages of project GET /projects/:id/languages. !17770 (Roger Rüttimann) +- Display active sessions and allow the user to revoke any of it. !17867 (Alexis Reigel) +- Add cron job to email users on issue due date. !17985 (Stuart Nelson) +- Rubocop rule to avoid returning from a block. !18000 (Jacopo Beschi @jacopo-beschi) +- Add the signature verfication badge to the compare view. !18245 (Marc Shaw) +- Expose Deploy Token data as environment varialbes on CI/CD jobs. !18414 +- Show group id in group settings. !18482 (George Tsiolis) +- Allow admins to enforce accepting Terms of Service on an instance. !18570 +- Add CI_COMMIT_MESSAGE, CI_COMMIT_TITLE and CI_COMMIT_DESCRIPTION predefined variables. !18672 +- Add GCP signup offer to cluster index / create pages. !18684 +- Output some useful information when running the rails console. !18697 +- Display merge commit SHA in merge widget after merge. !18722 +- git SHA is now displayed alongside the GitLab version on the Admin Dashboard. +- Expose the target commit ID through the tag API. +- Added fuzzy file finder to web IDE. +- Add discussion API for merge requests and commits. + +### Other (22 changes, 8 of them are from the community) + +- Replace the `project/issues/milestones.feature` spinach test with an rspec analog. !18300 (@blackst0ne) +- Replace the `project/commits/branches.feature` spinach test with an rspec analog. !18302 (@blackst0ne) +- Replacing gollum libraries for gitlab custom libs. !18343 +- Replace the `project/commits/comments.feature` spinach test with an rspec analog. !18356 (@blackst0ne) +- Replace "Click" with "Select" to be more inclusive of people with accessibility requirements. !18386 (Mark Lapierre) +- Remove ahead/behind graphs on project branches on mobile. !18415 (Takuya Noguchi) +- Replace the `project/source/markdown_render.feature` spinach test with an rspec analog. !18525 (@blackst0ne) +- Add missing changelog type to docs. !18526 (@blackst0ne) +- Added Webhook SSRF prevention to documentation. !18532 +- Upgrade underscore.js to 1.9.0. !18578 +- Add documentation about how to use variables to define deploy policies for staging/production environments. !18675 +- Replace the `project/builds/artifacts.feature` spinach test with an rspec analog. !18729 (@blackst0ne) +- Block access to the API & git for users that did not accept enforced Terms of Service. !18816 +- Transition to atomic internal ids for all models. !44259 +- Removes modal boards store and mixins from global scope. +- Replace GKE acronym with Google Kubernetes Engine. +- Replace vue resource with axios for pipelines details page. +- Enable prometheus monitoring by default. +- Replace vue resource with axios in pipelines table. +- Bump lograge to 0.10.0 and remove monkey patch. +- Improves wording in new pipeline page. +- Gitaly handles repository forks by default. ## 10.7.3 (2018-05-02) @@ -298,6 +510,31 @@ entry. - Upgrade Gitaly to upgrade its charlock_holmes. +## 10.6.5 (2018-04-24) + +### Security (1 change) + +- Sanitizes user name to avoid XSS attacks. + + +## 10.6.4 (2018-04-09) + +### Fixed (8 changes, 1 of them is from the community) + +- Correct copy text for the promote milestone and label modals. !17726 +- Avoid validation errors when running the Pages domain verification service. !17992 +- Fix autolinking URLs containing ampersands. !18045 +- Fix exceptions raised when migrating pipeline stages in the background. !18076 +- Work around Prometheus Helm chart name changes to fix integration. !18206 (joshlambert) +- Don't show Jump to Discussion button on Issues. +- Fix listing commit branch/tags that contain special characters. +- Fix 404 in group boards when moving issue between lists. + +### Performance (1 change) + +- Free open file descriptors and libgit2 buffers in UpdatePagesService. + + ## 10.6.3 (2018-04-03) ### Security (2 changes) @@ -521,6 +758,13 @@ entry. - Use host URL to build JIRA remote link icon. +## 10.5.8 (2018-04-24) + +### Security (1 change) + +- Sanitizes user name to avoid XSS attacks. + + ## 10.5.7 (2018-04-03) ### Security (2 changes) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9c8fdc1275..4f5d19ce2c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -9,6 +9,10 @@ terms. [DCO + License](https://gitlab.com/gitlab-org/dco/blob/master/README.md) +All Documentation content that resides under the [doc/ directory](/doc) of this +repository is licensed under Creative Commons: +[CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/). + _This notice should stay as the first item in the CONTRIBUTING.md file._ --- @@ -25,10 +29,12 @@ _This notice should stay as the first item in the CONTRIBUTING.md file._ - [Workflow labels](#workflow-labels) - [Type labels (~"feature proposal", ~bug, ~customer, etc.)](#type-labels-feature-proposal-bug-customer-etc) - [Subject labels (~wiki, ~"container registry", ~ldap, ~api, etc.)](#subject-labels-wiki-container-registry-ldap-api-etc) - - [Team labels (~"CI/CD", ~Discussion, ~Edge, ~Platform, etc.)](#team-labels-cicd-discussion-edge-platform-etc) - - [Priority labels (~Deliverable, ~Stretch, ~"Next Patch Release")](#priority-labels-deliverable-stretch-next-patch-release) + - [Team labels (~"CI/CD", ~Discussion, ~Quality, ~Platform, etc.)](#team-labels-cicd-discussion-quality-platform-etc) + - [Milestone labels (~Deliverable, ~Stretch, ~"Next Patch Release")](#milestone-labels-deliverable-stretch-next-patch-release) + - [Priority labels (~Deliverable, ~Stretch, ~"Next Patch Release")](#bug-priority-labels-p1-p2-p3-etc) + - [Severity labels (~Deliverable, ~Stretch, ~"Next Patch Release")](#bug-severity-labels-s1-s2-s3-etc) - [Label for community contributors (~"Accepting Merge Requests")](#label-for-community-contributors-accepting-merge-requests) -- [Implement design & UI elements](#implement-design-ui-elements) +- [Implement design & UI elements](#implement-design--ui-elements) - [Issue tracker](#issue-tracker) - [Issue triaging](#issue-triaging) - [Feature proposals](#feature-proposals) @@ -112,7 +118,7 @@ is a great place to start. Issues with a lower weight (1 or 2) are deemed suitable for beginners. These issues will be of reasonable size and challenge, for anyone to start contributing to GitLab. If you have any questions or need help visit [Getting Help](https://about.gitlab.com/getting-help/#discussion) to learn how to communicate with GitLab. If you're looking for a Gitter or Slack channel -please consider we favor +please consider we favor [asynchronous communication](https://about.gitlab.com/handbook/communication/#internal-communication) over real time communication. Thanks for your contribution! ## Workflow labels @@ -125,8 +131,10 @@ Most issues will have labels for at least one of the following: - Type: ~"feature proposal", ~bug, ~customer, etc. - Subject: ~wiki, ~"container registry", ~ldap, ~api, ~frontend, etc. -- Team: ~"CI/CD", ~Discussion, ~Edge, ~Platform, etc. -- Priority: ~Deliverable, ~Stretch, ~"Next Patch Release" +- Team: ~"CI/CD", ~Discussion, ~Quality, ~Platform, etc. +- Milestone: ~Deliverable, ~Stretch, ~"Next Patch Release" +- Priority: ~P1, ~P2, ~P3, ~P4 +- Severity: ~S1, ~S2, ~S3, ~S4 All labels, their meaning and priority are defined on the [labels page][labels-page]. @@ -167,13 +175,13 @@ Examples of subject labels are ~wiki, ~"container registry", ~ldap, ~api, Subject labels are always all-lowercase. -### Team labels (~"CI/CD", ~Discussion, ~Edge, ~Platform, etc.) +### Team labels (~"CI/CD", ~Discussion, ~Quality, ~Platform, etc.) Team labels specify what team is responsible for this issue. Assigning a team label makes sure issues get the attention of the appropriate people. -The current team labels are ~Build, ~"CI/CD", ~Discussion, ~Documentation, ~Edge, +The current team labels are ~Build, ~"CI/CD", ~Discussion, ~Documentation, ~Quality, ~Geo, ~Gitaly, ~Monitoring, ~Platform, ~Release, ~"Security Products" and ~"UX". The descriptions on the [labels page][labels-page] explain what falls under the @@ -185,34 +193,64 @@ indicate if an issue needs backend work, frontend work, or both. Team labels are always capitalized so that they show up as the first label for any issue. -### Priority labels (~Deliverable, ~Stretch, ~"Next Patch Release") +### Milestone labels (~Deliverable, ~Stretch, ~"Next Patch Release") -Priority labels help us clearly communicate expectations of the work for the -release. There are two levels of priority labels: +Milestone labels help us clearly communicate expectations of the work for the +release. There are three levels of Milestone labels: - ~Deliverable: Issues that are expected to be delivered in the current milestone. - ~Stretch: Issues that are a stretch goal for delivering in the current milestone. If these issues are not done in the current release, they will strongly be considered for the next release. -- ~"Next Patch Release": Issues to put in the next patch release. Work on these +- ~"Next Patch Release": Issues to put in the next patch release. Work on these first, and add the "Pick Into X" label to the merge request, along with the appropriate milestone. Each issue scheduled for the current milestone should be labeled ~Deliverable -or ~"Stretch". Any open issue for a previous milestone should be labeled +or ~"Stretch". Any open issue for a previous milestone should be labeled ~"Next Patch Release", or otherwise rescheduled to a different milestone. -### Severity labels (~S1, ~S2, etc.) +### Bug Priority labels (~P1, ~P2, ~P3 & etc.) + +Bug Priority labels help us define the time a ~bug fix should be completed. Priority determines how quickly the defect turnaround time must be. If there are multiple defects, the priority decides which defect has to be fixed immediately versus later. +This label documents the planned timeline & urgency which is used to measure against our actual SLA on delivering ~bug fixes. + +| Label | Meaning | Estimate time to fix | Guidance | +|-------|-----------------|------------------------------------------------------------------|----------| +| ~P1 | Urgent Priority | The current release + potentially immediate hotfix to GitLab.com | | +| ~P2 | High Priority | The next release | | +| ~P3 | Medium Priority | Within the next 3 releases (approx one quarter) | | +| ~P4 | Low Priority | Anything outside the next 3 releases (approx beyond one quarter) | The issue is prominent but does not impact user workflow and a workaround is documented | + +#### Specific Priority guidance + +| Label | Availability / Performance | +|-------|--------------------------------------------------------------| +| ~P1 | | +| ~P2 | The issue is (almost) guaranteed to occur in the near future | +| ~P3 | The issue is likely to occur in the near future | +| ~P4 | The issue _may_ occur but it's not likely | + +### Bug Severity labels (~S1, ~S2, ~S3 & etc.) Severity labels help us clearly communicate the impact of a ~bug on users. -| Label | Meaning | Example | -|-------|------------------------------------------|---------| -| ~S1 | Feature broken, no workaround | Unable to create an issue | -| ~S2 | Feature broken, workaround unacceptable | Can push commits, but only via the command line | -| ~S3 | Feature broken, workaround acceptable | Can create merge requests only from the Merge Requests page, not through the Issue | -| ~S4 | Cosmetic issue | Label colors are incorrect / not being displayed | +| Label | Meaning | Impact of the defect | Example | +|-------|-------------------|-------------------------------------------------------|---------| +| ~S1 | Blocker | Outage, broken feature with no workaround | Unable to create an issue. Data corruption/loss. Security breach. | +| ~S2 | Critical Severity | Broken Feature, workaround too complex & unacceptable | Can push commits, but only via the command line. | +| ~S3 | Major Severity | Broken Feature, workaround acceptable | Can create merge requests only from the Merge Requests page, not through the Issue. | +| ~S4 | Low Severity | Functionality inconvenience or cosmetic issue | Label colors are incorrect / not being displayed. | + +#### Specific Severity guidance + +| Label | Security Impact | +|-------|-------------------------------------------------------------------| +| ~S1 | >50% customers impacted (possible company extinction level event) | +| ~S2 | Multiple customers impacted (but not apocalyptic) | +| ~S3 | A single customer impacted | +| ~S4 | No customer impact, or expected impact within 30 days | ### Label for community contributors (~"Accepting Merge Requests") @@ -693,4 +731,3 @@ available at [http://contributor-covenant.org/version/1/1/0/](http://contributor [^1]: Please note that specs other than JavaScript specs are considered backend code. - \ No newline at end of file diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 483b771941..a39178a633 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -0.96.1 +0.100.1 diff --git a/GITLAB_PAGES_VERSION b/GITLAB_PAGES_VERSION index 6f4eebdf6f..f374f6662e 100644 --- a/GITLAB_PAGES_VERSION +++ b/GITLAB_PAGES_VERSION @@ -1 +1 @@ -0.8.1 +0.9.1 diff --git a/GITLAB_WORKHORSE_VERSION b/GITLAB_WORKHORSE_VERSION index ee74734aa2..fae6e3d04b 100644 --- a/GITLAB_WORKHORSE_VERSION +++ b/GITLAB_WORKHORSE_VERSION @@ -1 +1 @@ -4.1.0 +4.2.1 diff --git a/Gemfile b/Gemfile index b4bde1f726..a18180fd98 100644 --- a/Gemfile +++ b/Gemfile @@ -33,7 +33,7 @@ gem 'grape-route-helpers', '~> 2.1.0' gem 'faraday', '~> 0.12' # Authentication libraries -gem 'devise', '~> 4.2' +gem 'devise', '~> 4.4' gem 'doorkeeper', '~> 4.3' gem 'doorkeeper-openid_connect', '~> 1.3' gem 'omniauth', '~> 1.8' @@ -41,7 +41,7 @@ gem 'omniauth-auth0', '~> 2.0.0' gem 'omniauth-azure-oauth2', '~> 0.0.9' gem 'omniauth-cas3', '~> 1.1.4' gem 'omniauth-facebook', '~> 4.0.0' -gem 'omniauth-github', '~> 1.1.1' +gem 'omniauth-github', '~> 1.3' gem 'omniauth-gitlab', '~> 1.0.2' gem 'omniauth-google-oauth2', '~> 0.5.3' gem 'omniauth-kerberos', '~> 0.3.0', group: :kerberos @@ -81,7 +81,7 @@ gem 'net-ldap' # Git Wiki # Required manually in config/initializers/gollum.rb to control load order -gem 'gitlab-gollum-lib', '~> 4.2' +gem 'gitlab-gollum-lib', '~> 4.2', require: false gem 'gitlab-gollum-rugged_adapter', '~> 0.4.4', require: false @@ -90,7 +90,7 @@ gem 'github-linguist', '~> 5.3.3', require: 'linguist' # API gem 'grape', '~> 1.0' -gem 'grape-entity', '~> 0.6.0' +gem 'grape-entity', '~> 0.7.1' gem 'rack-cors', '~> 1.0.0', require: 'rack/cors' # Disable strong_params so that Mash does not respond to :permitted? @@ -184,6 +184,9 @@ gem 're2', '~> 1.1.1' gem 'version_sorter', '~> 2.1.0' +# User agent parsing +gem 'device_detector' + # Cache gem 'redis-rails', '~> 5.0.2' @@ -282,7 +285,6 @@ gem 'batch-loader', '~> 1.2.1' gem 'peek', '~> 1.0.1' gem 'peek-gc', '~> 0.0.2' gem 'peek-mysql2', '~> 1.1.0', group: :mysql -gem 'peek-performance_bar', '~> 1.3.0' gem 'peek-pg', '~> 1.3.0', group: :postgres gem 'peek-rblineprof', '~> 0.2.0' gem 'peek-redis', '~> 1.2.0' @@ -295,7 +297,7 @@ group :metrics do gem 'influxdb', '~> 0.2', require: false # Prometheus - gem 'prometheus-client-mmap', '~> 0.9.1' + gem 'prometheus-client-mmap', '~> 0.9.3' gem 'raindrops', '~> 0.18' end @@ -376,6 +378,7 @@ group :test do gem 'email_spec', '~> 1.6.0' gem 'json-schema', '~> 2.8.0' gem 'webmock', '~> 2.3.2' + gem 'rails-controller-testing' if rails5? # Rails5 only gem. gem 'test_after_commit', '~> 1.1' unless rails5? # Remove this gem when migrated to rails 5.0. It's been integrated to rails 5.0. gem 'sham_rack', '~> 1.3.6' gem 'concurrent-ruby', '~> 1.0.5' @@ -413,7 +416,7 @@ group :ed25519 do end # Gitaly GRPC client -gem 'gitaly-proto', '~> 0.96.0', require: 'gitaly' +gem 'gitaly-proto', '~> 0.99.0', require: 'gitaly' gem 'grpc', '~> 1.11.0' # Locked until https://github.com/google/protobuf/issues/4210 is closed diff --git a/Gemfile.lock b/Gemfile.lock index 5f3d6f8768..16233e9e51 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -143,7 +143,7 @@ GEM connection_pool (2.2.1) crack (0.4.3) safe_yaml (~> 1.0.0) - crass (1.0.3) + crass (1.0.4) creole (0.5.0) css_parser (1.5.0) addressable @@ -161,10 +161,11 @@ GEM activerecord (>= 3.2.0, < 5.1) descendants_tracker (0.0.4) thread_safe (~> 0.3, >= 0.3.1) - devise (4.2.0) + device_detector (1.0.0) + devise (4.4.3) bcrypt (~> 3.0) orm_adapter (~> 0.1) - railties (>= 4.1.0, < 5.1) + railties (>= 4.1.0, < 6.0) responders warden (~> 1.2.3) devise-two-factor (3.0.0) @@ -206,7 +207,7 @@ GEM railties (>= 3.0.0) faraday (0.12.2) multipart-post (>= 1.2, < 3) - faraday_middleware (0.11.0.1) + faraday_middleware (0.12.2) faraday (>= 0.7.4, < 1.0) faraday_middleware-multi_json (0.0.6) faraday_middleware @@ -290,7 +291,7 @@ GEM po_to_json (>= 1.0.0) rails (>= 3.2.0) gherkin-ruby (0.3.2) - gitaly-proto (0.96.0) + gitaly-proto (0.99.0) google-protobuf (~> 3.1) grpc (~> 1.10) github-linguist (5.3.3) @@ -365,8 +366,8 @@ GEM rack (>= 1.3.0) rack-accept virtus (>= 1.0.0) - grape-entity (0.6.0) - activesupport + grape-entity (0.7.1) + activesupport (>= 4.0) multi_json (>= 1.3.2) grape-route-helpers (2.1.0) activesupport @@ -483,10 +484,11 @@ GEM logging (2.2.2) little-plugger (~> 1.1) multi_json (~> 1.10) - lograge (0.5.1) - actionpack (>= 4, < 5.2) - activesupport (>= 4, < 5.2) - railties (>= 4, < 5.2) + lograge (0.10.0) + actionpack (>= 4) + activesupport (>= 4) + railties (>= 4) + request_store (~> 1.0) loofah (2.2.2) crass (~> 1.0.2) nokogiri (>= 1.5.9) @@ -546,9 +548,9 @@ GEM omniauth (~> 1.2) omniauth-facebook (4.0.0) omniauth-oauth2 (~> 1.2) - omniauth-github (1.1.2) - omniauth (~> 1.0) - omniauth-oauth2 (~> 1.1) + omniauth-github (1.3.0) + omniauth (~> 1.5) + omniauth-oauth2 (>= 1.4.0, < 2.0) omniauth-gitlab (1.0.2) omniauth (~> 1.0) omniauth-oauth2 (~> 1.0) @@ -586,7 +588,7 @@ GEM orm_adapter (0.5.0) os (0.9.6) parallel (1.12.1) - parser (2.5.0.5) + parser (2.5.1.0) ast (~> 2.4.0) parslet (1.5.0) blankslate (~> 2.0) @@ -601,8 +603,6 @@ GEM atomic (>= 1.0.0) mysql2 peek - peek-performance_bar (1.3.1) - peek (>= 0.1.0) peek-pg (1.3.0) concurrent-ruby concurrent-ruby-ext @@ -636,7 +636,7 @@ GEM parser unparser procto (0.0.3) - prometheus-client-mmap (0.9.1) + prometheus-client-mmap (0.9.3) pry (0.10.4) coderay (~> 1.1.0) method_source (~> 0.8.1) @@ -648,7 +648,7 @@ GEM pry (>= 0.9.10) public_suffix (3.0.2) pyu-ruby-sasl (0.0.3.3) - rack (1.6.9) + rack (1.6.10) rack-accept (0.4.5) rack (>= 0.4) rack-attack (4.4.1) @@ -696,7 +696,7 @@ GEM rainbow (2.2.2) rake raindrops (0.18.0) - rake (12.3.0) + rake (12.3.1) rb-fsevent (0.10.2) rb-inotify (0.9.10) ffi (>= 0.5.0, < 2) @@ -737,8 +737,9 @@ GEM declarative-option (< 0.2.0) uber (< 0.2.0) request_store (1.3.1) - responders (2.3.0) - railties (>= 4.2.0, < 5.1) + responders (2.4.0) + actionpack (>= 4.2.0, < 5.3) + railties (>= 4.2.0, < 5.3) rest-client (2.0.2) http-cookie (>= 1.0.2, < 2.0) mime-types (>= 1.16, < 4.0) @@ -812,7 +813,7 @@ GEM rubyzip (1.2.1) rufus-scheduler (3.4.0) et-orbi (~> 1.0) - rugged (0.27.0) + rugged (0.27.1) safe_yaml (1.0.4) sanitize (4.6.5) crass (~> 1.0.2) @@ -943,7 +944,7 @@ GEM unf (0.1.4) unf_ext unf_ext (0.0.7.5) - unicode-display_width (1.3.0) + unicode-display_width (1.3.2) unicorn (5.1.0) kgio (~> 2.6) raindrops (~> 0.7) @@ -970,7 +971,7 @@ GEM descendants_tracker (~> 0.0, >= 0.0.3) equalizer (~> 0.0, >= 0.0.9) vmstat (2.3.0) - warden (1.2.6) + warden (1.2.7) rack (>= 1.0) webmock (2.3.2) addressable (>= 2.3.6) @@ -1031,7 +1032,8 @@ DEPENDENCIES database_cleaner (~> 1.5.0) deckar01-task_list (= 2.0.0) default_value_for (~> 3.0.0) - devise (~> 4.2) + device_detector + devise (~> 4.4) devise-two-factor (~> 3.0.0) diffy (~> 3.1.0) doorkeeper (~> 4.3) @@ -1062,7 +1064,7 @@ DEPENDENCIES gettext (~> 3.2.2) gettext_i18n_rails (~> 1.8.0) gettext_i18n_rails_js (~> 1.3) - gitaly-proto (~> 0.96.0) + gitaly-proto (~> 0.99.0) github-linguist (~> 5.3.3) gitlab-flowdock-git-hook (~> 1.0.1) gitlab-gollum-lib (~> 4.2) @@ -1075,7 +1077,7 @@ DEPENDENCIES google-protobuf (= 3.5.1) gpgme grape (~> 1.0) - grape-entity (~> 0.6.0) + grape-entity (~> 0.7.1) grape-route-helpers (~> 2.1.0) grape_logging (~> 1.7) grpc (~> 1.11.0) @@ -1116,7 +1118,7 @@ DEPENDENCIES omniauth-azure-oauth2 (~> 0.0.9) omniauth-cas3 (~> 1.1.4) omniauth-facebook (~> 4.0.0) - omniauth-github (~> 1.1.1) + omniauth-github (~> 1.3) omniauth-gitlab (~> 1.0.2) omniauth-google-oauth2 (~> 0.5.3) omniauth-kerberos (~> 0.3.0) @@ -1129,14 +1131,13 @@ DEPENDENCIES peek (~> 1.0.1) peek-gc (~> 0.0.2) peek-mysql2 (~> 1.1.0) - peek-performance_bar (~> 1.3.0) peek-pg (~> 1.3.0) peek-rblineprof (~> 0.2.0) peek-redis (~> 1.2.0) peek-sidekiq (~> 1.0.3) pg (~> 0.18.2) premailer-rails (~> 1.9.7) - prometheus-client-mmap (~> 0.9.1) + prometheus-client-mmap (~> 0.9.3) pry-byebug (~> 3.4.1) pry-rails (~> 0.3.4) rack-attack (~> 4.4.1) diff --git a/Gemfile.rails5.lock b/Gemfile.rails5.lock index 18bbad88ec..3056b97ccd 100644 --- a/Gemfile.rails5.lock +++ b/Gemfile.rails5.lock @@ -69,7 +69,7 @@ GEM unf ast (2.4.0) atomic (1.1.100) - attr_encrypted (3.0.3) + attr_encrypted (3.1.0) encryptor (~> 3.0.0) attr_required (1.0.1) autoprefixer-rails (8.1.0.1) @@ -162,6 +162,7 @@ GEM activerecord (>= 3.2.0, < 5.2) descendants_tracker (0.0.4) thread_safe (~> 0.3, >= 0.3.1) + device_detector (1.0.1) devise (4.4.1) bcrypt (~> 3.0) orm_adapter (~> 0.1) @@ -291,9 +292,9 @@ GEM po_to_json (>= 1.0.0) rails (>= 3.2.0) gherkin-ruby (0.3.2) - gitaly-proto (0.94.0) + gitaly-proto (0.97.0) google-protobuf (~> 3.1) - grpc (~> 1.0) + grpc (~> 1.10) github-linguist (5.3.3) charlock_holmes (~> 0.7.5) escape_utils (~> 1.1.0) @@ -304,6 +305,17 @@ GEM flowdock (~> 0.7) gitlab-grit (>= 2.4.1) multi_json + gitlab-gollum-lib (4.2.7.2) + gemojione (~> 3.2) + github-markup (~> 1.6) + gollum-grit_adapter (~> 1.0) + nokogiri (>= 1.6.1, < 2.0) + rouge (~> 3.1) + sanitize (~> 2.1) + stringex (~> 2.6) + gitlab-gollum-rugged_adapter (0.4.4) + mime-types (>= 1.15) + rugged (~> 0.25) gitlab-grit (2.8.2) charlock_holmes (~> 0.6) diff-lcs (~> 1.1) @@ -323,17 +335,6 @@ GEM activesupport (>= 4.2.0) gollum-grit_adapter (1.0.1) gitlab-grit (~> 2.7, >= 2.7.1) - gollum-lib (4.2.7) - gemojione (~> 3.2) - github-markup (~> 1.6) - gollum-grit_adapter (~> 1.0) - nokogiri (>= 1.6.1, < 2.0) - rouge (~> 2.1) - sanitize (~> 2.1) - stringex (~> 2.6) - gollum-rugged_adapter (0.4.4) - mime-types (>= 1.15) - rugged (~> 0.25) gon (6.1.0) actionpack (>= 3.0) json @@ -375,7 +376,7 @@ GEM rake grape_logging (1.7.0) grape - grpc (1.10.0) + grpc (1.11.0) google-protobuf (~> 3.1) googleapis-common-protos-types (~> 1.0.0) googleauth (>= 0.5.1, < 0.7) @@ -554,9 +555,6 @@ GEM jwt (>= 1.5) omniauth (>= 1.1.1) omniauth-oauth2 (>= 1.5) - omniauth-jwt (0.0.2) - jwt - omniauth (~> 1.1) omniauth-kerberos (0.3.0) omniauth-multipassword timfel-krb5-auth (~> 0.8) @@ -602,8 +600,6 @@ GEM atomic (>= 1.0.0) mysql2 peek - peek-performance_bar (1.3.1) - peek (>= 0.1.0) peek-pg (1.3.0) concurrent-ruby concurrent-ruby-ext @@ -678,6 +674,10 @@ GEM bundler (>= 1.3.0) railties (= 5.0.6) sprockets-rails (>= 2.0.0) + rails-controller-testing (1.0.2) + actionpack (~> 5.x, >= 5.0.1) + actionview (~> 5.x, >= 5.0.1) + activesupport (~> 5.x) rails-deprecated_sanitizer (1.0.3) activesupport (>= 4.2.0.alpha) rails-dom-testing (2.0.3) @@ -748,7 +748,7 @@ GEM retriable (3.1.1) rinku (2.0.4) rotp (2.1.2) - rouge (2.2.1) + rouge (3.1.1) rqrcode (0.10.1) chunky_png (~> 1.0) rqrcode-rails3 (0.1.7) @@ -874,7 +874,7 @@ GEM simplecov-html (~> 0.10.0) simplecov-html (0.10.2) slack-notifier (1.5.1) - spinach (0.10.1) + spinach (0.8.10) colorize gherkin-ruby (>= 0.3.2) json @@ -1002,7 +1002,7 @@ DEPENDENCIES asciidoctor (~> 1.5.6) asciidoctor-plantuml (= 0.0.8) asset_sync (~> 2.2.0) - attr_encrypted (~> 3.0.0) + attr_encrypted (~> 3.1.0) awesome_print (~> 1.2.0) babosa (~> 1.0.2) base32 (~> 0.3.0) @@ -1031,6 +1031,7 @@ DEPENDENCIES database_cleaner (~> 1.5.0) deckar01-task_list (= 2.0.0) default_value_for (~> 3.0.5) + device_detector devise (~> 4.2) devise-two-factor (~> 3.0.0) diffy (~> 3.1.0) @@ -1062,14 +1063,14 @@ DEPENDENCIES gettext (~> 3.2.2) gettext_i18n_rails (~> 1.8.0) gettext_i18n_rails_js (~> 1.3) - gitaly-proto (~> 0.94.0) + gitaly-proto (~> 0.97.0) github-linguist (~> 5.3.3) gitlab-flowdock-git-hook (~> 1.0.1) + gitlab-gollum-lib (~> 4.2) + gitlab-gollum-rugged_adapter (~> 0.4.4) gitlab-markup (~> 1.6.2) gitlab-styles (~> 2.3) gitlab_omniauth-ldap (~> 2.0.4) - gollum-lib (~> 4.2) - gollum-rugged_adapter (~> 0.4.4) gon (~> 6.1.0) google-api-client (~> 0.19.8) google-protobuf (= 3.5.1) @@ -1078,7 +1079,7 @@ DEPENDENCIES grape-entity (~> 0.6.0) grape-route-helpers (~> 2.1.0) grape_logging (~> 1.7) - grpc (~> 1.10.0) + grpc (~> 1.11.0) haml_lint (~> 0.26.0) hamlit (~> 2.6.1) hashie-forbidden_attributes @@ -1119,7 +1120,6 @@ DEPENDENCIES omniauth-github (~> 1.1.1) omniauth-gitlab (~> 1.0.2) omniauth-google-oauth2 (~> 0.5.3) - omniauth-jwt (~> 0.0.2) omniauth-kerberos (~> 0.3.0) omniauth-oauth2-generic (~> 0.2.2) omniauth-saml (~> 1.10) @@ -1130,7 +1130,6 @@ DEPENDENCIES peek (~> 1.0.1) peek-gc (~> 0.0.2) peek-mysql2 (~> 1.1.0) - peek-performance_bar (~> 1.3.0) peek-pg (~> 1.3.0) peek-rblineprof (~> 0.2.0) peek-redis (~> 1.2.0) @@ -1145,6 +1144,7 @@ DEPENDENCIES rack-oauth2 (~> 1.2.1) rack-proxy (~> 0.6.0) rails (= 5.0.6) + rails-controller-testing rails-deprecated_sanitizer (~> 1.0.3) rails-i18n (~> 5.1) rainbow (~> 2.2) @@ -1161,7 +1161,7 @@ DEPENDENCIES redis-rails (~> 5.0.2) request_store (~> 1.3) responders (~> 2.0) - rouge (~> 2.0) + rouge (~> 3.1) rqrcode-rails3 (~> 0.1.7) rspec-parameterized rspec-rails (~> 3.6.0) diff --git a/LICENSE b/LICENSE index 15c423e141..a42e07dfe9 100644 --- a/LICENSE +++ b/LICENSE @@ -1,25 +1,12 @@ -Copyright (c) 2011-2017 GitLab B.V. +Copyright GitLab B.V. -With regard to the GitLab Software: +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +--- -For all third party components incorporated into the GitLab Software, those -components are licensed under the original license provided by the owner of the -applicable component. \ No newline at end of file +All Documentation content that resides under the doc/ directory of this +repository is licensed under Creative Commons: CC BY-SA 4.0. diff --git a/README.md b/README.md index 9ead6d51c5..9c1aad6530 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,12 @@ You can access a new installation with the login **`root`** and password **`5ive GitLab is an open source project and we are very happy to accept community contributions. Please refer to [CONTRIBUTING.md](/CONTRIBUTING.md) for details. +## Licensing + +GitLab Community Edition (CE) is available freely under the MIT Expat license. + +All third party components incorporated into the GitLab Software are licensed under the original license provided by the owner of the applicable component. + ## Install a development environment To work on GitLab itself, we recommend setting up your development environment with [the GitLab Development Kit](https://gitlab.com/gitlab-org/gitlab-development-kit). diff --git a/VERSION b/VERSION index bef54bc566..30ba6e768c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -10.7.7 +10.8.7 diff --git a/app/assets/images/ext_snippet_icons/ext_snippet_icons.png b/app/assets/images/ext_snippet_icons/ext_snippet_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..20380adc4e52eed8376e2e6371e646b0f76b8c23 GIT binary patch literal 1018 zcmeAS@N?(olHy`uVBq!ia0vp^3P7B|!3-q5|1_)uQi}q7LR^8gzP`R57{D1o9*_+I z#>U3BwzfbK2L}g;G9YPUVgg|U)fgBU0NFs&(9jU57|4KV1ag7E#>NK11&Tv}k&zKZ z7my270AvG6phloL&>SEGA_5eIh}iS-eFVDFv?Rzcm_h#Lcd_4}FY~Kw@vyvOzw_#v z@Y8e010J;XDoO5{>*>gOc<1JYSq3XztW4I0;oq>VrlBbJfh{y4_ z)2`2&Z6M&*evjqGjI;vA>7}vh<&!J_hj*(mad_YRU2}40!Nk6c`i5uH9|){1;dx^i z7S1F*Nof8F$0K(h8(-s>P@I1v;z-Y-S3JLKMb0V8dTf_kyzhd(n0en})`$kB2EN?3 z7dp;qUsli1mh%#LcI#rAWzi*G%P-z0f;AQId-6P%&rejUVCbJ98NF2?e~Z`eq(Iq7 zj}-}L#YEI3dQ}|SnA)_t^A|=*?0omkYO#UJ!sVYd=I^yV=x|ENs_BfA=x)WT60WB&3uF(RNLwpCIq3?&^n*X|`Rmi`SJ--e+GTH2 zZ6&q-?)1Nkw=Sn_F8#2}eurA?`PILgdvvyh@z0ZLeemwfydO(y{s^x>UOv@ZVDs{@ zw2Vs|j)!eqpdssAzU8`9Y z@#Rv_wRI<^v7X6jzp-rZB-cd+$;y8=*t0!mQ}*r2uy2_BJh0^XaT$JVuW4+t|GAWJ z&3`?GbN+Mdhz=&1wdZaGH|y+{eX=OPvT*xi;fCY)=6cI^Fs*z&>%GRA##n`1hsKv5 zCe6Hjom=DQ$wSSq%v@i;Db`%eapCUiEI7aE_v8a&xA^wwXRdoGWV7V5{GQ`Nu6ysc zuKA%kN3}8MSv{C+5go=b2_I9{uOja5?7mHV<=` z9ZvJaaw`=t2(zy9R#S{MpWr=RU_K|K;(}#cbGvnOWrVga;OAe;$yBsBKIQ>yxn2I= v!`h3AbSg|sPrtigp3{AyJ>Sxv{SPmj^lgFEUg4F%?7`sa>gTe~DWM4fDe0P< literal 0 HcmV?d00001 diff --git a/app/assets/images/ext_snippet_icons/logo.png b/app/assets/images/ext_snippet_icons/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..794c9cc2dbc9e3416c10455a10baabf94ae14fe0 GIT binary patch literal 494 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQas{?#OT!HjsSIx&R8h;k6{aK_2 zA{VMXcGd(jmZ&{)21;rECWQfJT)MC>7@zO3*^4?*8m9u z%>koFE}GB1HGpiOAwcq_k2+BHZ!XxDY_%6Y8h@6l{i#v=SD^MWTH{LsNZG3ZjW=QH zf99+G=~MgDrS_*p?N_GSpP6cZW~dqL`w|9pu4+k;Uoe9M`x)!sDRzH9KRvN~*5pVZ zNp8juFYjNweCg<}8PglGLiBaCgue^Dy$jTE*3-o?MB;L7Z}_A`4g${AvIdrU=REHw zCl}q=`~Rds@@}4*4|Pi_Lv4kGSb`4O>3OTKO#Kw{gk^8kx4NTt+HxQKlUn0xHHFj_TkBwb9E+_ zpI)}bdxGj+lg({5vu^s8hQ+=A(UU4NYi;Ovh3czYBP|~NiN5^r@AB@L|7(6~&C}Sn z_VK?vxw?Hzl%7Z&m>A%fk)r1-TYmn>&gix8_CJ}F7rw5Dq0mKo*&cQ-cc8}@JYD@< J);T3K0RS&6 childNode.nodeType === 3, - ); + const isEmojiUnicode = + this.childNodes && + Array.prototype.every.call(this.childNodes, childNode => childNode.nodeType === 3); const hasImageFallback = fallbackSrc && fallbackSrc.length > 0; const hasCssSpriteFalback = fallbackSpriteClass && fallbackSpriteClass.length > 0; - if ( - emojiUnicode && - isEmojiUnicode && - !isEmojiUnicodeSupported(emojiUnicode, unicodeVersion) - ) { + if (emojiUnicode && isEmojiUnicode && !isEmojiUnicodeSupported(emojiUnicode, unicodeVersion)) { // CSS sprite fallback takes precedence over image fallback if (hasCssSpriteFalback) { + if (!gon.emoji_sprites_css_added && gon.emoji_sprites_css_path) { + const emojiSpriteLinkTag = document.createElement('link'); + emojiSpriteLinkTag.setAttribute('rel', 'stylesheet'); + emojiSpriteLinkTag.setAttribute('href', gon.emoji_sprites_css_path); + document.head.appendChild(emojiSpriteLinkTag); + gon.emoji_sprites_css_added = true; + } // IE 11 doesn't like adding multiple at once :( this.classList.add('emoji-icon'); this.classList.add(fallbackSpriteClass); diff --git a/app/assets/javascripts/blob/file_template_mediator.js b/app/assets/javascripts/blob/file_template_mediator.js index 030ca1907e..ff1cbcad14 100644 --- a/app/assets/javascripts/blob/file_template_mediator.js +++ b/app/assets/javascripts/blob/file_template_mediator.js @@ -94,7 +94,7 @@ export default class FileTemplateMediator { const hash = urlPieces[1]; if (hash === 'preview') { this.hideTemplateSelectorMenu(); - } else if (hash === 'editor') { + } else if (hash === 'editor' && !this.typeSelector.isHidden()) { this.showTemplateSelectorMenu(); } }); diff --git a/app/assets/javascripts/blob/file_template_selector.js b/app/assets/javascripts/blob/file_template_selector.js index e52cf249f3..02228434a2 100644 --- a/app/assets/javascripts/blob/file_template_selector.js +++ b/app/assets/javascripts/blob/file_template_selector.js @@ -32,6 +32,10 @@ export default class FileTemplateSelector { } } + isHidden() { + return this.$wrapper.hasClass('hidden'); + } + getToggleText() { return this.$dropdownToggleText.text(); } diff --git a/app/assets/javascripts/boards/components/board.js b/app/assets/javascripts/boards/components/board.js index 3cffd91716..bea818010a 100644 --- a/app/assets/javascripts/boards/components/board.js +++ b/app/assets/javascripts/boards/components/board.js @@ -5,7 +5,7 @@ import Sortable from 'vendor/Sortable'; import Vue from 'vue'; import AccessorUtilities from '../../lib/utils/accessor'; import boardList from './board_list.vue'; -import boardBlankState from './board_blank_state'; +import BoardBlankState from './board_blank_state.vue'; import './board_delete'; const Store = gl.issueBoards.BoardsStore; @@ -18,7 +18,7 @@ gl.issueBoards.Board = Vue.extend({ components: { boardList, 'board-delete': gl.issueBoards.BoardDelete, - boardBlankState, + BoardBlankState, }, props: { list: Object, diff --git a/app/assets/javascripts/boards/components/board_blank_state.js b/app/assets/javascripts/boards/components/board_blank_state.vue similarity index 61% rename from app/assets/javascripts/boards/components/board_blank_state.js rename to app/assets/javascripts/boards/components/board_blank_state.vue index 72db626d3c..2049eeb9c3 100644 --- a/app/assets/javascripts/boards/components/board_blank_state.js +++ b/app/assets/javascripts/boards/components/board_blank_state.vue @@ -1,42 +1,11 @@ + + + diff --git a/app/assets/javascripts/boards/components/modal/empty_state.js b/app/assets/javascripts/boards/components/modal/empty_state.js index e571b11a83..9e37f95cdd 100644 --- a/app/assets/javascripts/boards/components/modal/empty_state.js +++ b/app/assets/javascripts/boards/components/modal/empty_state.js @@ -1,9 +1,9 @@ import Vue from 'vue'; - -const ModalStore = gl.issueBoards.ModalStore; +import ModalStore from '../../stores/modal_store'; +import modalMixin from '../../mixins/modal_mixins'; gl.issueBoards.ModalEmptyState = Vue.extend({ - mixins: [gl.issueBoards.ModalMixins], + mixins: [modalMixin], data() { return ModalStore.store; }, diff --git a/app/assets/javascripts/boards/components/modal/footer.js b/app/assets/javascripts/boards/components/modal/footer.js index 03cd7ef65c..9735e0ddac 100644 --- a/app/assets/javascripts/boards/components/modal/footer.js +++ b/app/assets/javascripts/boards/components/modal/footer.js @@ -3,11 +3,11 @@ import Flash from '../../../flash'; import { __ } from '../../../locale'; import './lists_dropdown'; import { pluralize } from '../../../lib/utils/text_utility'; - -const ModalStore = gl.issueBoards.ModalStore; +import ModalStore from '../../stores/modal_store'; +import modalMixin from '../../mixins/modal_mixins'; gl.issueBoards.ModalFooter = Vue.extend({ - mixins: [gl.issueBoards.ModalMixins], + mixins: [modalMixin], data() { return { modal: ModalStore.store, diff --git a/app/assets/javascripts/boards/components/modal/header.js b/app/assets/javascripts/boards/components/modal/header.js index 31f59d295b..67c29ebca7 100644 --- a/app/assets/javascripts/boards/components/modal/header.js +++ b/app/assets/javascripts/boards/components/modal/header.js @@ -1,11 +1,11 @@ import Vue from 'vue'; import modalFilters from './filters'; import './tabs'; - -const ModalStore = gl.issueBoards.ModalStore; +import ModalStore from '../../stores/modal_store'; +import modalMixin from '../../mixins/modal_mixins'; gl.issueBoards.ModalHeader = Vue.extend({ - mixins: [gl.issueBoards.ModalMixins], + mixins: [modalMixin], props: { projectId: { type: Number, diff --git a/app/assets/javascripts/boards/components/modal/index.js b/app/assets/javascripts/boards/components/modal/index.js index d825ff3858..3083b3e440 100644 --- a/app/assets/javascripts/boards/components/modal/index.js +++ b/app/assets/javascripts/boards/components/modal/index.js @@ -7,8 +7,7 @@ import './header'; import './list'; import './footer'; import './empty_state'; - -const ModalStore = gl.issueBoards.ModalStore; +import ModalStore from '../../stores/modal_store'; gl.issueBoards.IssuesModal = Vue.extend({ props: { diff --git a/app/assets/javascripts/boards/components/modal/list.js b/app/assets/javascripts/boards/components/modal/list.js index 7c62134b3a..6b04a6c7a6 100644 --- a/app/assets/javascripts/boards/components/modal/list.js +++ b/app/assets/javascripts/boards/components/modal/list.js @@ -2,8 +2,7 @@ import Vue from 'vue'; import bp from '../../../breakpoints'; - -const ModalStore = gl.issueBoards.ModalStore; +import ModalStore from '../../stores/modal_store'; gl.issueBoards.ModalList = Vue.extend({ props: { diff --git a/app/assets/javascripts/boards/components/modal/lists_dropdown.js b/app/assets/javascripts/boards/components/modal/lists_dropdown.js index 4684ea7664..e644de2d4f 100644 --- a/app/assets/javascripts/boards/components/modal/lists_dropdown.js +++ b/app/assets/javascripts/boards/components/modal/lists_dropdown.js @@ -1,6 +1,5 @@ import Vue from 'vue'; - -const ModalStore = gl.issueBoards.ModalStore; +import ModalStore from '../../stores/modal_store'; gl.issueBoards.ModalFooterListsDropdown = Vue.extend({ data() { diff --git a/app/assets/javascripts/boards/components/modal/tabs.js b/app/assets/javascripts/boards/components/modal/tabs.js index 3e5d08e3d7..b6465a88e5 100644 --- a/app/assets/javascripts/boards/components/modal/tabs.js +++ b/app/assets/javascripts/boards/components/modal/tabs.js @@ -1,9 +1,9 @@ import Vue from 'vue'; - -const ModalStore = gl.issueBoards.ModalStore; +import ModalStore from '../../stores/modal_store'; +import modalMixin from '../../mixins/modal_mixins'; gl.issueBoards.ModalTabs = Vue.extend({ - mixins: [gl.issueBoards.ModalMixins], + mixins: [modalMixin], data() { return ModalStore.store; }, diff --git a/app/assets/javascripts/boards/index.js b/app/assets/javascripts/boards/index.js index 8b1c14c04f..a6f8681cfa 100644 --- a/app/assets/javascripts/boards/index.js +++ b/app/assets/javascripts/boards/index.js @@ -17,9 +17,9 @@ import './models/milestone'; import './models/project'; import './models/assignee'; import './stores/boards_store'; -import './stores/modal_store'; +import ModalStore from './stores/modal_store'; import BoardService from './services/board_service'; -import './mixins/modal_mixins'; +import modalMixin from './mixins/modal_mixins'; import './mixins/sortable_default_options'; import './filters/due_date_filters'; import './components/board'; @@ -31,7 +31,6 @@ import '~/vue_shared/vue_resource_interceptor'; // eslint-disable-line import/fi export default () => { const $boardApp = document.getElementById('board-app'); const Store = gl.issueBoards.BoardsStore; - const ModalStore = gl.issueBoards.ModalStore; window.gl = window.gl || {}; @@ -176,7 +175,7 @@ export default () => { gl.IssueBoardsModalAddBtn = new Vue({ el: document.getElementById('js-add-issues-btn'), - mixins: [gl.issueBoards.ModalMixins], + mixins: [modalMixin], data() { return { modal: ModalStore.store, diff --git a/app/assets/javascripts/boards/mixins/modal_mixins.js b/app/assets/javascripts/boards/mixins/modal_mixins.js index 2b0a1aaa89..6c97e1629b 100644 --- a/app/assets/javascripts/boards/mixins/modal_mixins.js +++ b/app/assets/javascripts/boards/mixins/modal_mixins.js @@ -1,6 +1,6 @@ -const ModalStore = gl.issueBoards.ModalStore; +import ModalStore from '../stores/modal_store'; -gl.issueBoards.ModalMixins = { +export default { methods: { toggleModal(toggle) { ModalStore.store.showAddIssuesModal = toggle; diff --git a/app/assets/javascripts/boards/stores/modal_store.js b/app/assets/javascripts/boards/stores/modal_store.js index 4fdc925c82..a4220cd840 100644 --- a/app/assets/javascripts/boards/stores/modal_store.js +++ b/app/assets/javascripts/boards/stores/modal_store.js @@ -1,6 +1,3 @@ -window.gl = window.gl || {}; -window.gl.issueBoards = window.gl.issueBoards || {}; - class ModalStore { constructor() { this.store = { @@ -95,4 +92,4 @@ class ModalStore { } } -gl.issueBoards.ModalStore = new ModalStore(); +export default new ModalStore(); diff --git a/app/assets/javascripts/branches/branches_delete_modal.js b/app/assets/javascripts/branches/branches_delete_modal.js index 839e369eaf..f34496f84c 100644 --- a/app/assets/javascripts/branches/branches_delete_modal.js +++ b/app/assets/javascripts/branches/branches_delete_modal.js @@ -16,6 +16,7 @@ class DeleteModal { bindEvents() { this.$toggleBtns.on('click', this.setModalData.bind(this)); this.$confirmInput.on('input', this.setDeleteDisabled.bind(this)); + this.$deleteBtn.on('click', this.setDisableDeleteButton.bind(this)); } setModalData(e) { @@ -30,6 +31,16 @@ class DeleteModal { this.$deleteBtn.attr('disabled', e.currentTarget.value !== this.branchName); } + setDisableDeleteButton(e) { + if (this.$deleteBtn.is('[disabled]')) { + e.preventDefault(); + e.stopPropagation(); + return false; + } + + return true; + } + updateModal() { this.$branchName.text(this.branchName); this.$confirmInput.val(''); diff --git a/app/assets/javascripts/clusters/clusters_index.js b/app/assets/javascripts/clusters/clusters_index.js index 2e3ad24437..1e5c733d15 100644 --- a/app/assets/javascripts/clusters/clusters_index.js +++ b/app/assets/javascripts/clusters/clusters_index.js @@ -1,20 +1,24 @@ -import Flash from '../flash'; -import { s__ } from '../locale'; -import setupToggleButtons from '../toggle_buttons'; +import createFlash from '~/flash'; +import { __ } from '~/locale'; +import setupToggleButtons from '~/toggle_buttons'; +import gcpSignupOffer from '~/clusters/components/gcp_signup_offer'; + import ClustersService from './services/clusters_service'; export default () => { const clusterList = document.querySelector('.js-clusters-list'); + + gcpSignupOffer(); + // The empty state won't have a clusterList if (clusterList) { - setupToggleButtons( - document.querySelector('.js-clusters-list'), - (value, toggle) => - ClustersService.updateCluster(toggle.dataset.endpoint, { cluster: { enabled: value } }) - .catch((err) => { - Flash(s__('ClusterIntegration|Something went wrong on our end.')); - throw err; - }), + setupToggleButtons(document.querySelector('.js-clusters-list'), (value, toggle) => + ClustersService.updateCluster(toggle.dataset.endpoint, { cluster: { enabled: value } }).catch( + err => { + createFlash(__('Something went wrong on our end.')); + throw err; + }, + ), ); } }; diff --git a/app/assets/javascripts/clusters/components/applications.vue b/app/assets/javascripts/clusters/components/applications.vue index f8dcdf3f60..9c12b89240 100644 --- a/app/assets/javascripts/clusters/components/applications.vue +++ b/app/assets/javascripts/clusters/components/applications.vue @@ -1,96 +1,102 @@