summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md239
-rw-r--r--CONTRIBUTING.md5
-rw-r--r--Gemfile1
-rw-r--r--Gemfile.lock4
-rw-r--r--Gemfile.rails5.lock4
-rw-r--r--VERSION2
-rw-r--r--app/assets/javascripts/commons/polyfills.js1
-rw-r--r--app/assets/javascripts/ide/ide_router.js22
-rw-r--r--app/assets/javascripts/profile/profile.js4
-rw-r--r--app/assets/stylesheets/framework/dropdowns.scss7
-rw-r--r--app/assets/stylesheets/pages/reports.scss159
-rw-r--r--app/controllers/projects/raw_controller.rb3
-rw-r--r--app/helpers/blob_helper.rb31
-rw-r--r--app/helpers/workhorse_helper.rb4
-rw-r--r--app/models/user.rb1
-rw-r--r--app/services/projects/import_service.rb2
-rw-r--r--app/services/prometheus/adapter_service.rb2
-rw-r--r--app/services/protected_branches/access_level_params.rb2
-rw-r--r--app/services/protected_branches/api_service.rb2
-rw-r--r--app/services/protected_branches/create_service.rb2
-rw-r--r--app/services/protected_branches/destroy_service.rb2
-rw-r--r--app/services/protected_branches/legacy_api_create_service.rb2
-rw-r--r--app/services/protected_branches/legacy_api_update_service.rb2
-rw-r--r--app/services/protected_branches/update_service.rb2
-rw-r--r--app/services/protected_tags/create_service.rb2
-rw-r--r--app/services/protected_tags/destroy_service.rb2
-rw-r--r--app/services/protected_tags/update_service.rb2
-rw-r--r--app/services/quick_actions/interpret_service.rb2
-rw-r--r--app/services/search/global_service.rb2
-rw-r--r--app/services/search/group_service.rb2
-rw-r--r--app/services/search/project_service.rb2
-rw-r--r--app/services/search/snippet_service.rb2
-rw-r--r--app/services/tags/create_service.rb2
-rw-r--r--app/services/tags/destroy_service.rb2
-rw-r--r--app/services/test_hooks/base_service.rb2
-rw-r--r--app/services/test_hooks/project_service.rb2
-rw-r--r--app/services/test_hooks/system_service.rb2
-rw-r--r--app/services/users/activity_service.rb2
-rw-r--r--app/services/users/build_service.rb2
-rw-r--r--app/services/users/create_service.rb2
-rw-r--r--app/services/users/destroy_service.rb2
-rw-r--r--app/services/users/last_push_event_service.rb2
-rw-r--r--app/services/users/migrate_to_ghost_user_service.rb2
-rw-r--r--app/services/users/refresh_authorized_projects_service.rb2
-rw-r--r--app/services/users/respond_to_terms_service.rb2
-rw-r--r--app/services/users/update_service.rb2
-rw-r--r--app/services/wiki_pages/base_service.rb2
-rw-r--r--app/services/wiki_pages/create_service.rb2
-rw-r--r--app/services/wiki_pages/destroy_service.rb2
-rw-r--r--app/services/wiki_pages/update_service.rb2
-rw-r--r--app/views/projects/artifacts/file.html.haml2
-rw-r--r--app/views/projects/blob/_header.html.haml2
-rw-r--r--changelogs/unreleased/18141-osw-use-monospaced-font-on-diffs-commit-ref.yml5
-rw-r--r--changelogs/unreleased/19439-api-file-sha56-and-head.yml5
-rw-r--r--changelogs/unreleased/19468-add_readme_when_creating_project.yml5
-rw-r--r--changelogs/unreleased/20357.yml5
-rw-r--r--changelogs/unreleased/23705-add-single-file-download-in-repo.yml5
-rw-r--r--changelogs/unreleased/31583-osw-gfm-complete-status-indication.yml5
-rw-r--r--changelogs/unreleased/35158-snippets-api-visibility.yml5
-rw-r--r--changelogs/unreleased/36234-nav-add-groups-dropdown.yml5
-rw-r--r--changelogs/unreleased/36907-fix-new-issue-link-from-failed-job.yml5
-rw-r--r--changelogs/unreleased/37561-add-id-settings.yml5
-rw-r--r--changelogs/unreleased/39543-milestone-page-list-redesign.yml5
-rw-r--r--changelogs/unreleased/39604-update-top-right-avatar-after-changing-avatar.yml5
-rw-r--r--changelogs/unreleased/40005-u2f-unspported-browsers.yml5
-rw-r--r--changelogs/unreleased/40484-ordered-lists-copy-gfm.yml5
-rw-r--r--changelogs/unreleased/42342-teams-pipeline-notifications.yml5
-rw-r--r--changelogs/unreleased/43270-import-with-milestones-failing.yml5
-rw-r--r--changelogs/unreleased/43446-new-cluster-page-tabs.yml5
-rw-r--r--changelogs/unreleased/43472-remove-environment-scope-field-on-cluster-creation-form-for-core-starter-plans.yml5
-rw-r--r--changelogs/unreleased/44674-use-one-column-form-layout-on-admin-area-settings-page.yml5
-rw-r--r--changelogs/unreleased/44697-when-editing-a-comment-in-an-issue-the-preview-mode-is-toggled-in-the-main-textarea.yml6
-rw-r--r--changelogs/unreleased/44725-expire_correct_methods_after_change_head.yml5
-rw-r--r--changelogs/unreleased/45400-automatically-created-mr-uses-wrong-target-branch-when-branching-from-tag.yml5
-rw-r--r--changelogs/unreleased/45443-unable-to-save-user-profile-update-with-safari.yml5
-rw-r--r--changelogs/unreleased/45487-slack-tag-push-notifs.yml5
-rw-r--r--changelogs/unreleased/45557-machine-type-help-links.yml6
-rw-r--r--changelogs/unreleased/45575-invalid-characters-signup.yml5
-rw-r--r--changelogs/unreleased/45703-open-web-ide-file-tree.yml5
-rw-r--r--changelogs/unreleased/45738-add-environment-drop-down-to-metrics-dashboard.yml5
-rw-r--r--changelogs/unreleased/45933-webide-fade-uneditable-area.yml5
-rw-r--r--changelogs/unreleased/46202-webide-file-states.yml5
-rw-r--r--changelogs/unreleased/46246-gitlab-project-export-should-use-object-storage.yml5
-rw-r--r--changelogs/unreleased/46396-recognise-when-a-user-is-trying-to-validate-a-private-ssh-key-part-1.yml5
-rw-r--r--changelogs/unreleased/46396-recognise-when-a-user-is-trying-to-validate-a-private-ssh-key.yml5
-rw-r--r--changelogs/unreleased/46429-creating-a-deploy-token-doesn-t-bring-back-to-the-creation-page.yml5
-rw-r--r--changelogs/unreleased/46546-do-not-pre-select-previous-user-s-when-creating-protected-branches.yml5
-rw-r--r--changelogs/unreleased/46571-webhooks-nil-password.yml5
-rw-r--r--changelogs/unreleased/46783-removed-omniauth-provider-causing-invalid-application-setting.yml5
-rw-r--r--changelogs/unreleased/46831-remove-unused-bootstrap-component-css.yml5
-rw-r--r--changelogs/unreleased/46861-issuable-title-with-longer-username.yml5
-rw-r--r--changelogs/unreleased/46963-add_readme_button_for_non_empty_project.yml5
-rw-r--r--changelogs/unreleased/47040-inconsistent-job-list-in-job-details-view.yml5
-rw-r--r--changelogs/unreleased/47050-quick-actions-case-insensitive.yml5
-rw-r--r--changelogs/unreleased/47145-quick-actions-confidential.yml5
-rw-r--r--changelogs/unreleased/47221-explain-what-groups-are-in-the-new-group-page.yml5
-rw-r--r--changelogs/unreleased/47274-help-users-find-our-contributing-page.yml5
-rw-r--r--changelogs/unreleased/47462-issues-disabled-group-page.yml6
-rw-r--r--changelogs/unreleased/47631-operations-kubernetes-option-is-always-visible-when-repository-or-builds-are-disabled.yml5
-rw-r--r--changelogs/unreleased/47794-environment-scope-cluster-page.yml6
-rw-r--r--changelogs/unreleased/47865-changelog-for-style-updates.yml5
-rw-r--r--changelogs/unreleased/48036-fix-web-ide-blob-crash.yml5
-rw-r--r--changelogs/unreleased/48050-add-full-commit-sha.yml5
-rw-r--r--changelogs/unreleased/48100-fix-branch-not-shown.yml6
-rw-r--r--changelogs/unreleased/48153-date-selection-dialog-broken-when-creating-a-new-milestone.yml5
-rw-r--r--changelogs/unreleased/48237-toggle-file-comments.yml5
-rw-r--r--changelogs/unreleased/48378-avatar-upload.yml5
-rw-r--r--changelogs/unreleased/48497-merge-request-refactor-displays-changes-dropdown-incorrectly.yml5
-rw-r--r--changelogs/unreleased/48515-sql-queries-are-not-shown-from-the-performance-bar-in-safari.yml5
-rw-r--r--changelogs/unreleased/48578-disable-gcp-free-credit-banner-at-instance-level.yml5
-rw-r--r--changelogs/unreleased/48603-merge-request-refactor-title-and-copy-to-clipboard-button-are-behind-the-action-buttons.yml5
-rw-r--r--changelogs/unreleased/48634-header-navbar-line-separator-is-missing.yml5
-rw-r--r--changelogs/unreleased/48661-node-6-and-7-compatibility-broken-by-recent-monaco-editor-upgrade.yml5
-rw-r--r--changelogs/unreleased/48670-application-settings-may-not-be-invalidated-if-migrations-are-run.yml6
-rw-r--r--changelogs/unreleased/48677-also-check-auto_sign_in_with_provider.yml5
-rw-r--r--changelogs/unreleased/48789-remove-event-listeners-scroll.yml6
-rw-r--r--changelogs/unreleased/48825-performance.yml8
-rw-r--r--changelogs/unreleased/48894-fix-rss-button-interaction.yml5
-rw-r--r--changelogs/unreleased/48951-clean-up.yml5
-rw-r--r--changelogs/unreleased/48978-fix-helm-installation-on-cluster.yml5
-rw-r--r--changelogs/unreleased/add-missing-index-for-deployments.yml5
-rw-r--r--changelogs/unreleased/add-more-rebase-logging.yml5
-rw-r--r--changelogs/unreleased/add-title-placeholder-for-new-issues.yml5
-rw-r--r--changelogs/unreleased/add-total-time-flat-printer-for-profiling.yml6
-rw-r--r--changelogs/unreleased/an-no-healthcheck-until-brooklyn.yml5
-rw-r--r--changelogs/unreleased/author-doc-fix.yml5
-rw-r--r--changelogs/unreleased/backstage-gb-stages-position-migration-clean-up.yml5
-rw-r--r--changelogs/unreleased/bjk-48176_ruby_gc.yml5
-rw-r--r--changelogs/unreleased/blackst0ne-add-gemfile-rails5-lock-check.yml5
-rw-r--r--changelogs/unreleased/blackst0ne-bump-grape-path-helpers-gem-to-1-0-5.yml5
-rw-r--r--changelogs/unreleased/blackst0ne-fix-protect-from-forgery-in-application-controller.yml5
-rw-r--r--changelogs/unreleased/blackst0ne-rails5-activerecord-statementinvalid-mysql2-error-expression-1-of-select-list-is-not-in-group-by-clause.yml5
-rw-r--r--changelogs/unreleased/blackst0ne-rails5-expected-search-search-seed_project-got-nil.yml5
-rw-r--r--changelogs/unreleased/blackst0ne-rails5-expected-the-response-to-have-status-code-ok-but-it-was-404.yml5
-rw-r--r--changelogs/unreleased/blackst0ne-rails5-fix-blob-requests-format.yml5
-rw-r--r--changelogs/unreleased/blackst0ne-rails5-fix-data-store-spec.yml5
-rw-r--r--changelogs/unreleased/blackst0ne-rails5-fix-optimistic-lock-values.yml5
-rw-r--r--changelogs/unreleased/blackst0ne-rails5-fix-pipeline-schedules-controller-spec.yml5
-rw-r--r--changelogs/unreleased/blackst0ne-rails5-fix-snippets-finder.yml5
-rw-r--r--changelogs/unreleased/blackst0ne-rails5-found-new-routes-that-could-cause-conflicts-with-existing-namespaced-routes.yml5
-rw-r--r--changelogs/unreleased/blackst0ne-rails5-invalid-single-table-inheritance-type-group-is-not-a-subclass-of-namespace.yml6
-rw-r--r--changelogs/unreleased/blackst0ne-rails5-set-request-format-in--commits-controller.yml5
-rw-r--r--changelogs/unreleased/build-chunks-on-object-storage.yml6
-rw-r--r--changelogs/unreleased/bump-carrierwave-to-1-2-3.yml5
-rw-r--r--changelogs/unreleased/bvl-fix-maintainer-push-rejected.yml6
-rw-r--r--changelogs/unreleased/bvl-graphql-nested-merge-request.yml5
-rw-r--r--changelogs/unreleased/bvl-graphql-permissions.yml5
-rw-r--r--changelogs/unreleased/bvl-graphql-pipeline-lists.yml5
-rw-r--r--changelogs/unreleased/bvl-preload-parents-after-pagination.yml5
-rw-r--r--changelogs/unreleased/bw-enable-commonmark.yml5
-rw-r--r--changelogs/unreleased/cache-doc-fix.yml5
-rw-r--r--changelogs/unreleased/ce-5024-filename-search.yml5
-rw-r--r--changelogs/unreleased/close-revoke-deploy-token-modal-on-escape-keypress.yml5
-rw-r--r--changelogs/unreleased/commits_api_with_stats.yml5
-rw-r--r--changelogs/unreleased/cr-add-locked-state-to-MR.yml5
-rw-r--r--changelogs/unreleased/cr-keep-issue-labels.yml5
-rw-r--r--changelogs/unreleased/da-port-cte-to-ce.yml5
-rw-r--r--changelogs/unreleased/db-configure-after-drop-tables.yml5
-rw-r--r--changelogs/unreleased/dm-blockquote-trailing-whitespace.yml5
-rw-r--r--changelogs/unreleased/dm-branch-api-can-push.yml5
-rw-r--r--changelogs/unreleased/dm-invalid-active-service-template.yml5
-rw-r--r--changelogs/unreleased/dm-label-reference-period.yml5
-rw-r--r--changelogs/unreleased/dm-user-without-projects-performance.yml5
-rw-r--r--changelogs/unreleased/existing-gcp-accounts.yml5
-rw-r--r--changelogs/unreleased/expose-ci-url.yml5
-rw-r--r--changelogs/unreleased/feature-oidc-subject-claim.yml5
-rw-r--r--changelogs/unreleased/fix-boards-issue-highlight.yml5
-rw-r--r--changelogs/unreleased/fix-br-decode.yml5
-rw-r--r--changelogs/unreleased/fix-gb-fix-deserializing-ci-yaml-variables.yml5
-rw-r--r--changelogs/unreleased/fix-gitaly-mr-creation-limits.yml5
-rw-r--r--changelogs/unreleased/fix-groups-api-ordering.yml4
-rw-r--r--changelogs/unreleased/fix-last-commit-author-link-is-blue.yml5
-rw-r--r--changelogs/unreleased/fix-paragraph-line-height-for-emoji.yml5
-rw-r--r--changelogs/unreleased/fix-performance-problem-of-tags-query.yml5
-rw-r--r--changelogs/unreleased/fix-trace-archive-cron-worker-race-condition.yml5
-rw-r--r--changelogs/unreleased/fix-web-ide-disable-markdown-autocomplete.yml5
-rw-r--r--changelogs/unreleased/fj-43565-wrong-role-displayed.yml5
-rw-r--r--changelogs/unreleased/fj-46278-apply-doorkeeper-scope-patch.yml5
-rw-r--r--changelogs/unreleased/fj-46278-enable-doorkeeper-reuse-access-token.yml6
-rw-r--r--changelogs/unreleased/fj-49014-wiki-search-error.yml5
-rw-r--r--changelogs/unreleased/fj-bumping-gollum-lib-and-gollum-rugged-adapter.yml5
-rw-r--r--changelogs/unreleased/fj-web-terminal-ci-build.yml5
-rw-r--r--changelogs/unreleased/fl-mr-refactor-performance-improvements.yml5
-rw-r--r--changelogs/unreleased/frozen-string-app-workers.yml5
-rw-r--r--changelogs/unreleased/frozen-string-enable-app-uploaders.yml5
-rw-r--r--changelogs/unreleased/frozen-string-enable-app-validators.yml5
-rw-r--r--changelogs/unreleased/frozen-string-enable-app-workers-2.yml5
-rw-r--r--changelogs/unreleased/frozen-string-enable-apps-services-inner-even-more.yml5
-rw-r--r--changelogs/unreleased/gitaly-commit-count-opt-out.yml5
-rw-r--r--changelogs/unreleased/gitaly-ff-branch-nil.yml5
-rw-r--r--changelogs/unreleased/gitaly-opt-out-branch-tag.yml5
-rw-r--r--changelogs/unreleased/gitaly-serverservice-info-timeout.yml5
-rw-r--r--changelogs/unreleased/gitaly-timeouts.yml5
-rw-r--r--changelogs/unreleased/highlight-cluster-settings-message.yml5
-rw-r--r--changelogs/unreleased/ide-commit-actions-update.yml5
-rw-r--r--changelogs/unreleased/ide-merge-request-info.yml5
-rw-r--r--changelogs/unreleased/jprovazn-delete-upload-worker.yml5
-rw-r--r--changelogs/unreleased/jprovazn-direct-upload.yml5
-rw-r--r--changelogs/unreleased/jprovazn-extra-line.yml5
-rw-r--r--changelogs/unreleased/jprovazn-fix-mr-caching.yml5
-rw-r--r--changelogs/unreleased/jprovazn-label-links-update.yml5
-rw-r--r--changelogs/unreleased/jprovazn-upload-symlink.yml5
-rw-r--r--changelogs/unreleased/jr-48133-web-ide-commit-ellipsis.yml5
-rw-r--r--changelogs/unreleased/limit-metrics-content-type.yml5
-rw-r--r--changelogs/unreleased/more-group-api-sorting-options.yml5
-rw-r--r--changelogs/unreleased/move-boards-modal-empty-state-vue-component.yml5
-rw-r--r--changelogs/unreleased/no-multi-assign-enable.yml5
-rw-r--r--changelogs/unreleased/no-multi-assign-follow-up.yml5
-rw-r--r--changelogs/unreleased/no-restricted-globals-enable.yml5
-rw-r--r--changelogs/unreleased/osw-delete-non-latest-mr-diff-files-migration.yml5
-rw-r--r--changelogs/unreleased/osw-delete-non-latest-mr-diff-files-upon-merge.yml5
-rw-r--r--changelogs/unreleased/osw-fallback-to-collection-when-no-diff-refs.yml5
-rw-r--r--changelogs/unreleased/osw-mark-as-merged-as-first-post-merge-action.yml5
-rw-r--r--changelogs/unreleased/perf-wiki-pattern-once.yml5
-rw-r--r--changelogs/unreleased/pr-importer-io-extra-error-handling.yml5
-rw-r--r--changelogs/unreleased/prefer-destructuring-fix.yml5
-rw-r--r--changelogs/unreleased/project-dropdown-list-overflow.yml5
-rw-r--r--changelogs/unreleased/prune-web-hook-logs.yml5
-rw-r--r--changelogs/unreleased/rails5-fix-46276.yml5
-rw-r--r--changelogs/unreleased/rails5-fix-47366.yml5
-rw-r--r--changelogs/unreleased/rails5-fix-47370.yml5
-rw-r--r--changelogs/unreleased/rails5-fix-47804.yml5
-rw-r--r--changelogs/unreleased/rails5-fix-47805.yml6
-rw-r--r--changelogs/unreleased/rails5-fix-47835.yml6
-rw-r--r--changelogs/unreleased/rails5-fix-47836.yml6
-rw-r--r--changelogs/unreleased/rails5-fix-47960.yml5
-rw-r--r--changelogs/unreleased/rails5-fix-48009.yml5
-rw-r--r--changelogs/unreleased/rails5-fix-48012.yml6
-rw-r--r--changelogs/unreleased/rails5-fix-48104.yml6
-rw-r--r--changelogs/unreleased/rails5-fix-48140.yml6
-rw-r--r--changelogs/unreleased/rails5-fix-48141.yml6
-rw-r--r--changelogs/unreleased/rails5-fix-48142.yml5
-rw-r--r--changelogs/unreleased/rails5-fix-48430.yml5
-rw-r--r--changelogs/unreleased/rails5-fix-48432.yml5
-rw-r--r--changelogs/unreleased/rails5-fix-db-check.yml5
-rw-r--r--changelogs/unreleased/rails5-fix-mysql-arel-from.yml5
-rw-r--r--changelogs/unreleased/rails5-fix-pages-controller.yml5
-rw-r--r--changelogs/unreleased/rd-33733-showing-created-date-instead-of-updated-date-in-project-lists.yml5
-rw-r--r--changelogs/unreleased/remove-allocations-gem.yml5
-rw-r--r--changelogs/unreleased/remove-ci_job_request_with_tags_matcher.yml5
-rw-r--r--changelogs/unreleased/remove-is-shared-from-ci-runners.yml5
-rw-r--r--changelogs/unreleased/remove-link-label-vertical-alignment-property.yml5
-rw-r--r--changelogs/unreleased/remove-small-container-width.yml5
-rw-r--r--changelogs/unreleased/remove-trace-efficiently.yml5
-rw-r--r--changelogs/unreleased/revert-merge-request-discussion-buttons-padding.yml5
-rw-r--r--changelogs/unreleased/safari-scrollbar-bug.yml5
-rw-r--r--changelogs/unreleased/security-2682-fix-xss-for-markdown-toc.yml5
-rw-r--r--changelogs/unreleased/security-fj-bumping-sanitize-gem.yml5
-rw-r--r--changelogs/unreleased/security-html_escape_branch_name.yml5
-rw-r--r--changelogs/unreleased/security-html_escape_usernames.yml5
-rw-r--r--changelogs/unreleased/security-rd-do-not-show-internal-info-in-public-feed.yml5
-rw-r--r--changelogs/unreleased/sh-bump-rugged-0-27-2.yml5
-rw-r--r--changelogs/unreleased/sh-fix-bamboo-change-set.yml5
-rw-r--r--changelogs/unreleased/sh-normalize-urls.yml5
-rw-r--r--changelogs/unreleased/sh-optimize-locks-check-ce.yml5
-rw-r--r--changelogs/unreleased/straight-comparision-mode.yml5
-rw-r--r--changelogs/unreleased/tc-repo-check-per-shard.yml5
-rw-r--r--changelogs/unreleased/text-expander-icon-update.yml5
-rw-r--r--changelogs/unreleased/transfer_project_api_endpoint.yml5
-rw-r--r--changelogs/unreleased/tz-diff-blob-image-viewer.yml5
-rw-r--r--changelogs/unreleased/unify-views-search-results.yml5
-rw-r--r--changelogs/unreleased/update-bcrypt-to-support-libxcrypt.yml5
-rw-r--r--changelogs/unreleased/update-environments-nav-controls.yml5
-rw-r--r--changelogs/unreleased/update-external-link-icon-in-header-user-dropdown.yml5
-rw-r--r--changelogs/unreleased/update-external-link-icon-in-merge-request-widget.yml5
-rw-r--r--changelogs/unreleased/update-integrations-external-link-icons.yml5
-rw-r--r--changelogs/unreleased/update-pipeline-icon-in-web-ide-sidebar.yml5
-rw-r--r--changelogs/unreleased/upgrade-gitlab-markup.yml5
-rw-r--r--changelogs/unreleased/use-backup-custom-hooks-gitaly.yml5
-rw-r--r--changelogs/unreleased/use-tooltip-component-in-mr-widget-author-time-component.yml5
-rw-r--r--changelogs/unreleased/web-hooks-log-pagination.yml5
-rw-r--r--changelogs/unreleased/winh-new-branch-url-encode.yml5
-rw-r--r--changelogs/unreleased/zj-gitaly-read-write-check.yml5
-rw-r--r--config/boot.rb5
-rw-r--r--db/migrate/20161124141322_migrate_process_commit_worker_jobs.rb54
-rw-r--r--db/migrate/20161226122833_remove_dot_git_from_usernames.rb12
-rw-r--r--doc/api/projects.md5
-rw-r--r--doc/development/README.md1
-rw-r--r--doc/development/profiling.md30
-rw-r--r--doc/development/pry_debugging.md130
-rw-r--r--doc/development/testing_guide/best_practices.md2
-rw-r--r--doc/update/mysql_to_postgresql.md12
-rw-r--r--lib/api/projects.rb21
-rw-r--r--lib/gitlab/ci/variables/collection/item.rb2
-rw-r--r--lib/gitlab/git/operation_service.rb2
-rw-r--r--lib/gitlab/git/repository.rb64
-rw-r--r--lib/gitlab/git/repository_mirroring.rb30
-rw-r--r--lib/gitlab/gitaly_client/operation_service.rb11
-rw-r--r--lib/gitlab/profiler.rb6
-rw-r--r--lib/gitlab/profiler/total_time_flat_printer.rb39
-rw-r--r--lib/gitlab/project_search_results.rb19
-rw-r--r--lib/gitlab/serializer/ci/variables.rb5
-rw-r--r--lib/gitlab/url_sanitizer.rb15
-rw-r--r--lib/tasks/gitlab/cleanup.rake23
-rw-r--r--package.json1
-rw-r--r--spec/javascripts/helpers/vuex_action_helper.js12
-rw-r--r--spec/javascripts/helpers/vuex_action_helper_spec.js25
-rw-r--r--spec/javascripts/ide/ide_router_spec.js44
-rw-r--r--spec/lib/gitlab/ci/variables/collection/item_spec.rb8
-rw-r--r--spec/lib/gitlab/git/repository_spec.rb19
-rw-r--r--spec/lib/gitlab/gitaly_client/operation_service_spec.rb134
-rw-r--r--spec/lib/gitlab/project_search_results_spec.rb53
-rw-r--r--spec/lib/gitlab/serializer/ci/variables_spec.rb6
-rw-r--r--spec/lib/gitlab/url_sanitizer_spec.rb6
-rw-r--r--spec/migrations/migrate_process_commit_worker_jobs_spec.rb69
-rw-r--r--spec/models/ci/build_spec.rb28
-rw-r--r--yarn.lock4
307 files changed, 1211 insertions, 1373 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e1a6a014c57..76a016b233c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,245 @@
documentation](doc/development/changelog.md) for instructions on adding your own
entry.
+## 11.1.0 (2018-07-22)
+
+### Security (6 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.
+- Fix symlink vulnerability in project import.
+
+### Removed (1 change)
+
+- Remove deprecated object_storage_upload queue.
+
+### Fixed (98 changes, 52 of them are from the community)
+
+- Keep lists ordered when copying only list items. !18522 (Jan Beckmann)
+- Fix bug where maintainer would not be allowed to push to forks with merge requests that have `Allow maintainer edits` enabled. !18968
+- mergeError message has been binded using v-html directive. !19058 (Murat Dogan)
+- Set MR target branch to default branch if target branch is not valid. !19067
+- Fix CSS for buttons not to be hidden on issues/MR title. !19176 (Takuya Noguchi)
+- Use same gem versions for rails5 as for rails4 where possible. !19498 (Jasper Maes)
+- Fix extra blank line at start of rendered reStructuredText code block. !19596
+- Fix username validation order on signup, resolves #45575. !19610 (Jan Beckmann)
+- Make quick commands case insensitive. !19614 (Jan Beckmann)
+- Remove incorrect CI doc re: PowerShell. !19622 (gfyoung)
+- Fixes Microsoft Teams notifications for pipeline events. !19632 (Jeff Brown)
+- Fix branch name encoding for dropdown on issue page. !19634
+- Rails5 fix expected `issuable.reload.updated_at` to have changed. !19733 (Jasper Maes)
+- Rails5 fix stack level too deep. !19762 (Jasper Maes)
+- Rails5 ActionController::ParameterMissing: param is missing or the value is empty: application_setting. !19763 (Jasper Maes)
+- Invalidate cache with project details when repository is updated. !19774
+- Rails5 fix no implicit conversion of Hash into String. ActionController::Parameters no longer returns an hash in Rails 5. !19792 (Jasper Maes)
+- [Rails5] Fix snippets_finder arel queries. !19796 (@blackst0ne)
+- Fix fields for author & assignee in MR API docs. !19798 (gfyoung)
+- Remove scrollbar in Safari in repo settings page. !19809 (gfyoung)
+- Omits operartions and kubernetes item from project sidebar when repository or builds are disabled. !19835
+- Rails5 fix passing Group objects array into for_projects_and_groups milestone scope. !19863 (Jasper Maes)
+- Fix chat service tag notifications not sending when only default branch enabled. !19864
+- Only show new issue / new merge request on group page when issues / merge requests are enabled. !19869 (Jan Beckmann)
+- [Rails5] Explicitly set request.format for blob_controller. !19876 (@blackst0ne)
+- [Rails5] Fix optimistic lock value. !19878 (@blackst0ne)
+- Rails5 fix update_attribute usage not causing a save. !19881 (Jasper Maes)
+- Rails5 fix connection execute return integer instead of string. !19901 (Jasper Maes)
+- Rails5 fix format in uploads actions. !19907 (Jasper Maes)
+- [Rails5] Fix "-1 is not a valid data_store". !19917 (@blackst0ne)
+- [Rails5] Invalid single-table inheritance type: Group is not a subclass of Namespace. !19918 (@blackst0ne)
+- [Rails5] Fix pipeline_schedules_controller_spec. !19919 (@blackst0ne)
+- Rails5 fix passing Group objects array into for_projects_and_groups milestone scope. !19920 (Jasper Maes)
+- Rails5 update Gemfile.rails5.lock. !19921 (Jasper Maes)
+- [Rails5] Fix sessions_controller_spec. !19936 (@blackst0ne)
+- [Rails5] Set request.format for artifacts_controller. !19937 (@blackst0ne)
+- Fix webhook error when password is not present. !19945 (Jan Beckmann)
+- Fix label and milestone duplicated records and IID errors. !19961
+- Rails5 fix expected: 1 time with arguments: (97, anything, {"squash"=>false}) received: 0 times. !20004 (Jasper Maes)
+- Rails5 fix Projects::PagesController spec. !20007 (Jasper Maes)
+- [Rails5] Fix ActionCable '/cable' mountpoint conflict. !20015 (@blackst0ne)
+- Fix branches are not shown in Merge Request dropdown when preferred language is not English. !20016 (Hiroyuki Sato)
+- Rails5 fix Admin::HooksController. !20017 (Jasper Maes)
+- Rails5 fix expected: 0 times with any arguments received: 1 time with arguments: DashboardController. !20018 (Jasper Maes)
+- [Rails5] Set request.format in commits_controller. !20023 (@blackst0ne)
+- Keeps the label on an issue when the issue is moved. !20036
+- Cleanup Prometheus ruby metrics. !20039 (Ben Kochie)
+- Rails 5 fix Capybara::ElementNotFound: Unable to find visible css #modal-revert-commit and expected: "/bar" got: "/foo". !20044 (Jasper Maes)
+- [Rails5] Force the callback run first. !20055 (@blackst0ne)
+- Add readme button to non-empty project page. !20104
+- Fixed bug when editing a comment in an issue,the preview mode is toggled in the main textarea. !20112 (Constance Okoghenun)
+- Ignore unknown OAuth sources in ApplicationSetting. !20129
+- Fix paragraph line height for emoji. !20137 (George Tsiolis)
+- Fixes issue with uploading same image to Profile Avatar twice. !20161 (Chirag Bhatia)
+- Rails5 fix arel from in mysql_median_datetime_sql. !20167 (Jasper Maes)
+- Adds the `locked` state to the merge request API so that it can be used as a search filter. !20186
+- Enable Doorkeeper option to avoid generating new tokens when users login via oauth. !20200
+- Fix OAuth Application Authorization screen to appear with each access. !20216
+- Rails5 fix MySQL milliseconds problem in specs. !20221 (Jasper Maes)
+- Rails5 fix Mysql comparison failure caused by milliseconds problem. !20222 (Jasper Maes)
+- Updated last commit link color. !20234 (Constance Okoghenun)
+- Fixed Merge request changes dropdown displays incorrectly. !20237 (Constance Okoghenun)
+- Show jobs from same pipeline in sidebar in job details view. !20243
+- [Rails5] Fix milestone GROUP BY query. !20256 (@blackst0ne)
+- Line separator to the left of the 'Admin area' wrench icon had vanished. !20282 (bitsapien)
+- Check if archived trace exist before archive it. !20297
+- Load Devise with Omniauth when auto_sign_in_with_provider is configured. !20302
+- Fix link to job when creating a new issue from a failed job. !20328
+- Fix double "in" in time to artifact deletion message. !20357 (@bbodenmiller)
+- Fix wrong role badge displayed in projects dashboard. !20374
+- Stop relying on migrations in the CacheableAttributes cache key and cache attributes for 1 minute instead. !20389
+- Fixes toggle discussion button not expanding collapsed discussions. !20452
+- Resolve compatibility issues with node 6. !20461
+- Fixes base command used in Helm installations. !20471
+- Fix RSS button interaction on Dashboard, Project and Group activities. !20549
+- Use appropriate timeout on Gitaly server info checks, avoid error on timeout. !20552
+- Remove healthchecks from prometheus endpoint. !20565
+- Render MR page when diffs cannot be fetched from the database or the git repository. !20680
+- Expire correct method caches after HEAD changed.
+- Ensure MR diffs always exist in the PR importer.
+- Fix overlapping file title and file actions in MR changes tag.
+- Mark MR as merged regardless of errors when closing issues.
+- Fix performance bar modal visibility in Safari.
+- Prevent browser autocomplete for milestone date fields.
+- Limit the action suffixes in transaction metrics.
+- Add /uploads subdirectory to allowed upload paths.
+- Fix cross-project label references.
+- Invalidate merge request diffs cache if diff data change.
+- Don't show context button for diffs of deleted files.
+- Structure getters for diff Store properly and adds specs.
+- Bump rugged to 0.27.2.
+- Fix Bamboo CI status not showing for branch plans.
+- Fixed bug that allowed to remove other wiki pages if the title had wildcard characters.
+- Disabled Web IDE autocomplete suggestions for Markdown files. (Isaac Smith)
+- Fix merge request diffs when created with gitaly_diff_between enabled.
+- Properly detect label reference if followed by period or question mark.
+- Deactivate new KubernetesService created from active template to prevent project creation from failing.
+- Allow trailing whitespace on blockquote fence lines.
+
+### Deprecated (1 change)
+
+- Removes unused bootstrap 4 scss files. !19423
+
+### Changed (33 changes, 16 of them are from the community)
+
+- Change label link vertical alignment property. !18777 (George Tsiolis)
+- Updated the icon for expand buttons to ellipsis. !18793 (Constance Okoghenun)
+- Create new or add existing Kubernetes cluster from a single page. !18963
+- Use object storage as the first class persistable store for new live trace architecture. !19515
+- Hide project name if searching against a project. !19595
+- Allows you to create another deploy token dimmediately after creating one. !19639
+- Removes the environment scope field for users that cannot edit it. !19643
+- Don't hash user ID in OIDC subject claim. !19784 (Markus Koller)
+- Milestone page list redesign. !19832 (Constance Okoghenun)
+- Add environment dropdown for the metrics page. !19833
+- Allow querying a single merge request within a project. !19853
+- Update WebIDE to show file in tree on load. !19887
+- Remove small container width. !19893 (George Tsiolis)
+- Improve U2F workflow when using unsupported browsers. !19938 (Jan Beckmann)
+- Update Web IDE file tree styles. !19969
+- Highlight cluster settings message. !19996 (George Tsiolis)
+- Fade uneditable area in Web IDE. !20008
+- Update pipeline icon in web ide sidebar. !20058 (George Tsiolis)
+- Revert merge request discussion buttons padding. !20060 (George Tsiolis)
+- Fix boards issue highlight. !20063 (George Tsiolis)
+- Update external link icon in header user dropdown. !20150 (George Tsiolis)
+- Update external link icon in merge request widget. !20154 (George Tsiolis)
+- Update environments nav controls icons. !20199 (George Tsiolis)
+- Update integrations external link icons. !20205 (George Tsiolis)
+- Fixes an issue where migrations instead of schema loading were run. !20227
+- Add title placeholder for new issues. !20271 (George Tsiolis)
+- Close revoke deploy token modal on escape keypress. !20347 (George Tsiolis)
+- Change environment scope text depending on number of project clusters. Update form to only include form-groups.
+- Improve Web IDE commit flow.
+- Add machine type and pricing documentation links, add class to labels to make bold.
+- Remove remaining traces of the Allocations Gem.
+- Use one column form layout on Admin Area Settings page.
+- Add back copy for existing gcp accounts within offer banner.
+
+### Performance (16 changes, 4 of them are from the community)
+
+- Fully migrate pipeline stages position. !19369
+- Use Tooltip component in MrWidgetAuthorTime vue comonent. !19635 (George Tsiolis)
+- Move boards modal EmptyState vue component. !20068 (George Tsiolis)
+- Bump carrierwave gem verion to 1.2.3. !20287
+- Remove redundant query when removing trace. !20324
+- Improves performance of mr code, by fixing the state being mutated outside of the store in the util function trimFirstCharOfLineContent and in map operations. Avoids map operation in an empty array. Adds specs to the trimFirstCharOfLineContent function. !20380 (filipa)
+- Reduce the number of queries when searching for groups. !20398
+- Improve render performance of large wiki pages. !20465 (Peter Leitzen)
+- Improves performance on Merge Request diff tab by removing the scroll event listeners being added to every file.
+- Remove the ci_job_request_with_tags_matcher.
+- Updated Gitaly fail-fast timeout values.
+- Add index on deployable_type/id for deployments.
+- Eliminate N+1 queries in LFS file locks checks during a push.
+- Fix performance problem of accessing tag list for projects api endpoints.
+- Improve performance of listing users without projects.
+- Fixed pagination of web hook logs.
+
+### Added (29 changes, 9 of them are from the community)
+
+- Add dropdown to Groups link in top bar. !18280
+- Web IDE supports now Image + Download Diff Viewing. !18768
+- Use CommonMark syntax and rendering for new Markdown content. !19331
+- Add SHA256 and HEAD on File API. !19439 (ahmet2mir)
+- Add filename filtering to code search. !19509
+- Add CI_PIPELINE_URL and CI_JOB_URL. !19618
+- Expose visibility via Snippets API. !19620 (Jan Beckmann)
+- Fixed pagination of groups API. !19665 (Marko, Peter)
+- Added id sorting option to GET groups and subgroups API. !19665 (Marko, Peter)
+- Add a link to the contributing page in the user dropdown. !19708
+- Add Object Storage to project export. !20105
+- Change avatar image in the header when user updates their avatar. !20119 (Jamie Schembri)
+- Allow straight diff in Compare API. !20120 (Maciej Nowak)
+- Add transfer project API endpoint. !20122 (Aram Visser)
+- Expose permissions of the current user on resources in GraphQL. !20152
+- Run repository checks in parallel for each shard. !20179
+- Add pipeline lists to GraphQL. !20249
+- Add option to add README when creating a project. !20335
+- Add option to hide third party offers in admin application settings. !20379
+- Add /confidential quick action. (Jan Beckmann)
+- Support direct_upload for generic uploads.
+- Display merge request title & description in Web IDE.
+- Prune web hook logs older than 90 days.
+- Add Web Terminal for Ci Builds. (Vicky Chijwani)
+- Expose whether current user can push into a branch on branches API.
+- Present state indication on GFM preview.
+- migrate backup rake task to gitaly.
+- Add Gitlab::SQL:CTE for easily building CTE statements.
+- Added with_statsoption for GET /projects/:id/repository/commits.
+
+### Other (28 changes, 11 of them are from the community)
+
+- Move some Gitaly RPC's to opt-out. !19591
+- Bump grape-path-helpers to 1.0.5. !19604 (@blackst0ne)
+- Add CI job to check Gemfile.rails5.lock. !19605 (@blackst0ne)
+- Move Gitaly branch/tag/ref RPC's to opt-out. !19644
+- CE port gitlab-ee!6112. !19714
+- Enable no-multi-assignment in JS files. !19808 (gfyoung)
+- Enable no-restricted globals in JS files. !19877 (gfyoung)
+- Improve no-multi-assignment fixes after enabling rule. !19915 (gfyoung)
+- Enable prefer-structuring in JS files. !19943 (gfyoung)
+- Enable frozen string in app/workers/*.rb. !19944 (gfyoung)
+- Uses long sha version of the merged commit in MR widget copy to clipboard button. !19955
+- Update new group page to better explain what groups are. !19991
+- Update new SSH key page to improve copy. !19994
+- Update new SSH key page to improve key input validation. !19997
+- Gitaly metrics check for read/writeability. !20022
+- Add ellispsis to web ide commit button. !20030
+- Minor style changes to personal access token form and scope checkboxes. !20052
+- Finish enabling frozen string for app/workers/*.rb. !20197 (gfyoung)
+- Allows settings sections to expand by default when linking to them. !20211
+- Enable frozen string in apps/validators/*.rb. !20220 (gfyoung)
+- update bcrypt to also support libxcrypt. !20260 (muhammadn)
+- Enable frozen string in apps/validators/*.rb. !20382 (gfyoung)
+- Removes unused vuex code in mr refactor and removes unneeded dependencies. !20499
+- Delete non-latest merge request diff files upon merge.
+- Schedule workers to delete non-latest diffs in post-migration.
+- Remove the use of `is_shared` of `Ci::Runner`.
+- Add more detailed logging to githost.log when rebasing.
+- Use monospaced font for MR diff commit link ref on GFM.
+
+
## 11.0.4 (2018-07-17)
### Security (1 change)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 4a1fa39b41d..6056e18595d 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -133,7 +133,7 @@ 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, ~Quality, ~Platform, etc.
+- Team: ~"CI/CD", ~Plan, ~Quality, ~Platform, etc.
- Release Scoping: ~Deliverable, ~Stretch, ~"Next Patch Release"
- Priority: ~P1, ~P2, ~P3, ~P4
- Severity: ~S1, ~S2, ~S3, ~S4
@@ -187,12 +187,13 @@ The current team labels are:
- ~Configuration
- ~"CI/CD"
-- ~Discussion
+- ~Create
- ~Distribution
- ~Documentation
- ~Geo
- ~Gitaly
- ~Monitoring
+- ~Plan
- ~Platform
- ~Quality
- ~Release
diff --git a/Gemfile b/Gemfile
index 7eac9e6a7b3..0ad5df90c3c 100644
--- a/Gemfile
+++ b/Gemfile
@@ -323,6 +323,7 @@ group :development do
end
group :development, :test do
+ gem 'bootsnap', '~> 1.3'
gem 'bullet', '~> 5.5.0', require: !!ENV['ENABLE_BULLET']
gem 'pry-byebug', '~> 3.4.1', platform: :mri
gem 'pry-rails', '~> 0.3.4'
diff --git a/Gemfile.lock b/Gemfile.lock
index 6415f9e6132..1d9c75f154c 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -87,6 +87,8 @@ GEM
binding_of_caller (0.7.2)
debug_inspector (>= 0.0.1)
blankslate (2.1.2.4)
+ bootsnap (1.3.1)
+ msgpack (~> 1.0)
bootstrap_form (2.7.0)
brakeman (4.2.1)
browser (2.2.0)
@@ -500,6 +502,7 @@ GEM
mini_portile2 (2.3.0)
minitest (5.7.0)
mousetrap-rails (1.4.6)
+ msgpack (1.2.4)
multi_json (1.13.1)
multi_xml (0.6.0)
multipart-post (2.0.0)
@@ -986,6 +989,7 @@ DEPENDENCIES
benchmark-ips (~> 2.3.0)
better_errors (~> 2.1.0)
binding_of_caller (~> 0.7.2)
+ bootsnap (~> 1.3)
bootstrap_form (~> 2.7.0)
brakeman (~> 4.2)
browser (~> 2.2)
diff --git a/Gemfile.rails5.lock b/Gemfile.rails5.lock
index 50ca0d5a729..2d12faa28d9 100644
--- a/Gemfile.rails5.lock
+++ b/Gemfile.rails5.lock
@@ -90,6 +90,8 @@ GEM
binding_of_caller (0.7.2)
debug_inspector (>= 0.0.1)
blankslate (2.1.2.4)
+ bootsnap (1.3.1)
+ msgpack (~> 1.0)
bootstrap_form (2.7.0)
brakeman (4.2.1)
browser (2.2.0)
@@ -503,6 +505,7 @@ GEM
mini_portile2 (2.3.0)
minitest (5.7.0)
mousetrap-rails (1.4.6)
+ msgpack (1.2.4)
multi_json (1.13.1)
multi_xml (0.6.0)
multipart-post (2.0.0)
@@ -996,6 +999,7 @@ DEPENDENCIES
benchmark-ips (~> 2.3.0)
better_errors (~> 2.1.0)
binding_of_caller (~> 0.7.2)
+ bootsnap (~> 1.3)
bootstrap_form (~> 2.7.0)
brakeman (~> 4.2)
browser (~> 2.2)
diff --git a/VERSION b/VERSION
index 0116f5d2c81..53906da50f8 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-11.1.0-pre
+11.2.0-pre
diff --git a/app/assets/javascripts/commons/polyfills.js b/app/assets/javascripts/commons/polyfills.js
index d62d3c23654..f595f3c3187 100644
--- a/app/assets/javascripts/commons/polyfills.js
+++ b/app/assets/javascripts/commons/polyfills.js
@@ -14,6 +14,7 @@ import 'core-js/es6/weak-map';
// Browser polyfills
import 'classlist-polyfill';
+import 'formdata-polyfill';
import './polyfills/custom_event';
import './polyfills/element';
import './polyfills/event';
diff --git a/app/assets/javascripts/ide/ide_router.js b/app/assets/javascripts/ide/ide_router.js
index 44c35e9a5a5..c6d7d218e81 100644
--- a/app/assets/javascripts/ide/ide_router.js
+++ b/app/assets/javascripts/ide/ide_router.js
@@ -1,5 +1,6 @@
import Vue from 'vue';
import VueRouter from 'vue-router';
+import { join as joinPath } from 'path';
import flash from '~/flash';
import store from './stores';
import { activityBarViews } from './constants';
@@ -37,17 +38,29 @@ const router = new VueRouter({
base: `${gon.relative_url_root}/-/ide/`,
routes: [
{
- path: '/project/:namespace/:project+',
+ path: '/project/:namespace+/:project',
component: EmptyRouterComponent,
children: [
{
- path: ':targetmode(edit|tree|blob)/*',
+ path: ':targetmode(edit|tree|blob)/:branchid+/-/*',
component: EmptyRouterComponent,
},
{
+ path: ':targetmode(edit|tree|blob)/:branchid+/',
+ redirect: to => joinPath(to.path, '/-/'),
+ },
+ {
+ path: ':targetmode(edit|tree|blob)',
+ redirect: to => joinPath(to.path, '/master/-/'),
+ },
+ {
path: 'merge_requests/:mrid',
component: EmptyRouterComponent,
},
+ {
+ path: '',
+ redirect: to => joinPath(to.path, '/edit/master/-/'),
+ },
],
},
],
@@ -63,11 +76,10 @@ router.beforeEach((to, from, next) => {
.then(() => {
const fullProjectId = `${to.params.namespace}/${to.params.project}`;
- const baseSplit = (to.params[0] && to.params[0].split('/-/')) || [''];
- const branchId = baseSplit[0].slice(-1) === '/' ? baseSplit[0].slice(0, -1) : baseSplit[0];
+ const branchId = to.params.branchid;
if (branchId) {
- const basePath = baseSplit.length > 1 ? baseSplit[1] : '';
+ const basePath = to.params[0] || '';
store.dispatch('setCurrentBranchId', branchId);
diff --git a/app/assets/javascripts/profile/profile.js b/app/assets/javascripts/profile/profile.js
index 8cf7f2f23d0..e49c67ffb5c 100644
--- a/app/assets/javascripts/profile/profile.js
+++ b/app/assets/javascripts/profile/profile.js
@@ -49,13 +49,15 @@ export default class Profile {
saveForm() {
const self = this;
- const formData = new FormData(this.form[0]);
+ const formData = new FormData(this.form.get(0));
const avatarBlob = this.avatarGlCrop.getBlob();
if (avatarBlob != null) {
formData.append('user[avatar]', avatarBlob, 'avatar.png');
}
+ formData.delete('user[avatar]-trigger');
+
axios({
method: this.form.attr('method'),
url: this.form.attr('action'),
diff --git a/app/assets/stylesheets/framework/dropdowns.scss b/app/assets/stylesheets/framework/dropdowns.scss
index c7b5e22c33d..ec4a0f378d0 100644
--- a/app/assets/stylesheets/framework/dropdowns.scss
+++ b/app/assets/stylesheets/framework/dropdowns.scss
@@ -822,7 +822,7 @@ header.header-content .dropdown-menu.frequent-items-dropdown-menu {
display: flex;
flex-direction: row;
width: 500px;
- height: 334px;
+ height: 354px;
.frequent-items-dropdown-sidebar,
.frequent-items-dropdown-content {
@@ -868,6 +868,7 @@ header.header-content .dropdown-menu.frequent-items-dropdown-menu {
}
.frequent-items-list-container {
+ height: 304px;
padding: 8px 0;
overflow-y: auto;
@@ -897,10 +898,6 @@ header.header-content .dropdown-menu.frequent-items-dropdown-menu {
margin-top: 8px;
}
- .frequent-items-search-container {
- height: 284px;
- }
-
@include media-breakpoint-down(xs) {
.frequent-items-list-container {
width: auto;
diff --git a/app/assets/stylesheets/pages/reports.scss b/app/assets/stylesheets/pages/reports.scss
new file mode 100644
index 00000000000..ce253ebb71f
--- /dev/null
+++ b/app/assets/stylesheets/pages/reports.scss
@@ -0,0 +1,159 @@
+.split-report-section {
+ border-bottom: 1px solid $gray-darker;
+
+ .report-block-container {
+ max-height: 500px;
+ overflow: auto;
+ }
+
+ .space-children,
+ .space-children > span {
+ display: flex;
+ align-self: center;
+ }
+
+ .media {
+ align-items: center;
+ padding: 10px;
+ line-height: 20px;
+
+ /*
+ This fixes the wrapping div of the icon in the report header.
+ Apparently the borderless status icons are half the size of the status icons with border.
+ This means we have to double the size of the wrapping div for borderless icons.
+ */
+ .space-children:first-child {
+ width: 32px;
+ height: 32px;
+ align-items: center;
+ justify-content: center;
+ margin-right: 5px;
+ margin-left: 1px;
+ }
+ }
+
+ .code-text {
+ width: 100%;
+ flex: 1;
+ }
+}
+
+.mr-widget-grouped-section {
+ .report-block-container {
+ max-height: 170px;
+ overflow: auto;
+ }
+
+ .report-block-list-issue-parent {
+ padding: $gl-padding-top $gl-padding;
+ border-top: 1px solid $border-color;
+ }
+
+ .report-block-list-icon .loading-container {
+ position: relative;
+ left: -2px;
+ // needed to make the next element align with the
+ // elements below that have a svg with 16px width
+ .fa-spinner {
+ width: 16px;
+ }
+ }
+}
+
+.report-block-container {
+ border-top: 1px solid $border-color;
+ padding: $gl-padding-top;
+ background-color: $gray-light;
+
+ // Clean MR widget CSS
+ line-height: 20px;
+}
+
+.report-block-list {
+ list-style: none;
+ padding: 0 1px;
+ margin: 0;
+
+ .license-item {
+ line-height: $gl-padding-24;
+
+ .license-dependencies {
+ color: $gl-text-color-tertiary;
+ }
+
+ .btn-show-all-packages {
+ line-height: $gl-btn-line-height;
+ margin-bottom: 2px;
+ }
+ }
+}
+
+.report-block-list-icon {
+ display: flex;
+
+ &.failed {
+ color: $red-500;
+ }
+
+ &.success {
+ color: $green-500;
+ }
+
+ &.neutral {
+ color: $theme-gray-700;
+ }
+
+ .ci-status-icon {
+ svg {
+ width: 16px;
+ height: 16px;
+ left: -2px;
+ }
+ }
+}
+
+.report-block-list-issue {
+ display: flex;
+ align-items: flex-start;
+ align-content: flex-start;
+}
+
+.is-dismissed .report-block-list-issue-description,
+.is-dismissed .vulnerability-name-button {
+ text-decoration: line-through;
+}
+
+.report-block-list-issue-description-text::after {
+ content: '\00a0';
+}
+
+.report-block-list-issue-description {
+ align-content: space-around;
+ align-items: flex-start;
+ flex-wrap: wrap;
+ display: flex;
+ align-self: center;
+}
+
+.report-block {
+ .break-link {
+ word-wrap: break-word;
+ word-break: break-all;
+ }
+}
+
+.report-block-issue-code {
+ width: 600px;
+}
+
+.modal-security-report-dast {
+ .modal-dialog {
+ width: $modal-lg;
+ max-width: $modal-lg;
+ }
+
+ // This is temporary till we get the new modals hooked up
+ &.modal-hide-footer .modal-footer {
+ display: none;
+ }
+}
diff --git a/app/controllers/projects/raw_controller.rb b/app/controllers/projects/raw_controller.rb
index 9bc774b7636..1cba0011304 100644
--- a/app/controllers/projects/raw_controller.rb
+++ b/app/controllers/projects/raw_controller.rb
@@ -10,7 +10,6 @@ class Projects::RawController < Projects::ApplicationController
def show
@blob = @repository.blob_at(@commit.id, @path)
-
if @blob
headers['X-Content-Type-Options'] = 'nosniff'
@@ -19,7 +18,7 @@ class Projects::RawController < Projects::ApplicationController
if @blob.stored_externally?
send_lfs_object
else
- send_git_blob @repository, @blob
+ send_git_blob @repository, @blob, inline: (params[:inline] != 'false')
end
else
render_404
diff --git a/app/helpers/blob_helper.rb b/app/helpers/blob_helper.rb
index 3db28fd6da3..7eb45ddd117 100644
--- a/app/helpers/blob_helper.rb
+++ b/app/helpers/blob_helper.rb
@@ -114,22 +114,22 @@ module BlobHelper
icon("#{file_type_icon_class('file', mode, name)} fw")
end
- def blob_raw_url(only_path: false)
+ def blob_raw_url(**kwargs)
if @build && @entry
- raw_project_job_artifacts_url(@project, @build, path: @entry.path, only_path: only_path)
+ raw_project_job_artifacts_url(@project, @build, path: @entry.path, **kwargs)
elsif @snippet
if @snippet.project_id
- raw_project_snippet_url(@project, @snippet, only_path: only_path)
+ raw_project_snippet_url(@project, @snippet, **kwargs)
else
- raw_snippet_url(@snippet, only_path: only_path)
+ raw_snippet_url(@snippet, **kwargs)
end
elsif @blob
- project_raw_url(@project, @id, only_path: only_path)
+ project_raw_url(@project, @id, **kwargs)
end
end
- def blob_raw_path
- blob_raw_url(only_path: true)
+ def blob_raw_path(**kwargs)
+ blob_raw_url(**kwargs, only_path: true)
end
# SVGs can contain malicious JavaScript; only include whitelisted
@@ -226,16 +226,17 @@ module BlobHelper
def open_raw_blob_button(blob)
return if blob.empty?
+ return if blob.raw_binary? || blob.stored_externally?
- if blob.raw_binary? || blob.stored_externally?
- icon = sprite_icon('download')
- title = 'Download'
- else
- icon = icon('file-code-o')
- title = 'Open raw'
- end
+ title = 'Open raw'
+ link_to icon('file-code-o'), blob_raw_path, class: 'btn btn-sm has-tooltip', target: '_blank', rel: 'noopener noreferrer', title: title, data: { container: 'body' }
+ end
+
+ def download_blob_button(blob)
+ return if blob.empty?
- link_to icon, blob_raw_path, class: 'btn btn-sm has-tooltip', target: '_blank', rel: 'noopener noreferrer', title: title, data: { container: 'body' }
+ title = 'Download'
+ link_to sprite_icon('download'), blob_raw_path(inline: false), download: @path, class: 'btn btn-sm has-tooltip', target: '_blank', rel: 'noopener noreferrer', title: title, data: { container: 'body' }
end
def blob_render_error_reason(viewer)
diff --git a/app/helpers/workhorse_helper.rb b/app/helpers/workhorse_helper.rb
index a82271ce0ee..fd1d78bd9b8 100644
--- a/app/helpers/workhorse_helper.rb
+++ b/app/helpers/workhorse_helper.rb
@@ -2,9 +2,9 @@
# Workhorse will also serve files when using `send_file`.
module WorkhorseHelper
# Send a Git blob through Workhorse
- def send_git_blob(repository, blob)
+ def send_git_blob(repository, blob, inline: true)
headers.store(*Gitlab::Workhorse.send_git_blob(repository, blob))
- headers['Content-Disposition'] = 'inline'
+ headers['Content-Disposition'] = inline ? 'inline' : 'attachment'
headers['Content-Type'] = safe_content_type(blob)
render plain: ""
end
diff --git a/app/models/user.rb b/app/models/user.rb
index 4987d01aac6..58429f8d607 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -14,7 +14,6 @@ class User < ActiveRecord::Base
include IgnorableColumn
include FeatureGate
include CreatedAtFilterable
- include IgnorableColumn
include BulkMemberAccessLoad
include BlocksJsonSerialization
include WithUploads
diff --git a/app/services/projects/import_service.rb b/app/services/projects/import_service.rb
index 60f400edfce..e560d40371e 100644
--- a/app/services/projects/import_service.rb
+++ b/app/services/projects/import_service.rb
@@ -67,7 +67,7 @@ module Projects
else
gitlab_shell.import_repository(project.repository_storage, project.disk_path, project.import_url)
end
- rescue Gitlab::Shell::Error, Gitlab::Git::RepositoryMirroring::RemoteError => e
+ rescue Gitlab::Shell::Error => e
# Expire cache to prevent scenarios such as:
# 1. First import failed, but the repo was imported successfully, so +exists?+ returns true
# 2. Retried import, repo is broken or not imported but +exists?+ still returns true
diff --git a/app/services/prometheus/adapter_service.rb b/app/services/prometheus/adapter_service.rb
index 4504d2ccfe6..cbba79690c5 100644
--- a/app/services/prometheus/adapter_service.rb
+++ b/app/services/prometheus/adapter_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module Prometheus
class AdapterService
def initialize(project, deployment_platform = nil)
diff --git a/app/services/protected_branches/access_level_params.rb b/app/services/protected_branches/access_level_params.rb
index 4658b0e850d..a7ef573ff0b 100644
--- a/app/services/protected_branches/access_level_params.rb
+++ b/app/services/protected_branches/access_level_params.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module ProtectedBranches
class AccessLevelParams
attr_reader :type, :params
diff --git a/app/services/protected_branches/api_service.rb b/app/services/protected_branches/api_service.rb
index 4b40200644b..4340d3e8260 100644
--- a/app/services/protected_branches/api_service.rb
+++ b/app/services/protected_branches/api_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module ProtectedBranches
class ApiService < BaseService
def create
diff --git a/app/services/protected_branches/create_service.rb b/app/services/protected_branches/create_service.rb
index 9d947f73af1..87aaf4672a4 100644
--- a/app/services/protected_branches/create_service.rb
+++ b/app/services/protected_branches/create_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module ProtectedBranches
class CreateService < BaseService
def execute(skip_authorization: false)
diff --git a/app/services/protected_branches/destroy_service.rb b/app/services/protected_branches/destroy_service.rb
index 8172c896e76..7190bc2001b 100644
--- a/app/services/protected_branches/destroy_service.rb
+++ b/app/services/protected_branches/destroy_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module ProtectedBranches
class DestroyService < BaseService
def execute(protected_branch)
diff --git a/app/services/protected_branches/legacy_api_create_service.rb b/app/services/protected_branches/legacy_api_create_service.rb
index bb7656489c5..aef99a860a0 100644
--- a/app/services/protected_branches/legacy_api_create_service.rb
+++ b/app/services/protected_branches/legacy_api_create_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
# The branches#protect API still uses the `developers_can_push` and `developers_can_merge`
# flags for backward compatibility, and so performs translation between that format and the
# internal data model (separate access levels). The translation code is non-trivial, and so
diff --git a/app/services/protected_branches/legacy_api_update_service.rb b/app/services/protected_branches/legacy_api_update_service.rb
index 1df38de0e4a..1f6bbe72f85 100644
--- a/app/services/protected_branches/legacy_api_update_service.rb
+++ b/app/services/protected_branches/legacy_api_update_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
# The branches#protect API still uses the `developers_can_push` and `developers_can_merge`
# flags for backward compatibility, and so performs translation between that format and the
# internal data model (separate access levels). The translation code is non-trivial, and so
diff --git a/app/services/protected_branches/update_service.rb b/app/services/protected_branches/update_service.rb
index 95e46645374..4d7d498b8ca 100644
--- a/app/services/protected_branches/update_service.rb
+++ b/app/services/protected_branches/update_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module ProtectedBranches
class UpdateService < BaseService
def execute(protected_branch)
diff --git a/app/services/protected_tags/create_service.rb b/app/services/protected_tags/create_service.rb
index faba7865a17..9aff55986b2 100644
--- a/app/services/protected_tags/create_service.rb
+++ b/app/services/protected_tags/create_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module ProtectedTags
class CreateService < BaseService
attr_reader :protected_tag
diff --git a/app/services/protected_tags/destroy_service.rb b/app/services/protected_tags/destroy_service.rb
index c868d7ad8e6..dc4a1b39848 100644
--- a/app/services/protected_tags/destroy_service.rb
+++ b/app/services/protected_tags/destroy_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module ProtectedTags
class DestroyService < BaseService
def execute(protected_tag)
diff --git a/app/services/protected_tags/update_service.rb b/app/services/protected_tags/update_service.rb
index aea6a48968d..3eb5f4955ee 100644
--- a/app/services/protected_tags/update_service.rb
+++ b/app/services/protected_tags/update_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module ProtectedTags
class UpdateService < BaseService
def execute(protected_tag)
diff --git a/app/services/quick_actions/interpret_service.rb b/app/services/quick_actions/interpret_service.rb
index 9ac8fdb4cff..cdc8514c47c 100644
--- a/app/services/quick_actions/interpret_service.rb
+++ b/app/services/quick_actions/interpret_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module QuickActions
class InterpretService < BaseService
include Gitlab::QuickActions::Dsl
diff --git a/app/services/search/global_service.rb b/app/services/search/global_service.rb
index 92a32e703af..cb1bf0a03a5 100644
--- a/app/services/search/global_service.rb
+++ b/app/services/search/global_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module Search
class GlobalService
attr_accessor :current_user, :params
diff --git a/app/services/search/group_service.rb b/app/services/search/group_service.rb
index b4efba68715..34803d005e3 100644
--- a/app/services/search/group_service.rb
+++ b/app/services/search/group_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module Search
class GroupService < Search::GlobalService
attr_accessor :group
diff --git a/app/services/search/project_service.rb b/app/services/search/project_service.rb
index 9a22abae635..f223c8be103 100644
--- a/app/services/search/project_service.rb
+++ b/app/services/search/project_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module Search
class ProjectService
attr_accessor :project, :current_user, :params
diff --git a/app/services/search/snippet_service.rb b/app/services/search/snippet_service.rb
index 85da0be6fff..e899a36f468 100644
--- a/app/services/search/snippet_service.rb
+++ b/app/services/search/snippet_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module Search
class SnippetService
attr_accessor :current_user, :params
diff --git a/app/services/tags/create_service.rb b/app/services/tags/create_service.rb
index 3cc88d77ba1..329722df747 100644
--- a/app/services/tags/create_service.rb
+++ b/app/services/tags/create_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module Tags
class CreateService < BaseService
def execute(tag_name, target, message, release_description = nil)
diff --git a/app/services/tags/destroy_service.rb b/app/services/tags/destroy_service.rb
index b84b061e460..800268485a4 100644
--- a/app/services/tags/destroy_service.rb
+++ b/app/services/tags/destroy_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module Tags
class DestroyService < BaseService
def execute(tag_name)
diff --git a/app/services/test_hooks/base_service.rb b/app/services/test_hooks/base_service.rb
index aadc1ea644b..8b5439c00bf 100644
--- a/app/services/test_hooks/base_service.rb
+++ b/app/services/test_hooks/base_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module TestHooks
class BaseService
attr_accessor :hook, :current_user, :trigger
diff --git a/app/services/test_hooks/project_service.rb b/app/services/test_hooks/project_service.rb
index 65183e84cce..45e0e61e5c4 100644
--- a/app/services/test_hooks/project_service.rb
+++ b/app/services/test_hooks/project_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module TestHooks
class ProjectService < TestHooks::BaseService
attr_writer :project
diff --git a/app/services/test_hooks/system_service.rb b/app/services/test_hooks/system_service.rb
index 9016c77b7f0..082830c5538 100644
--- a/app/services/test_hooks/system_service.rb
+++ b/app/services/test_hooks/system_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module TestHooks
class SystemService < TestHooks::BaseService
private
diff --git a/app/services/users/activity_service.rb b/app/services/users/activity_service.rb
index ffb19ea4267..822df6c646a 100644
--- a/app/services/users/activity_service.rb
+++ b/app/services/users/activity_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module Users
class ActivityService
LEASE_TIMEOUT = 1.minute.to_i
diff --git a/app/services/users/build_service.rb b/app/services/users/build_service.rb
index 4fb6d221909..c69b46cab5a 100644
--- a/app/services/users/build_service.rb
+++ b/app/services/users/build_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module Users
class BuildService < BaseService
def initialize(current_user, params = {})
diff --git a/app/services/users/create_service.rb b/app/services/users/create_service.rb
index c8a3c461d60..2ac6dfd90fa 100644
--- a/app/services/users/create_service.rb
+++ b/app/services/users/create_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module Users
class CreateService < BaseService
include NewUserNotifier
diff --git a/app/services/users/destroy_service.rb b/app/services/users/destroy_service.rb
index 06b604dad4d..4bc78b5b64e 100644
--- a/app/services/users/destroy_service.rb
+++ b/app/services/users/destroy_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module Users
class DestroyService
attr_accessor :current_user
diff --git a/app/services/users/last_push_event_service.rb b/app/services/users/last_push_event_service.rb
index 57e446d7f30..a9c9497520b 100644
--- a/app/services/users/last_push_event_service.rb
+++ b/app/services/users/last_push_event_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module Users
# Service class for caching and retrieving the last push event of a user.
class LastPushEventService
diff --git a/app/services/users/migrate_to_ghost_user_service.rb b/app/services/users/migrate_to_ghost_user_service.rb
index a2833b1e051..4d47078bf43 100644
--- a/app/services/users/migrate_to_ghost_user_service.rb
+++ b/app/services/users/migrate_to_ghost_user_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
# When a user is destroyed, some of their associated records are
# moved to a "Ghost User", to prevent these associated records from
# being destroyed.
diff --git a/app/services/users/refresh_authorized_projects_service.rb b/app/services/users/refresh_authorized_projects_service.rb
index f028f5eb0d4..23b63aaabdf 100644
--- a/app/services/users/refresh_authorized_projects_service.rb
+++ b/app/services/users/refresh_authorized_projects_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module Users
# Service for refreshing the authorized projects of a user.
#
diff --git a/app/services/users/respond_to_terms_service.rb b/app/services/users/respond_to_terms_service.rb
index 06d660186cf..9efa3b285a8 100644
--- a/app/services/users/respond_to_terms_service.rb
+++ b/app/services/users/respond_to_terms_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module Users
class RespondToTermsService
def initialize(user, term)
diff --git a/app/services/users/update_service.rb b/app/services/users/update_service.rb
index 15ca1a55a5b..6dadb5a4eac 100644
--- a/app/services/users/update_service.rb
+++ b/app/services/users/update_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module Users
class UpdateService < BaseService
include NewUserNotifier
diff --git a/app/services/wiki_pages/base_service.rb b/app/services/wiki_pages/base_service.rb
index 260c04a8b94..e259f5bd1bc 100644
--- a/app/services/wiki_pages/base_service.rb
+++ b/app/services/wiki_pages/base_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module WikiPages
class BaseService < ::BaseService
private
diff --git a/app/services/wiki_pages/create_service.rb b/app/services/wiki_pages/create_service.rb
index 24a817c06c9..2e2e0fd9033 100644
--- a/app/services/wiki_pages/create_service.rb
+++ b/app/services/wiki_pages/create_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module WikiPages
class CreateService < WikiPages::BaseService
def execute
diff --git a/app/services/wiki_pages/destroy_service.rb b/app/services/wiki_pages/destroy_service.rb
index 6b93fb2f6d7..3f9343339cd 100644
--- a/app/services/wiki_pages/destroy_service.rb
+++ b/app/services/wiki_pages/destroy_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module WikiPages
class DestroyService < WikiPages::BaseService
def execute(page)
diff --git a/app/services/wiki_pages/update_service.rb b/app/services/wiki_pages/update_service.rb
index 93cbd9a509f..2159dd91e9c 100644
--- a/app/services/wiki_pages/update_service.rb
+++ b/app/services/wiki_pages/update_service.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module WikiPages
class UpdateService < WikiPages::BaseService
def execute(page)
diff --git a/app/views/projects/artifacts/file.html.haml b/app/views/projects/artifacts/file.html.haml
index aac7a1870df..f7174d6b2c6 100644
--- a/app/views/projects/artifacts/file.html.haml
+++ b/app/views/projects/artifacts/file.html.haml
@@ -27,6 +27,6 @@
.btn-group{ role: "group" }<
= copy_blob_source_button(blob)
- = open_raw_blob_button(blob)
+ = download_blob_button(blob)
= render 'projects/blob/content', blob: blob
diff --git a/app/views/projects/blob/_header.html.haml b/app/views/projects/blob/_header.html.haml
index 0a0b3ce1d6f..84ccd816d80 100644
--- a/app/views/projects/blob/_header.html.haml
+++ b/app/views/projects/blob/_header.html.haml
@@ -8,8 +8,8 @@
.btn-group{ role: "group" }<
= copy_blob_source_button(blob) unless blame
= open_raw_blob_button(blob)
+ = download_blob_button(blob)
= view_on_environment_button(@commit.sha, @path, @environment) if @environment
-
.btn-group{ role: "group" }<
= render_if_exists 'projects/blob/header_file_locks_link'
= edit_blob_button
diff --git a/changelogs/unreleased/18141-osw-use-monospaced-font-on-diffs-commit-ref.yml b/changelogs/unreleased/18141-osw-use-monospaced-font-on-diffs-commit-ref.yml
deleted file mode 100644
index 43ff880a8cb..00000000000
--- a/changelogs/unreleased/18141-osw-use-monospaced-font-on-diffs-commit-ref.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Use monospaced font for MR diff commit link ref on GFM
-merge_request:
-author:
-type: other
diff --git a/changelogs/unreleased/19439-api-file-sha56-and-head.yml b/changelogs/unreleased/19439-api-file-sha56-and-head.yml
deleted file mode 100644
index 4bc1e560631..00000000000
--- a/changelogs/unreleased/19439-api-file-sha56-and-head.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add SHA256 and HEAD on File API
-merge_request: 19439
-author: ahmet2mir
-type: added
diff --git a/changelogs/unreleased/19468-add_readme_when_creating_project.yml b/changelogs/unreleased/19468-add_readme_when_creating_project.yml
deleted file mode 100644
index f85fc773ef0..00000000000
--- a/changelogs/unreleased/19468-add_readme_when_creating_project.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add option to add README when creating a project
-merge_request: 20335
-author:
-type: added
diff --git a/changelogs/unreleased/20357.yml b/changelogs/unreleased/20357.yml
deleted file mode 100644
index b4ce686eece..00000000000
--- a/changelogs/unreleased/20357.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix double "in" in time to artifact deletion message
-merge_request: 20357
-author: "@bbodenmiller"
-type: fixed
diff --git a/changelogs/unreleased/23705-add-single-file-download-in-repo.yml b/changelogs/unreleased/23705-add-single-file-download-in-repo.yml
new file mode 100644
index 00000000000..f156bfb1101
--- /dev/null
+++ b/changelogs/unreleased/23705-add-single-file-download-in-repo.yml
@@ -0,0 +1,5 @@
+---
+title: Add download button for single file (including raw files) in repository
+merge_request: 20480
+author: Kia Mei Somabes
+type: added
diff --git a/changelogs/unreleased/31583-osw-gfm-complete-status-indication.yml b/changelogs/unreleased/31583-osw-gfm-complete-status-indication.yml
deleted file mode 100644
index 6f2cf275592..00000000000
--- a/changelogs/unreleased/31583-osw-gfm-complete-status-indication.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Present state indication on GFM preview
-merge_request:
-author:
-type: added
diff --git a/changelogs/unreleased/35158-snippets-api-visibility.yml b/changelogs/unreleased/35158-snippets-api-visibility.yml
deleted file mode 100644
index f06015dda46..00000000000
--- a/changelogs/unreleased/35158-snippets-api-visibility.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Expose visibility via Snippets API
-merge_request: 19620
-author: Jan Beckmann
-type: added
diff --git a/changelogs/unreleased/36234-nav-add-groups-dropdown.yml b/changelogs/unreleased/36234-nav-add-groups-dropdown.yml
deleted file mode 100644
index 86a24102665..00000000000
--- a/changelogs/unreleased/36234-nav-add-groups-dropdown.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add dropdown to Groups link in top bar
-merge_request: 18280
-author:
-type: added
diff --git a/changelogs/unreleased/36907-fix-new-issue-link-from-failed-job.yml b/changelogs/unreleased/36907-fix-new-issue-link-from-failed-job.yml
deleted file mode 100644
index 80a50734f72..00000000000
--- a/changelogs/unreleased/36907-fix-new-issue-link-from-failed-job.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix link to job when creating a new issue from a failed job
-merge_request: 20328
-author:
-type: fixed
diff --git a/changelogs/unreleased/37561-add-id-settings.yml b/changelogs/unreleased/37561-add-id-settings.yml
deleted file mode 100644
index 122ac23cb53..00000000000
--- a/changelogs/unreleased/37561-add-id-settings.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Allows settings sections to expand by default when linking to them
-merge_request: 20211
-author:
-type: other
diff --git a/changelogs/unreleased/39543-milestone-page-list-redesign.yml b/changelogs/unreleased/39543-milestone-page-list-redesign.yml
deleted file mode 100644
index dcd73c5eddf..00000000000
--- a/changelogs/unreleased/39543-milestone-page-list-redesign.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Milestone page list redesign
-merge_request: 19832
-author: Constance Okoghenun
-type: changed
diff --git a/changelogs/unreleased/39604-update-top-right-avatar-after-changing-avatar.yml b/changelogs/unreleased/39604-update-top-right-avatar-after-changing-avatar.yml
deleted file mode 100644
index 17192673996..00000000000
--- a/changelogs/unreleased/39604-update-top-right-avatar-after-changing-avatar.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Change avatar image in the header when user updates their avatar.
-merge_request: 20119
-author: Jamie Schembri
-type: added
diff --git a/changelogs/unreleased/40005-u2f-unspported-browsers.yml b/changelogs/unreleased/40005-u2f-unspported-browsers.yml
deleted file mode 100644
index eb5ff99246e..00000000000
--- a/changelogs/unreleased/40005-u2f-unspported-browsers.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Improve U2F workflow when using unsupported browsers
-merge_request: 19938
-author: Jan Beckmann
-type: changed
diff --git a/changelogs/unreleased/40484-ordered-lists-copy-gfm.yml b/changelogs/unreleased/40484-ordered-lists-copy-gfm.yml
deleted file mode 100644
index f4b34909ae9..00000000000
--- a/changelogs/unreleased/40484-ordered-lists-copy-gfm.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Keep lists ordered when copying only list items
-merge_request: 18522
-author: Jan Beckmann
-type: fixed
diff --git a/changelogs/unreleased/42342-teams-pipeline-notifications.yml b/changelogs/unreleased/42342-teams-pipeline-notifications.yml
deleted file mode 100644
index 4ef3a35465b..00000000000
--- a/changelogs/unreleased/42342-teams-pipeline-notifications.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fixes Microsoft Teams notifications for pipeline events
-merge_request: 19632
-author: Jeff Brown
-type: fixed
diff --git a/changelogs/unreleased/43270-import-with-milestones-failing.yml b/changelogs/unreleased/43270-import-with-milestones-failing.yml
deleted file mode 100644
index 13bf8072376..00000000000
--- a/changelogs/unreleased/43270-import-with-milestones-failing.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix label and milestone duplicated records and IID errors
-merge_request: 19961
-author:
-type: fixed
diff --git a/changelogs/unreleased/43446-new-cluster-page-tabs.yml b/changelogs/unreleased/43446-new-cluster-page-tabs.yml
deleted file mode 100644
index e8c73257b16..00000000000
--- a/changelogs/unreleased/43446-new-cluster-page-tabs.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Create new or add existing Kubernetes cluster from a single page
-merge_request: 18963
-author:
-type: changed
diff --git a/changelogs/unreleased/43472-remove-environment-scope-field-on-cluster-creation-form-for-core-starter-plans.yml b/changelogs/unreleased/43472-remove-environment-scope-field-on-cluster-creation-form-for-core-starter-plans.yml
deleted file mode 100644
index 7d2804f0310..00000000000
--- a/changelogs/unreleased/43472-remove-environment-scope-field-on-cluster-creation-form-for-core-starter-plans.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Removes the environment scope field for users that cannot edit it
-merge_request: 19643
-author:
-type: changed
diff --git a/changelogs/unreleased/44674-use-one-column-form-layout-on-admin-area-settings-page.yml b/changelogs/unreleased/44674-use-one-column-form-layout-on-admin-area-settings-page.yml
deleted file mode 100644
index 69733889d5a..00000000000
--- a/changelogs/unreleased/44674-use-one-column-form-layout-on-admin-area-settings-page.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Use one column form layout on Admin Area Settings page
-merge_request:
-author:
-type: changed
diff --git a/changelogs/unreleased/44697-when-editing-a-comment-in-an-issue-the-preview-mode-is-toggled-in-the-main-textarea.yml b/changelogs/unreleased/44697-when-editing-a-comment-in-an-issue-the-preview-mode-is-toggled-in-the-main-textarea.yml
deleted file mode 100644
index 750e28f1a8d..00000000000
--- a/changelogs/unreleased/44697-when-editing-a-comment-in-an-issue-the-preview-mode-is-toggled-in-the-main-textarea.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Fixed bug when editing a comment in an issue,the preview mode is toggled in
- the main textarea
-merge_request: 20112
-author: Constance Okoghenun
-type: fixed
diff --git a/changelogs/unreleased/44725-expire_correct_methods_after_change_head.yml b/changelogs/unreleased/44725-expire_correct_methods_after_change_head.yml
deleted file mode 100644
index 21a65f142c3..00000000000
--- a/changelogs/unreleased/44725-expire_correct_methods_after_change_head.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Expire correct method caches after HEAD changed
-merge_request:
-author:
-type: fixed
diff --git a/changelogs/unreleased/45400-automatically-created-mr-uses-wrong-target-branch-when-branching-from-tag.yml b/changelogs/unreleased/45400-automatically-created-mr-uses-wrong-target-branch-when-branching-from-tag.yml
deleted file mode 100644
index 5aba62435ed..00000000000
--- a/changelogs/unreleased/45400-automatically-created-mr-uses-wrong-target-branch-when-branching-from-tag.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Set MR target branch to default branch if target branch is not valid
-merge_request: 19067
-author:
-type: fixed
diff --git a/changelogs/unreleased/45443-unable-to-save-user-profile-update-with-safari.yml b/changelogs/unreleased/45443-unable-to-save-user-profile-update-with-safari.yml
new file mode 100644
index 00000000000..b18f7aec546
--- /dev/null
+++ b/changelogs/unreleased/45443-unable-to-save-user-profile-update-with-safari.yml
@@ -0,0 +1,5 @@
+---
+title: Resolve "Unable to save user profile update with Safari"
+merge_request: 20676
+author:
+type: fixed
diff --git a/changelogs/unreleased/45487-slack-tag-push-notifs.yml b/changelogs/unreleased/45487-slack-tag-push-notifs.yml
deleted file mode 100644
index 647000bd97c..00000000000
--- a/changelogs/unreleased/45487-slack-tag-push-notifs.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix chat service tag notifications not sending when only default branch enabled
-merge_request: 19864
-author:
-type: fixed
diff --git a/changelogs/unreleased/45557-machine-type-help-links.yml b/changelogs/unreleased/45557-machine-type-help-links.yml
deleted file mode 100644
index 870a650e10b..00000000000
--- a/changelogs/unreleased/45557-machine-type-help-links.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Add machine type and pricing documentation links, add class to labels to make
- bold
-merge_request:
-author:
-type: changed
diff --git a/changelogs/unreleased/45575-invalid-characters-signup.yml b/changelogs/unreleased/45575-invalid-characters-signup.yml
deleted file mode 100644
index 679bd13e59b..00000000000
--- a/changelogs/unreleased/45575-invalid-characters-signup.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: 'Fix username validation order on signup, resolves #45575'
-merge_request: 19610
-author: Jan Beckmann
-type: fixed
diff --git a/changelogs/unreleased/45703-open-web-ide-file-tree.yml b/changelogs/unreleased/45703-open-web-ide-file-tree.yml
deleted file mode 100644
index abee9cad2d5..00000000000
--- a/changelogs/unreleased/45703-open-web-ide-file-tree.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Update WebIDE to show file in tree on load
-merge_request: 19887
-author:
-type: changed
diff --git a/changelogs/unreleased/45738-add-environment-drop-down-to-metrics-dashboard.yml b/changelogs/unreleased/45738-add-environment-drop-down-to-metrics-dashboard.yml
deleted file mode 100644
index 5aaeaaf0448..00000000000
--- a/changelogs/unreleased/45738-add-environment-drop-down-to-metrics-dashboard.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add environment dropdown for the metrics page
-merge_request: 19833
-author:
-type: changed
diff --git a/changelogs/unreleased/45933-webide-fade-uneditable-area.yml b/changelogs/unreleased/45933-webide-fade-uneditable-area.yml
deleted file mode 100644
index dfb186122e7..00000000000
--- a/changelogs/unreleased/45933-webide-fade-uneditable-area.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fade uneditable area in Web IDE
-merge_request: 20008
-author:
-type: changed
diff --git a/changelogs/unreleased/46202-webide-file-states.yml b/changelogs/unreleased/46202-webide-file-states.yml
deleted file mode 100644
index 8d697b643be..00000000000
--- a/changelogs/unreleased/46202-webide-file-states.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Update Web IDE file tree styles
-merge_request: 19969
-author:
-type: changed
diff --git a/changelogs/unreleased/46246-gitlab-project-export-should-use-object-storage.yml b/changelogs/unreleased/46246-gitlab-project-export-should-use-object-storage.yml
deleted file mode 100644
index 908c7a238fd..00000000000
--- a/changelogs/unreleased/46246-gitlab-project-export-should-use-object-storage.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add Object Storage to project export
-merge_request: 20105
-author:
-type: added
diff --git a/changelogs/unreleased/46396-recognise-when-a-user-is-trying-to-validate-a-private-ssh-key-part-1.yml b/changelogs/unreleased/46396-recognise-when-a-user-is-trying-to-validate-a-private-ssh-key-part-1.yml
deleted file mode 100644
index d8c7d612c3d..00000000000
--- a/changelogs/unreleased/46396-recognise-when-a-user-is-trying-to-validate-a-private-ssh-key-part-1.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Update new SSH key page to improve copy
-merge_request: 19994
-author:
-type: other
diff --git a/changelogs/unreleased/46396-recognise-when-a-user-is-trying-to-validate-a-private-ssh-key.yml b/changelogs/unreleased/46396-recognise-when-a-user-is-trying-to-validate-a-private-ssh-key.yml
deleted file mode 100644
index 64bbecf3405..00000000000
--- a/changelogs/unreleased/46396-recognise-when-a-user-is-trying-to-validate-a-private-ssh-key.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Update new SSH key page to improve key input validation
-merge_request: 19997
-author:
-type: other
diff --git a/changelogs/unreleased/46429-creating-a-deploy-token-doesn-t-bring-back-to-the-creation-page.yml b/changelogs/unreleased/46429-creating-a-deploy-token-doesn-t-bring-back-to-the-creation-page.yml
deleted file mode 100644
index b564fb0174f..00000000000
--- a/changelogs/unreleased/46429-creating-a-deploy-token-doesn-t-bring-back-to-the-creation-page.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Allows you to create another deploy token dimmediately after creating one
-merge_request: 19639
-author:
-type: changed
diff --git a/changelogs/unreleased/46546-do-not-pre-select-previous-user-s-when-creating-protected-branches.yml b/changelogs/unreleased/46546-do-not-pre-select-previous-user-s-when-creating-protected-branches.yml
deleted file mode 100644
index 7d42d971022..00000000000
--- a/changelogs/unreleased/46546-do-not-pre-select-previous-user-s-when-creating-protected-branches.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: CE port gitlab-ee!6112
-merge_request: 19714
-author:
-type: other
diff --git a/changelogs/unreleased/46571-webhooks-nil-password.yml b/changelogs/unreleased/46571-webhooks-nil-password.yml
deleted file mode 100644
index 34c5f09478f..00000000000
--- a/changelogs/unreleased/46571-webhooks-nil-password.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix webhook error when password is not present
-merge_request: 19945
-author: Jan Beckmann
-type: fixed
diff --git a/changelogs/unreleased/46783-removed-omniauth-provider-causing-invalid-application-setting.yml b/changelogs/unreleased/46783-removed-omniauth-provider-causing-invalid-application-setting.yml
deleted file mode 100644
index d5ecf5163d4..00000000000
--- a/changelogs/unreleased/46783-removed-omniauth-provider-causing-invalid-application-setting.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Ignore unknown OAuth sources in ApplicationSetting
-merge_request: 20129
-author:
-type: fixed
diff --git a/changelogs/unreleased/46831-remove-unused-bootstrap-component-css.yml b/changelogs/unreleased/46831-remove-unused-bootstrap-component-css.yml
deleted file mode 100644
index e0e2b481b69..00000000000
--- a/changelogs/unreleased/46831-remove-unused-bootstrap-component-css.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Removes unused bootstrap 4 scss files
-merge_request: 19423
-author:
-type: deprecated
diff --git a/changelogs/unreleased/46861-issuable-title-with-longer-username.yml b/changelogs/unreleased/46861-issuable-title-with-longer-username.yml
deleted file mode 100644
index 9df6879deb6..00000000000
--- a/changelogs/unreleased/46861-issuable-title-with-longer-username.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix CSS for buttons not to be hidden on issues/MR title
-merge_request: 19176
-author: Takuya Noguchi
-type: fixed
diff --git a/changelogs/unreleased/46963-add_readme_button_for_non_empty_project.yml b/changelogs/unreleased/46963-add_readme_button_for_non_empty_project.yml
deleted file mode 100644
index fdf41a26c4d..00000000000
--- a/changelogs/unreleased/46963-add_readme_button_for_non_empty_project.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add readme button to non-empty project page
-merge_request: 20104
-author:
-type: fixed
diff --git a/changelogs/unreleased/47040-inconsistent-job-list-in-job-details-view.yml b/changelogs/unreleased/47040-inconsistent-job-list-in-job-details-view.yml
deleted file mode 100644
index 5629a40a1f1..00000000000
--- a/changelogs/unreleased/47040-inconsistent-job-list-in-job-details-view.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Show jobs from same pipeline in sidebar in job details view.
-merge_request: 20243
-author:
-type: fixed
diff --git a/changelogs/unreleased/47050-quick-actions-case-insensitive.yml b/changelogs/unreleased/47050-quick-actions-case-insensitive.yml
deleted file mode 100644
index 176aba627b9..00000000000
--- a/changelogs/unreleased/47050-quick-actions-case-insensitive.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Make quick commands case insensitive
-merge_request: 19614
-author: Jan Beckmann
-type: fixed
diff --git a/changelogs/unreleased/47145-quick-actions-confidential.yml b/changelogs/unreleased/47145-quick-actions-confidential.yml
deleted file mode 100644
index 7ae4e2268af..00000000000
--- a/changelogs/unreleased/47145-quick-actions-confidential.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add /confidential quick action
-merge_request:
-author: Jan Beckmann
-type: added
diff --git a/changelogs/unreleased/47221-explain-what-groups-are-in-the-new-group-page.yml b/changelogs/unreleased/47221-explain-what-groups-are-in-the-new-group-page.yml
deleted file mode 100644
index 94c58a3863a..00000000000
--- a/changelogs/unreleased/47221-explain-what-groups-are-in-the-new-group-page.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Update new group page to better explain what groups are
-merge_request: 19991
-author:
-type: other
diff --git a/changelogs/unreleased/47274-help-users-find-our-contributing-page.yml b/changelogs/unreleased/47274-help-users-find-our-contributing-page.yml
deleted file mode 100644
index ed13c917a2e..00000000000
--- a/changelogs/unreleased/47274-help-users-find-our-contributing-page.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add a link to the contributing page in the user dropdown
-merge_request: 19708
-author:
-type: added
diff --git a/changelogs/unreleased/47462-issues-disabled-group-page.yml b/changelogs/unreleased/47462-issues-disabled-group-page.yml
deleted file mode 100644
index c8cad608cb3..00000000000
--- a/changelogs/unreleased/47462-issues-disabled-group-page.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Only show new issue / new merge request on group page when issues / merge requests
- are enabled
-merge_request: 19869
-author: Jan Beckmann
-type: fixed
diff --git a/changelogs/unreleased/47631-operations-kubernetes-option-is-always-visible-when-repository-or-builds-are-disabled.yml b/changelogs/unreleased/47631-operations-kubernetes-option-is-always-visible-when-repository-or-builds-are-disabled.yml
deleted file mode 100644
index 5c23b3ef320..00000000000
--- a/changelogs/unreleased/47631-operations-kubernetes-option-is-always-visible-when-repository-or-builds-are-disabled.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Omits operartions and kubernetes item from project sidebar when repository or builds are disabled
-merge_request: 19835
-author:
-type: fixed
diff --git a/changelogs/unreleased/47794-environment-scope-cluster-page.yml b/changelogs/unreleased/47794-environment-scope-cluster-page.yml
deleted file mode 100644
index 75eb7ec209c..00000000000
--- a/changelogs/unreleased/47794-environment-scope-cluster-page.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Change environment scope text depending on number of project clusters. Update
- form to only include form-groups
-merge_request:
-author:
-type: changed
diff --git a/changelogs/unreleased/47865-changelog-for-style-updates.yml b/changelogs/unreleased/47865-changelog-for-style-updates.yml
deleted file mode 100644
index 2e4fbbda000..00000000000
--- a/changelogs/unreleased/47865-changelog-for-style-updates.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Minor style changes to personal access token form and scope checkboxes
-merge_request: 20052
-author:
-type: other
diff --git a/changelogs/unreleased/48036-fix-web-ide-blob-crash.yml b/changelogs/unreleased/48036-fix-web-ide-blob-crash.yml
new file mode 100644
index 00000000000..6ff209b5181
--- /dev/null
+++ b/changelogs/unreleased/48036-fix-web-ide-blob-crash.yml
@@ -0,0 +1,5 @@
+---
+title: Fix Web IDE crashing on directories named 'blob'
+merge_request: 20712
+author:
+type: fixed
diff --git a/changelogs/unreleased/48050-add-full-commit-sha.yml b/changelogs/unreleased/48050-add-full-commit-sha.yml
deleted file mode 100644
index 30376fe35e0..00000000000
--- a/changelogs/unreleased/48050-add-full-commit-sha.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Uses long sha version of the merged commit in MR widget copy to clipboard button
-merge_request: 19955
-author:
-type: other
diff --git a/changelogs/unreleased/48100-fix-branch-not-shown.yml b/changelogs/unreleased/48100-fix-branch-not-shown.yml
deleted file mode 100644
index 917c5c23f67..00000000000
--- a/changelogs/unreleased/48100-fix-branch-not-shown.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Fix branches are not shown in Merge Request dropdown when preferred language
- is not English
-merge_request: 20016
-author: Hiroyuki Sato
-type: fixed
diff --git a/changelogs/unreleased/48153-date-selection-dialog-broken-when-creating-a-new-milestone.yml b/changelogs/unreleased/48153-date-selection-dialog-broken-when-creating-a-new-milestone.yml
deleted file mode 100644
index 13ab5b0467d..00000000000
--- a/changelogs/unreleased/48153-date-selection-dialog-broken-when-creating-a-new-milestone.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Prevent browser autocomplete for milestone date fields
-merge_request:
-author:
-type: fixed
diff --git a/changelogs/unreleased/48237-toggle-file-comments.yml b/changelogs/unreleased/48237-toggle-file-comments.yml
deleted file mode 100644
index 2e893aad0b2..00000000000
--- a/changelogs/unreleased/48237-toggle-file-comments.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fixes toggle discussion button not expanding collapsed discussions
-merge_request: 20452
-author:
-type: fixed
diff --git a/changelogs/unreleased/48378-avatar-upload.yml b/changelogs/unreleased/48378-avatar-upload.yml
deleted file mode 100644
index 1e359ee72d5..00000000000
--- a/changelogs/unreleased/48378-avatar-upload.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fixes issue with uploading same image to Profile Avatar twice
-merge_request: 20161
-author: Chirag Bhatia
-type: fixed
diff --git a/changelogs/unreleased/48497-merge-request-refactor-displays-changes-dropdown-incorrectly.yml b/changelogs/unreleased/48497-merge-request-refactor-displays-changes-dropdown-incorrectly.yml
deleted file mode 100644
index 41af2f8cc4f..00000000000
--- a/changelogs/unreleased/48497-merge-request-refactor-displays-changes-dropdown-incorrectly.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fixed Merge request changes dropdown displays incorrectly
-merge_request: 20237
-author: Constance Okoghenun
-type: fixed
diff --git a/changelogs/unreleased/48515-sql-queries-are-not-shown-from-the-performance-bar-in-safari.yml b/changelogs/unreleased/48515-sql-queries-are-not-shown-from-the-performance-bar-in-safari.yml
deleted file mode 100644
index 65c59dbf31f..00000000000
--- a/changelogs/unreleased/48515-sql-queries-are-not-shown-from-the-performance-bar-in-safari.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix performance bar modal visibility in Safari
-merge_request:
-author:
-type: fixed
diff --git a/changelogs/unreleased/48578-disable-gcp-free-credit-banner-at-instance-level.yml b/changelogs/unreleased/48578-disable-gcp-free-credit-banner-at-instance-level.yml
deleted file mode 100644
index 575767df912..00000000000
--- a/changelogs/unreleased/48578-disable-gcp-free-credit-banner-at-instance-level.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add option to hide third party offers in admin application settings
-merge_request: 20379
-author:
-type: added
diff --git a/changelogs/unreleased/48603-merge-request-refactor-title-and-copy-to-clipboard-button-are-behind-the-action-buttons.yml b/changelogs/unreleased/48603-merge-request-refactor-title-and-copy-to-clipboard-button-are-behind-the-action-buttons.yml
deleted file mode 100644
index 792c7814f7e..00000000000
--- a/changelogs/unreleased/48603-merge-request-refactor-title-and-copy-to-clipboard-button-are-behind-the-action-buttons.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix overlapping file title and file actions in MR changes tag
-merge_request:
-author:
-type: fixed
diff --git a/changelogs/unreleased/48634-header-navbar-line-separator-is-missing.yml b/changelogs/unreleased/48634-header-navbar-line-separator-is-missing.yml
deleted file mode 100644
index 92d9295982e..00000000000
--- a/changelogs/unreleased/48634-header-navbar-line-separator-is-missing.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Line separator to the left of the 'Admin area' wrench icon had vanished
-merge_request: 20282
-author: bitsapien
-type: fixed
diff --git a/changelogs/unreleased/48661-node-6-and-7-compatibility-broken-by-recent-monaco-editor-upgrade.yml b/changelogs/unreleased/48661-node-6-and-7-compatibility-broken-by-recent-monaco-editor-upgrade.yml
deleted file mode 100644
index 36a4b5f754d..00000000000
--- a/changelogs/unreleased/48661-node-6-and-7-compatibility-broken-by-recent-monaco-editor-upgrade.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Resolve compatibility issues with node 6
-merge_request: 20461
-author:
-type: fixed
diff --git a/changelogs/unreleased/48670-application-settings-may-not-be-invalidated-if-migrations-are-run.yml b/changelogs/unreleased/48670-application-settings-may-not-be-invalidated-if-migrations-are-run.yml
deleted file mode 100644
index f4267582f89..00000000000
--- a/changelogs/unreleased/48670-application-settings-may-not-be-invalidated-if-migrations-are-run.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Stop relying on migrations in the CacheableAttributes cache key and cache attributes
- for 1 minute instead
-merge_request: 20389
-author:
-type: fixed
diff --git a/changelogs/unreleased/48677-also-check-auto_sign_in_with_provider.yml b/changelogs/unreleased/48677-also-check-auto_sign_in_with_provider.yml
deleted file mode 100644
index 3021fe6b9c8..00000000000
--- a/changelogs/unreleased/48677-also-check-auto_sign_in_with_provider.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Load Devise with Omniauth when auto_sign_in_with_provider is configured
-merge_request: 20302
-author:
-type: fixed
diff --git a/changelogs/unreleased/48789-remove-event-listeners-scroll.yml b/changelogs/unreleased/48789-remove-event-listeners-scroll.yml
deleted file mode 100644
index 9cc3f7adc36..00000000000
--- a/changelogs/unreleased/48789-remove-event-listeners-scroll.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Improves performance on Merge Request diff tab by removing the scroll event
- listeners being added to every file
-merge_request:
-author:
-type: performance
diff --git a/changelogs/unreleased/48825-performance.yml b/changelogs/unreleased/48825-performance.yml
deleted file mode 100644
index 428852f6f8b..00000000000
--- a/changelogs/unreleased/48825-performance.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-title: Improves performance of mr code, by fixing the state being mutated outside
- of the store in the util function trimFirstCharOfLineContent and in map operations.
- Avoids map operation in an empty array. Adds specs to the trimFirstCharOfLineContent
- function
-merge_request: 20380
-author: filipa
-type: performance
diff --git a/changelogs/unreleased/48894-fix-rss-button-interaction.yml b/changelogs/unreleased/48894-fix-rss-button-interaction.yml
deleted file mode 100644
index 546a4233d7e..00000000000
--- a/changelogs/unreleased/48894-fix-rss-button-interaction.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix RSS button interaction on Dashboard, Project and Group activities
-merge_request: 20549
-author:
-type: fixed
diff --git a/changelogs/unreleased/48951-clean-up.yml b/changelogs/unreleased/48951-clean-up.yml
deleted file mode 100644
index 0102cd43f96..00000000000
--- a/changelogs/unreleased/48951-clean-up.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Removes unused vuex code in mr refactor and removes unneeded dependencies
-merge_request: 20499
-author:
-type: other
diff --git a/changelogs/unreleased/48978-fix-helm-installation-on-cluster.yml b/changelogs/unreleased/48978-fix-helm-installation-on-cluster.yml
deleted file mode 100644
index f786d9e2235..00000000000
--- a/changelogs/unreleased/48978-fix-helm-installation-on-cluster.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fixes base command used in Helm installations
-merge_request: 20471
-author:
-type: fixed
diff --git a/changelogs/unreleased/add-missing-index-for-deployments.yml b/changelogs/unreleased/add-missing-index-for-deployments.yml
deleted file mode 100644
index 7863c0ee039..00000000000
--- a/changelogs/unreleased/add-missing-index-for-deployments.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add index on deployable_type/id for deployments
-merge_request:
-author:
-type: performance
diff --git a/changelogs/unreleased/add-more-rebase-logging.yml b/changelogs/unreleased/add-more-rebase-logging.yml
deleted file mode 100644
index a7d1c3aa664..00000000000
--- a/changelogs/unreleased/add-more-rebase-logging.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add more detailed logging to githost.log when rebasing
-merge_request:
-author:
-type: other
diff --git a/changelogs/unreleased/add-title-placeholder-for-new-issues.yml b/changelogs/unreleased/add-title-placeholder-for-new-issues.yml
deleted file mode 100644
index ce9e3b4ac18..00000000000
--- a/changelogs/unreleased/add-title-placeholder-for-new-issues.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add title placeholder for new issues
-merge_request: 20271
-author: George Tsiolis
-type: changed
diff --git a/changelogs/unreleased/add-total-time-flat-printer-for-profiling.yml b/changelogs/unreleased/add-total-time-flat-printer-for-profiling.yml
new file mode 100644
index 00000000000..37a4e31896e
--- /dev/null
+++ b/changelogs/unreleased/add-total-time-flat-printer-for-profiling.yml
@@ -0,0 +1,6 @@
+---
+title: Add a Gitlab::Profiler.print_by_total_time convenience method for profiling
+ from a Rails console
+merge_request:
+author:
+type: other
diff --git a/changelogs/unreleased/an-no-healthcheck-until-brooklyn.yml b/changelogs/unreleased/an-no-healthcheck-until-brooklyn.yml
deleted file mode 100644
index 4942688d00f..00000000000
--- a/changelogs/unreleased/an-no-healthcheck-until-brooklyn.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Remove healthchecks from prometheus endpoint
-merge_request: 20565
-author:
-type: fixed
diff --git a/changelogs/unreleased/author-doc-fix.yml b/changelogs/unreleased/author-doc-fix.yml
deleted file mode 100644
index 83521543239..00000000000
--- a/changelogs/unreleased/author-doc-fix.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix fields for author & assignee in MR API docs.
-merge_request: 19798
-author: gfyoung
-type: fixed
diff --git a/changelogs/unreleased/backstage-gb-stages-position-migration-clean-up.yml b/changelogs/unreleased/backstage-gb-stages-position-migration-clean-up.yml
deleted file mode 100644
index d2ada88870b..00000000000
--- a/changelogs/unreleased/backstage-gb-stages-position-migration-clean-up.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fully migrate pipeline stages position
-merge_request: 19369
-author:
-type: performance
diff --git a/changelogs/unreleased/bjk-48176_ruby_gc.yml b/changelogs/unreleased/bjk-48176_ruby_gc.yml
deleted file mode 100644
index 45c6338df81..00000000000
--- a/changelogs/unreleased/bjk-48176_ruby_gc.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Cleanup Prometheus ruby metrics
-merge_request: 20039
-author: Ben Kochie
-type: fixed
diff --git a/changelogs/unreleased/blackst0ne-add-gemfile-rails5-lock-check.yml b/changelogs/unreleased/blackst0ne-add-gemfile-rails5-lock-check.yml
deleted file mode 100644
index 69d49f3e3e0..00000000000
--- a/changelogs/unreleased/blackst0ne-add-gemfile-rails5-lock-check.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add CI job to check Gemfile.rails5.lock
-merge_request: 19605
-author: "@blackst0ne"
-type: other
diff --git a/changelogs/unreleased/blackst0ne-bump-grape-path-helpers-gem-to-1-0-5.yml b/changelogs/unreleased/blackst0ne-bump-grape-path-helpers-gem-to-1-0-5.yml
deleted file mode 100644
index 9d975ff81bf..00000000000
--- a/changelogs/unreleased/blackst0ne-bump-grape-path-helpers-gem-to-1-0-5.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Bump grape-path-helpers to 1.0.5
-merge_request: 19604
-author: "@blackst0ne"
-type: other
diff --git a/changelogs/unreleased/blackst0ne-fix-protect-from-forgery-in-application-controller.yml b/changelogs/unreleased/blackst0ne-fix-protect-from-forgery-in-application-controller.yml
deleted file mode 100644
index da75ea8b09e..00000000000
--- a/changelogs/unreleased/blackst0ne-fix-protect-from-forgery-in-application-controller.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: "[Rails5] Force the callback run first"
-merge_request: 20055
-author: "@blackst0ne"
-type: fixed
diff --git a/changelogs/unreleased/blackst0ne-rails5-activerecord-statementinvalid-mysql2-error-expression-1-of-select-list-is-not-in-group-by-clause.yml b/changelogs/unreleased/blackst0ne-rails5-activerecord-statementinvalid-mysql2-error-expression-1-of-select-list-is-not-in-group-by-clause.yml
deleted file mode 100644
index d9cccc49830..00000000000
--- a/changelogs/unreleased/blackst0ne-rails5-activerecord-statementinvalid-mysql2-error-expression-1-of-select-list-is-not-in-group-by-clause.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: "[Rails5] Fix milestone GROUP BY query"
-merge_request: 20256
-author: "@blackst0ne"
-type: fixed
diff --git a/changelogs/unreleased/blackst0ne-rails5-expected-search-search-seed_project-got-nil.yml b/changelogs/unreleased/blackst0ne-rails5-expected-search-search-seed_project-got-nil.yml
deleted file mode 100644
index e7bb2703b03..00000000000
--- a/changelogs/unreleased/blackst0ne-rails5-expected-search-search-seed_project-got-nil.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: "[Rails5] Fix sessions_controller_spec"
-merge_request: 19936
-author: "@blackst0ne"
-type: fixed
diff --git a/changelogs/unreleased/blackst0ne-rails5-expected-the-response-to-have-status-code-ok-but-it-was-404.yml b/changelogs/unreleased/blackst0ne-rails5-expected-the-response-to-have-status-code-ok-but-it-was-404.yml
deleted file mode 100644
index fad15de2dd5..00000000000
--- a/changelogs/unreleased/blackst0ne-rails5-expected-the-response-to-have-status-code-ok-but-it-was-404.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: "[Rails5] Set request.format for artifacts_controller"
-merge_request: 19937
-author: "@blackst0ne"
-type: fixed
diff --git a/changelogs/unreleased/blackst0ne-rails5-fix-blob-requests-format.yml b/changelogs/unreleased/blackst0ne-rails5-fix-blob-requests-format.yml
deleted file mode 100644
index a83aa03606a..00000000000
--- a/changelogs/unreleased/blackst0ne-rails5-fix-blob-requests-format.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: "[Rails5] Explicitly set request.format for blob_controller"
-merge_request: 19876
-author: "@blackst0ne"
-type: fixed
diff --git a/changelogs/unreleased/blackst0ne-rails5-fix-data-store-spec.yml b/changelogs/unreleased/blackst0ne-rails5-fix-data-store-spec.yml
deleted file mode 100644
index 403c3764321..00000000000
--- a/changelogs/unreleased/blackst0ne-rails5-fix-data-store-spec.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: '[Rails5] Fix "-1 is not a valid data_store"'
-merge_request: 19917
-author: "@blackst0ne"
-type: fixed
diff --git a/changelogs/unreleased/blackst0ne-rails5-fix-optimistic-lock-values.yml b/changelogs/unreleased/blackst0ne-rails5-fix-optimistic-lock-values.yml
deleted file mode 100644
index 1915dff73ab..00000000000
--- a/changelogs/unreleased/blackst0ne-rails5-fix-optimistic-lock-values.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: "[Rails5] Fix optimistic lock value"
-merge_request: 19878
-author: "@blackst0ne"
-type: fixed
diff --git a/changelogs/unreleased/blackst0ne-rails5-fix-pipeline-schedules-controller-spec.yml b/changelogs/unreleased/blackst0ne-rails5-fix-pipeline-schedules-controller-spec.yml
deleted file mode 100644
index 7a2b19ad681..00000000000
--- a/changelogs/unreleased/blackst0ne-rails5-fix-pipeline-schedules-controller-spec.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: "[Rails5] Fix pipeline_schedules_controller_spec"
-merge_request: 19919
-author: "@blackst0ne"
-type: fixed
diff --git a/changelogs/unreleased/blackst0ne-rails5-fix-snippets-finder.yml b/changelogs/unreleased/blackst0ne-rails5-fix-snippets-finder.yml
deleted file mode 100644
index 597b85de26f..00000000000
--- a/changelogs/unreleased/blackst0ne-rails5-fix-snippets-finder.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: "[Rails5] Fix snippets_finder arel queries"
-merge_request: 19796
-author: "@blackst0ne"
-type: fixed
diff --git a/changelogs/unreleased/blackst0ne-rails5-found-new-routes-that-could-cause-conflicts-with-existing-namespaced-routes.yml b/changelogs/unreleased/blackst0ne-rails5-found-new-routes-that-could-cause-conflicts-with-existing-namespaced-routes.yml
deleted file mode 100644
index c8d916af824..00000000000
--- a/changelogs/unreleased/blackst0ne-rails5-found-new-routes-that-could-cause-conflicts-with-existing-namespaced-routes.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: "[Rails5] Fix ActionCable '/cable' mountpoint conflict"
-merge_request: 20015
-author: "@blackst0ne"
-type: fixed
diff --git a/changelogs/unreleased/blackst0ne-rails5-invalid-single-table-inheritance-type-group-is-not-a-subclass-of-namespace.yml b/changelogs/unreleased/blackst0ne-rails5-invalid-single-table-inheritance-type-group-is-not-a-subclass-of-namespace.yml
deleted file mode 100644
index 92e6ce35941..00000000000
--- a/changelogs/unreleased/blackst0ne-rails5-invalid-single-table-inheritance-type-group-is-not-a-subclass-of-namespace.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: "[Rails5] Invalid single-table inheritance type: Group is not a subclass of
- Namespace"
-merge_request: 19918
-author: "@blackst0ne"
-type: fixed
diff --git a/changelogs/unreleased/blackst0ne-rails5-set-request-format-in--commits-controller.yml b/changelogs/unreleased/blackst0ne-rails5-set-request-format-in--commits-controller.yml
deleted file mode 100644
index 3f8f8fd5d66..00000000000
--- a/changelogs/unreleased/blackst0ne-rails5-set-request-format-in--commits-controller.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: "[Rails5] Set request.format in commits_controller"
-merge_request: 20023
-author: "@blackst0ne"
-type: fixed
diff --git a/changelogs/unreleased/build-chunks-on-object-storage.yml b/changelogs/unreleased/build-chunks-on-object-storage.yml
deleted file mode 100644
index 9f36dfee378..00000000000
--- a/changelogs/unreleased/build-chunks-on-object-storage.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Use object storage as the first class persistable store for new live trace
- architecture
-merge_request: 19515
-author:
-type: changed
diff --git a/changelogs/unreleased/bump-carrierwave-to-1-2-3.yml b/changelogs/unreleased/bump-carrierwave-to-1-2-3.yml
deleted file mode 100644
index 373ac48553e..00000000000
--- a/changelogs/unreleased/bump-carrierwave-to-1-2-3.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Bump carrierwave gem verion to 1.2.3
-merge_request: 20287
-author:
-type: performance
diff --git a/changelogs/unreleased/bvl-fix-maintainer-push-rejected.yml b/changelogs/unreleased/bvl-fix-maintainer-push-rejected.yml
deleted file mode 100644
index 54154ad2449..00000000000
--- a/changelogs/unreleased/bvl-fix-maintainer-push-rejected.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Fix bug where maintainer would not be allowed to push to forks with merge requests
- that have `Allow maintainer edits` enabled.
-merge_request: 18968
-author:
-type: fixed
diff --git a/changelogs/unreleased/bvl-graphql-nested-merge-request.yml b/changelogs/unreleased/bvl-graphql-nested-merge-request.yml
deleted file mode 100644
index f0f0488d31a..00000000000
--- a/changelogs/unreleased/bvl-graphql-nested-merge-request.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Allow querying a single merge request within a project
-merge_request: 19853
-author:
-type: changed
diff --git a/changelogs/unreleased/bvl-graphql-permissions.yml b/changelogs/unreleased/bvl-graphql-permissions.yml
deleted file mode 100644
index 42d5e24bb15..00000000000
--- a/changelogs/unreleased/bvl-graphql-permissions.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: 'Expose permissions of the current user on resources in GraphQL'
-merge_request: 20152
-author:
-type: added
diff --git a/changelogs/unreleased/bvl-graphql-pipeline-lists.yml b/changelogs/unreleased/bvl-graphql-pipeline-lists.yml
deleted file mode 100644
index be258dc12ad..00000000000
--- a/changelogs/unreleased/bvl-graphql-pipeline-lists.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add pipeline lists to GraphQL
-merge_request: 20249
-author:
-type: added
diff --git a/changelogs/unreleased/bvl-preload-parents-after-pagination.yml b/changelogs/unreleased/bvl-preload-parents-after-pagination.yml
deleted file mode 100644
index ff3d4716d34..00000000000
--- a/changelogs/unreleased/bvl-preload-parents-after-pagination.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Reduce the number of queries when searching for groups
-merge_request: 20398
-author:
-type: performance
diff --git a/changelogs/unreleased/bw-enable-commonmark.yml b/changelogs/unreleased/bw-enable-commonmark.yml
deleted file mode 100644
index 89252e5063d..00000000000
--- a/changelogs/unreleased/bw-enable-commonmark.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Use CommonMark syntax and rendering for new Markdown content
-merge_request: 19331
-author:
-type: added
diff --git a/changelogs/unreleased/cache-doc-fix.yml b/changelogs/unreleased/cache-doc-fix.yml
deleted file mode 100644
index db4726a92e9..00000000000
--- a/changelogs/unreleased/cache-doc-fix.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: 'Remove incorrect CI doc re: PowerShell'
-merge_request: 19622
-author: gfyoung
-type: fixed
diff --git a/changelogs/unreleased/ce-5024-filename-search.yml b/changelogs/unreleased/ce-5024-filename-search.yml
deleted file mode 100644
index a8bf9b1f802..00000000000
--- a/changelogs/unreleased/ce-5024-filename-search.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add filename filtering to code search
-merge_request: 19509
-author:
-type: added
diff --git a/changelogs/unreleased/close-revoke-deploy-token-modal-on-escape-keypress.yml b/changelogs/unreleased/close-revoke-deploy-token-modal-on-escape-keypress.yml
deleted file mode 100644
index 98316cae406..00000000000
--- a/changelogs/unreleased/close-revoke-deploy-token-modal-on-escape-keypress.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Close revoke deploy token modal on escape keypress
-merge_request: 20347
-author: George Tsiolis
-type: changed
diff --git a/changelogs/unreleased/commits_api_with_stats.yml b/changelogs/unreleased/commits_api_with_stats.yml
deleted file mode 100644
index 4357f1a6305..00000000000
--- a/changelogs/unreleased/commits_api_with_stats.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Added with_statsoption for GET /projects/:id/repository/commits
-merge_request:
-author:
-type: added
diff --git a/changelogs/unreleased/cr-add-locked-state-to-MR.yml b/changelogs/unreleased/cr-add-locked-state-to-MR.yml
deleted file mode 100644
index f290ddc0b87..00000000000
--- a/changelogs/unreleased/cr-add-locked-state-to-MR.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Adds the `locked` state to the merge request API so that it can be used as a search filter.
-merge_request: 20186
-author:
-type: fixed
diff --git a/changelogs/unreleased/cr-keep-issue-labels.yml b/changelogs/unreleased/cr-keep-issue-labels.yml
deleted file mode 100644
index 051e7faffea..00000000000
--- a/changelogs/unreleased/cr-keep-issue-labels.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Keeps the label on an issue when the issue is moved.
-merge_request: 20036
-author:
-type: fixed
diff --git a/changelogs/unreleased/da-port-cte-to-ce.yml b/changelogs/unreleased/da-port-cte-to-ce.yml
deleted file mode 100644
index 6fa759fcf7d..00000000000
--- a/changelogs/unreleased/da-port-cte-to-ce.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add Gitlab::SQL:CTE for easily building CTE statements
-merge_request:
-author:
-type: added
diff --git a/changelogs/unreleased/db-configure-after-drop-tables.yml b/changelogs/unreleased/db-configure-after-drop-tables.yml
deleted file mode 100644
index 00844b334fa..00000000000
--- a/changelogs/unreleased/db-configure-after-drop-tables.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fixes an issue where migrations instead of schema loading were run
-merge_request: 20227
-author:
-type: changed
diff --git a/changelogs/unreleased/dm-blockquote-trailing-whitespace.yml b/changelogs/unreleased/dm-blockquote-trailing-whitespace.yml
deleted file mode 100644
index 98ecdde4f4c..00000000000
--- a/changelogs/unreleased/dm-blockquote-trailing-whitespace.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Allow trailing whitespace on blockquote fence lines
-merge_request:
-author:
-type: fixed
diff --git a/changelogs/unreleased/dm-branch-api-can-push.yml b/changelogs/unreleased/dm-branch-api-can-push.yml
deleted file mode 100644
index 3be8962089b..00000000000
--- a/changelogs/unreleased/dm-branch-api-can-push.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Expose whether current user can push into a branch on branches API
-merge_request:
-author:
-type: added
diff --git a/changelogs/unreleased/dm-invalid-active-service-template.yml b/changelogs/unreleased/dm-invalid-active-service-template.yml
deleted file mode 100644
index 8b77fac55b9..00000000000
--- a/changelogs/unreleased/dm-invalid-active-service-template.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Deactivate new KubernetesService created from active template to prevent project creation from failing
-merge_request:
-author:
-type: fixed
diff --git a/changelogs/unreleased/dm-label-reference-period.yml b/changelogs/unreleased/dm-label-reference-period.yml
deleted file mode 100644
index 9fdd590641d..00000000000
--- a/changelogs/unreleased/dm-label-reference-period.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Properly detect label reference if followed by period or question mark
-merge_request:
-author:
-type: fixed
diff --git a/changelogs/unreleased/dm-user-without-projects-performance.yml b/changelogs/unreleased/dm-user-without-projects-performance.yml
deleted file mode 100644
index e7fc0ae6d54..00000000000
--- a/changelogs/unreleased/dm-user-without-projects-performance.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Improve performance of listing users without projects
-merge_request:
-author:
-type: performance
diff --git a/changelogs/unreleased/existing-gcp-accounts.yml b/changelogs/unreleased/existing-gcp-accounts.yml
deleted file mode 100644
index ce396c70b4a..00000000000
--- a/changelogs/unreleased/existing-gcp-accounts.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add back copy for existing gcp accounts within offer banner
-merge_request:
-author:
-type: changed
diff --git a/changelogs/unreleased/expose-ci-url.yml b/changelogs/unreleased/expose-ci-url.yml
deleted file mode 100644
index b6ad7d18e0d..00000000000
--- a/changelogs/unreleased/expose-ci-url.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add CI_PIPELINE_URL and CI_JOB_URL
-merge_request: 19618
-author:
-type: added
diff --git a/changelogs/unreleased/feature-oidc-subject-claim.yml b/changelogs/unreleased/feature-oidc-subject-claim.yml
deleted file mode 100644
index e995ca26234..00000000000
--- a/changelogs/unreleased/feature-oidc-subject-claim.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Don't hash user ID in OIDC subject claim
-merge_request: 19784
-author: Markus Koller
-type: changed
diff --git a/changelogs/unreleased/fix-boards-issue-highlight.yml b/changelogs/unreleased/fix-boards-issue-highlight.yml
deleted file mode 100644
index 0cc3faa81ca..00000000000
--- a/changelogs/unreleased/fix-boards-issue-highlight.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix boards issue highlight
-merge_request: 20063
-author: George Tsiolis
-type: changed
diff --git a/changelogs/unreleased/fix-br-decode.yml b/changelogs/unreleased/fix-br-decode.yml
deleted file mode 100644
index 66ecc3deb35..00000000000
--- a/changelogs/unreleased/fix-br-decode.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: mergeError message has been binded using v-html directive
-merge_request: 19058
-author: Murat Dogan
-type: fixed
diff --git a/changelogs/unreleased/fix-gb-fix-deserializing-ci-yaml-variables.yml b/changelogs/unreleased/fix-gb-fix-deserializing-ci-yaml-variables.yml
new file mode 100644
index 00000000000..80b069c9251
--- /dev/null
+++ b/changelogs/unreleased/fix-gb-fix-deserializing-ci-yaml-variables.yml
@@ -0,0 +1,5 @@
+---
+title: Fix accessing imported pipeline builds
+merge_request: 20713
+author:
+type: fixed
diff --git a/changelogs/unreleased/fix-gitaly-mr-creation-limits.yml b/changelogs/unreleased/fix-gitaly-mr-creation-limits.yml
deleted file mode 100644
index e903f2e5277..00000000000
--- a/changelogs/unreleased/fix-gitaly-mr-creation-limits.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix merge request diffs when created with gitaly_diff_between enabled
-merge_request:
-author:
-type: fixed
diff --git a/changelogs/unreleased/fix-groups-api-ordering.yml b/changelogs/unreleased/fix-groups-api-ordering.yml
deleted file mode 100644
index 3a6a7f84356..00000000000
--- a/changelogs/unreleased/fix-groups-api-ordering.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-title: Fixed pagination of groups API
-merge_request: 19665
-author: Marko, Peter
-type: added
diff --git a/changelogs/unreleased/fix-last-commit-author-link-is-blue.yml b/changelogs/unreleased/fix-last-commit-author-link-is-blue.yml
deleted file mode 100644
index aaceeaecfb1..00000000000
--- a/changelogs/unreleased/fix-last-commit-author-link-is-blue.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Updated last commit link color
-merge_request: 20234
-author: Constance Okoghenun
-type: fixed
diff --git a/changelogs/unreleased/fix-paragraph-line-height-for-emoji.yml b/changelogs/unreleased/fix-paragraph-line-height-for-emoji.yml
deleted file mode 100644
index 5aaf0fac60e..00000000000
--- a/changelogs/unreleased/fix-paragraph-line-height-for-emoji.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix paragraph line height for emoji
-merge_request: 20137
-author: George Tsiolis
-type: fixed
diff --git a/changelogs/unreleased/fix-performance-problem-of-tags-query.yml b/changelogs/unreleased/fix-performance-problem-of-tags-query.yml
deleted file mode 100644
index 4649775be9c..00000000000
--- a/changelogs/unreleased/fix-performance-problem-of-tags-query.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix performance problem of accessing tag list for projects api endpoints
-merge_request:
-author:
-type: performance
diff --git a/changelogs/unreleased/fix-trace-archive-cron-worker-race-condition.yml b/changelogs/unreleased/fix-trace-archive-cron-worker-race-condition.yml
deleted file mode 100644
index ca8f4252008..00000000000
--- a/changelogs/unreleased/fix-trace-archive-cron-worker-race-condition.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Check if archived trace exist before archive it
-merge_request: 20297
-author:
-type: fixed
diff --git a/changelogs/unreleased/fix-web-ide-disable-markdown-autocomplete.yml b/changelogs/unreleased/fix-web-ide-disable-markdown-autocomplete.yml
deleted file mode 100644
index 6a4d9b6c8c4..00000000000
--- a/changelogs/unreleased/fix-web-ide-disable-markdown-autocomplete.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Disabled Web IDE autocomplete suggestions for Markdown files.
-merge_request:
-author: Isaac Smith
-type: fixed
diff --git a/changelogs/unreleased/fj-43565-wrong-role-displayed.yml b/changelogs/unreleased/fj-43565-wrong-role-displayed.yml
deleted file mode 100644
index 67ff25bc50c..00000000000
--- a/changelogs/unreleased/fj-43565-wrong-role-displayed.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix wrong role badge displayed in projects dashboard
-merge_request: 20374
-author:
-type: fixed
diff --git a/changelogs/unreleased/fj-46278-apply-doorkeeper-scope-patch.yml b/changelogs/unreleased/fj-46278-apply-doorkeeper-scope-patch.yml
deleted file mode 100644
index 1f4de2cb490..00000000000
--- a/changelogs/unreleased/fj-46278-apply-doorkeeper-scope-patch.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix OAuth Application Authorization screen to appear with each access
-merge_request: 20216
-author:
-type: fixed
diff --git a/changelogs/unreleased/fj-46278-enable-doorkeeper-reuse-access-token.yml b/changelogs/unreleased/fj-46278-enable-doorkeeper-reuse-access-token.yml
deleted file mode 100644
index 0994f4de248..00000000000
--- a/changelogs/unreleased/fj-46278-enable-doorkeeper-reuse-access-token.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Enable Doorkeeper option to avoid generating new tokens when users login via
- oauth
-merge_request: 20200
-author:
-type: fixed
diff --git a/changelogs/unreleased/fj-49014-wiki-search-error.yml b/changelogs/unreleased/fj-49014-wiki-search-error.yml
new file mode 100644
index 00000000000..a76805cb7f9
--- /dev/null
+++ b/changelogs/unreleased/fj-49014-wiki-search-error.yml
@@ -0,0 +1,5 @@
+---
+title: Fixed bug with invalid repository reference using the wiki search
+merge_request: 20722
+author:
+type: fixed
diff --git a/changelogs/unreleased/fj-bumping-gollum-lib-and-gollum-rugged-adapter.yml b/changelogs/unreleased/fj-bumping-gollum-lib-and-gollum-rugged-adapter.yml
deleted file mode 100644
index 3b4d429707f..00000000000
--- a/changelogs/unreleased/fj-bumping-gollum-lib-and-gollum-rugged-adapter.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fixed bug that allowed to remove other wiki pages if the title had wildcard characters
-merge_request:
-author:
-type: fixed
diff --git a/changelogs/unreleased/fj-web-terminal-ci-build.yml b/changelogs/unreleased/fj-web-terminal-ci-build.yml
deleted file mode 100644
index c3608d4203b..00000000000
--- a/changelogs/unreleased/fj-web-terminal-ci-build.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add Web Terminal for Ci Builds
-merge_request:
-author: Vicky Chijwani
-type: added
diff --git a/changelogs/unreleased/fl-mr-refactor-performance-improvements.yml b/changelogs/unreleased/fl-mr-refactor-performance-improvements.yml
deleted file mode 100644
index 649d1b5da67..00000000000
--- a/changelogs/unreleased/fl-mr-refactor-performance-improvements.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Structure getters for diff Store properly and adds specs
-merge_request:
-author:
-type: fixed
diff --git a/changelogs/unreleased/frozen-string-app-workers.yml b/changelogs/unreleased/frozen-string-app-workers.yml
deleted file mode 100644
index 48b50cc6ca4..00000000000
--- a/changelogs/unreleased/frozen-string-app-workers.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Enable frozen string in app/workers/*.rb
-merge_request: 19944
-author: gfyoung
-type: other
diff --git a/changelogs/unreleased/frozen-string-enable-app-uploaders.yml b/changelogs/unreleased/frozen-string-enable-app-uploaders.yml
deleted file mode 100644
index d43ca8bed8c..00000000000
--- a/changelogs/unreleased/frozen-string-enable-app-uploaders.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Enable frozen string in apps/validators/*.rb
-merge_request: 20382
-author: gfyoung
-type: other
diff --git a/changelogs/unreleased/frozen-string-enable-app-validators.yml b/changelogs/unreleased/frozen-string-enable-app-validators.yml
deleted file mode 100644
index db480b06d9b..00000000000
--- a/changelogs/unreleased/frozen-string-enable-app-validators.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Enable frozen string in apps/validators/*.rb
-merge_request: 20220
-author: gfyoung
-type: other
diff --git a/changelogs/unreleased/frozen-string-enable-app-workers-2.yml b/changelogs/unreleased/frozen-string-enable-app-workers-2.yml
deleted file mode 100644
index 81de6899d76..00000000000
--- a/changelogs/unreleased/frozen-string-enable-app-workers-2.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Finish enabling frozen string for app/workers/*.rb
-merge_request: 20197
-author: gfyoung
-type: other
diff --git a/changelogs/unreleased/frozen-string-enable-apps-services-inner-even-more.yml b/changelogs/unreleased/frozen-string-enable-apps-services-inner-even-more.yml
new file mode 100644
index 00000000000..cee790a07ff
--- /dev/null
+++ b/changelogs/unreleased/frozen-string-enable-apps-services-inner-even-more.yml
@@ -0,0 +1,5 @@
+---
+title: Enable even more frozen string in app/services/**/*.rb
+merge_request: 20702
+author: gfyoung
+type: performance
diff --git a/changelogs/unreleased/gitaly-commit-count-opt-out.yml b/changelogs/unreleased/gitaly-commit-count-opt-out.yml
deleted file mode 100644
index fd8298b1d7b..00000000000
--- a/changelogs/unreleased/gitaly-commit-count-opt-out.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Move some Gitaly RPC's to opt-out
-merge_request: 19591
-author:
-type: other
diff --git a/changelogs/unreleased/gitaly-ff-branch-nil.yml b/changelogs/unreleased/gitaly-ff-branch-nil.yml
new file mode 100644
index 00000000000..e7e689e6053
--- /dev/null
+++ b/changelogs/unreleased/gitaly-ff-branch-nil.yml
@@ -0,0 +1,5 @@
+---
+title: Add missing Gitaly branch_update nil checks
+merge_request: 20711
+author:
+type: fixed
diff --git a/changelogs/unreleased/gitaly-opt-out-branch-tag.yml b/changelogs/unreleased/gitaly-opt-out-branch-tag.yml
deleted file mode 100644
index 750fc863eed..00000000000
--- a/changelogs/unreleased/gitaly-opt-out-branch-tag.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Move Gitaly branch/tag/ref RPC's to opt-out
-merge_request: 19644
-author:
-type: other
diff --git a/changelogs/unreleased/gitaly-serverservice-info-timeout.yml b/changelogs/unreleased/gitaly-serverservice-info-timeout.yml
deleted file mode 100644
index 7f2fe8b9c93..00000000000
--- a/changelogs/unreleased/gitaly-serverservice-info-timeout.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Use appropriate timeout on Gitaly server info checks, avoid error on timeout
-merge_request: 20552
-author:
-type: fixed
diff --git a/changelogs/unreleased/gitaly-timeouts.yml b/changelogs/unreleased/gitaly-timeouts.yml
deleted file mode 100644
index ac8008faa2d..00000000000
--- a/changelogs/unreleased/gitaly-timeouts.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Updated Gitaly fail-fast timeout values
-merge_request: !20259
-author:
-type: performance
diff --git a/changelogs/unreleased/highlight-cluster-settings-message.yml b/changelogs/unreleased/highlight-cluster-settings-message.yml
deleted file mode 100644
index 4e029941c51..00000000000
--- a/changelogs/unreleased/highlight-cluster-settings-message.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Highlight cluster settings message
-merge_request: 19996
-author: George Tsiolis
-type: changed
diff --git a/changelogs/unreleased/ide-commit-actions-update.yml b/changelogs/unreleased/ide-commit-actions-update.yml
deleted file mode 100644
index 35bee94e156..00000000000
--- a/changelogs/unreleased/ide-commit-actions-update.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Improve Web IDE commit flow
-merge_request:
-author:
-type: changed
diff --git a/changelogs/unreleased/ide-merge-request-info.yml b/changelogs/unreleased/ide-merge-request-info.yml
deleted file mode 100644
index 104f48ae309..00000000000
--- a/changelogs/unreleased/ide-merge-request-info.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Display merge request title & description in Web IDE
-merge_request:
-author:
-type: added
diff --git a/changelogs/unreleased/jprovazn-delete-upload-worker.yml b/changelogs/unreleased/jprovazn-delete-upload-worker.yml
deleted file mode 100644
index 52916482d32..00000000000
--- a/changelogs/unreleased/jprovazn-delete-upload-worker.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Remove deprecated object_storage_upload queue.
-merge_request:
-author:
-type: removed
diff --git a/changelogs/unreleased/jprovazn-direct-upload.yml b/changelogs/unreleased/jprovazn-direct-upload.yml
deleted file mode 100644
index 57f6d1e07c3..00000000000
--- a/changelogs/unreleased/jprovazn-direct-upload.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Support direct_upload for generic uploads
-merge_request:
-author:
-type: added
diff --git a/changelogs/unreleased/jprovazn-extra-line.yml b/changelogs/unreleased/jprovazn-extra-line.yml
deleted file mode 100644
index 2628620f8ec..00000000000
--- a/changelogs/unreleased/jprovazn-extra-line.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Don't show context button for diffs of deleted files.
-merge_request:
-author:
-type: fixed
diff --git a/changelogs/unreleased/jprovazn-fix-mr-caching.yml b/changelogs/unreleased/jprovazn-fix-mr-caching.yml
deleted file mode 100644
index 7ad7ed54143..00000000000
--- a/changelogs/unreleased/jprovazn-fix-mr-caching.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Invalidate merge request diffs cache if diff data change.
-merge_request:
-author:
-type: fixed
diff --git a/changelogs/unreleased/jprovazn-label-links-update.yml b/changelogs/unreleased/jprovazn-label-links-update.yml
deleted file mode 100644
index 75fb46ede6b..00000000000
--- a/changelogs/unreleased/jprovazn-label-links-update.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix cross-project label references.
-merge_request:
-author:
-type: fixed
diff --git a/changelogs/unreleased/jprovazn-upload-symlink.yml b/changelogs/unreleased/jprovazn-upload-symlink.yml
deleted file mode 100644
index 265791d332f..00000000000
--- a/changelogs/unreleased/jprovazn-upload-symlink.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add /uploads subdirectory to allowed upload paths.
-merge_request:
-author:
-type: fixed
diff --git a/changelogs/unreleased/jr-48133-web-ide-commit-ellipsis.yml b/changelogs/unreleased/jr-48133-web-ide-commit-ellipsis.yml
deleted file mode 100644
index ac58eaccaaf..00000000000
--- a/changelogs/unreleased/jr-48133-web-ide-commit-ellipsis.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add ellispsis to web ide commit button
-merge_request: 20030
-author:
-type: other
diff --git a/changelogs/unreleased/limit-metrics-content-type.yml b/changelogs/unreleased/limit-metrics-content-type.yml
deleted file mode 100644
index 42cb4347771..00000000000
--- a/changelogs/unreleased/limit-metrics-content-type.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Limit the action suffixes in transaction metrics
-merge_request:
-author:
-type: fixed
diff --git a/changelogs/unreleased/more-group-api-sorting-options.yml b/changelogs/unreleased/more-group-api-sorting-options.yml
deleted file mode 100644
index b29f76a65a9..00000000000
--- a/changelogs/unreleased/more-group-api-sorting-options.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Added id sorting option to GET groups and subgroups API
-merge_request: 19665
-author: Marko, Peter
-type: added
diff --git a/changelogs/unreleased/move-boards-modal-empty-state-vue-component.yml b/changelogs/unreleased/move-boards-modal-empty-state-vue-component.yml
deleted file mode 100644
index 54a61d7c914..00000000000
--- a/changelogs/unreleased/move-boards-modal-empty-state-vue-component.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Move boards modal EmptyState vue component
-merge_request: 20068
-author: George Tsiolis
-type: performance
diff --git a/changelogs/unreleased/no-multi-assign-enable.yml b/changelogs/unreleased/no-multi-assign-enable.yml
deleted file mode 100644
index bb9c69b18e7..00000000000
--- a/changelogs/unreleased/no-multi-assign-enable.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Enable no-multi-assignment in JS files
-merge_request: 19808
-author: gfyoung
-type: other
diff --git a/changelogs/unreleased/no-multi-assign-follow-up.yml b/changelogs/unreleased/no-multi-assign-follow-up.yml
deleted file mode 100644
index 817760ff649..00000000000
--- a/changelogs/unreleased/no-multi-assign-follow-up.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Improve no-multi-assignment fixes after enabling rule
-merge_request: 19915
-author: gfyoung
-type: other
diff --git a/changelogs/unreleased/no-restricted-globals-enable.yml b/changelogs/unreleased/no-restricted-globals-enable.yml
deleted file mode 100644
index 1fa2eac0d03..00000000000
--- a/changelogs/unreleased/no-restricted-globals-enable.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Enable no-restricted globals in JS files
-merge_request: 19877
-author: gfyoung
-type: other
diff --git a/changelogs/unreleased/osw-delete-non-latest-mr-diff-files-migration.yml b/changelogs/unreleased/osw-delete-non-latest-mr-diff-files-migration.yml
deleted file mode 100644
index e4cbae1a109..00000000000
--- a/changelogs/unreleased/osw-delete-non-latest-mr-diff-files-migration.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Schedule workers to delete non-latest diffs in post-migration
-merge_request:
-author:
-type: other
diff --git a/changelogs/unreleased/osw-delete-non-latest-mr-diff-files-upon-merge.yml b/changelogs/unreleased/osw-delete-non-latest-mr-diff-files-upon-merge.yml
deleted file mode 100644
index 3e752125f3a..00000000000
--- a/changelogs/unreleased/osw-delete-non-latest-mr-diff-files-upon-merge.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Delete non-latest merge request diff files upon merge
-merge_request:
-author:
-type: other
diff --git a/changelogs/unreleased/osw-fallback-to-collection-when-no-diff-refs.yml b/changelogs/unreleased/osw-fallback-to-collection-when-no-diff-refs.yml
deleted file mode 100644
index 71a2d94fc55..00000000000
--- a/changelogs/unreleased/osw-fallback-to-collection-when-no-diff-refs.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Render MR page when diffs cannot be fetched from the database or the git repository
-merge_request: 20680
-author:
-type: fixed
diff --git a/changelogs/unreleased/osw-mark-as-merged-as-first-post-merge-action.yml b/changelogs/unreleased/osw-mark-as-merged-as-first-post-merge-action.yml
deleted file mode 100644
index 2049afc3d44..00000000000
--- a/changelogs/unreleased/osw-mark-as-merged-as-first-post-merge-action.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Mark MR as merged regardless of errors when closing issues
-merge_request:
-author:
-type: fixed
diff --git a/changelogs/unreleased/perf-wiki-pattern-once.yml b/changelogs/unreleased/perf-wiki-pattern-once.yml
deleted file mode 100644
index fb4085a06ae..00000000000
--- a/changelogs/unreleased/perf-wiki-pattern-once.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Improve render performance of large wiki pages
-merge_request: 20465
-author: Peter Leitzen
-type: performance
diff --git a/changelogs/unreleased/pr-importer-io-extra-error-handling.yml b/changelogs/unreleased/pr-importer-io-extra-error-handling.yml
deleted file mode 100644
index 2f7121b2840..00000000000
--- a/changelogs/unreleased/pr-importer-io-extra-error-handling.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Ensure MR diffs always exist in the PR importer
-merge_request:
-author:
-type: fixed
diff --git a/changelogs/unreleased/prefer-destructuring-fix.yml b/changelogs/unreleased/prefer-destructuring-fix.yml
deleted file mode 100644
index 452e04f553e..00000000000
--- a/changelogs/unreleased/prefer-destructuring-fix.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Enable prefer-structuring in JS files
-merge_request: 19943
-author: gfyoung
-type: other
diff --git a/changelogs/unreleased/project-dropdown-list-overflow.yml b/changelogs/unreleased/project-dropdown-list-overflow.yml
new file mode 100644
index 00000000000..9b74a68291b
--- /dev/null
+++ b/changelogs/unreleased/project-dropdown-list-overflow.yml
@@ -0,0 +1,5 @@
+---
+title: Don't overflow project/group dropdown results
+merge_request: 20704
+author: gfyoung
+type: fixed
diff --git a/changelogs/unreleased/prune-web-hook-logs.yml b/changelogs/unreleased/prune-web-hook-logs.yml
deleted file mode 100644
index e8c805b2a92..00000000000
--- a/changelogs/unreleased/prune-web-hook-logs.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Prune web hook logs older than 90 days
-merge_request:
-author:
-type: added
diff --git a/changelogs/unreleased/rails5-fix-46276.yml b/changelogs/unreleased/rails5-fix-46276.yml
deleted file mode 100644
index cdca91a755d..00000000000
--- a/changelogs/unreleased/rails5-fix-46276.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Rails5 fix format in uploads actions
-merge_request: 19907
-author: Jasper Maes
-type: fixed
diff --git a/changelogs/unreleased/rails5-fix-47366.yml b/changelogs/unreleased/rails5-fix-47366.yml
deleted file mode 100644
index 7ea03d2b95e..00000000000
--- a/changelogs/unreleased/rails5-fix-47366.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Rails5 fix expected `issuable.reload.updated_at` to have changed
-merge_request: 19733
-author: Jasper Maes
-type: fixed
diff --git a/changelogs/unreleased/rails5-fix-47370.yml b/changelogs/unreleased/rails5-fix-47370.yml
deleted file mode 100644
index 90c19593b7d..00000000000
--- a/changelogs/unreleased/rails5-fix-47370.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Use same gem versions for rails5 as for rails4 where possible
-merge_request: 19498
-author: Jasper Maes
-type: fixed
diff --git a/changelogs/unreleased/rails5-fix-47804.yml b/changelogs/unreleased/rails5-fix-47804.yml
deleted file mode 100644
index 3332ed3bbaa..00000000000
--- a/changelogs/unreleased/rails5-fix-47804.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Rails5 fix stack level too deep
-merge_request: 19762
-author: Jasper Maes
-type: fixed
diff --git a/changelogs/unreleased/rails5-fix-47805.yml b/changelogs/unreleased/rails5-fix-47805.yml
deleted file mode 100644
index 8bd8ad5488c..00000000000
--- a/changelogs/unreleased/rails5-fix-47805.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: 'Rails5 ActionController::ParameterMissing: param is missing or the value is
- empty: application_setting'
-merge_request: 19763
-author: Jasper Maes
-type: fixed
diff --git a/changelogs/unreleased/rails5-fix-47835.yml b/changelogs/unreleased/rails5-fix-47835.yml
deleted file mode 100644
index fe9cbf1a03a..00000000000
--- a/changelogs/unreleased/rails5-fix-47835.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Rails5 fix no implicit conversion of Hash into String. ActionController::Parameters
- no longer returns an hash in Rails 5
-merge_request: 19792
-author: Jasper Maes
-type: fixed
diff --git a/changelogs/unreleased/rails5-fix-47836.yml b/changelogs/unreleased/rails5-fix-47836.yml
deleted file mode 100644
index 2aef2db607a..00000000000
--- a/changelogs/unreleased/rails5-fix-47836.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Rails5 fix passing Group objects array into for_projects_and_groups milestone
- scope
-merge_request: 19863
-author: Jasper Maes
-type: fixed
diff --git a/changelogs/unreleased/rails5-fix-47960.yml b/changelogs/unreleased/rails5-fix-47960.yml
deleted file mode 100644
index 2229511ccd6..00000000000
--- a/changelogs/unreleased/rails5-fix-47960.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Rails5 fix update_attribute usage not causing a save
-merge_request: 19881
-author: Jasper Maes
-type: fixed
diff --git a/changelogs/unreleased/rails5-fix-48009.yml b/changelogs/unreleased/rails5-fix-48009.yml
deleted file mode 100644
index 7ade9ef2b7d..00000000000
--- a/changelogs/unreleased/rails5-fix-48009.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Rails5 update Gemfile.rails5.lock
-merge_request: 19921
-author: Jasper Maes
-type: fixed
diff --git a/changelogs/unreleased/rails5-fix-48012.yml b/changelogs/unreleased/rails5-fix-48012.yml
deleted file mode 100644
index 953ccbd8af7..00000000000
--- a/changelogs/unreleased/rails5-fix-48012.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Rails5 fix passing Group objects array into for_projects_and_groups milestone
- scope
-merge_request: 19920
-author: Jasper Maes
-type: fixed
diff --git a/changelogs/unreleased/rails5-fix-48104.yml b/changelogs/unreleased/rails5-fix-48104.yml
deleted file mode 100644
index 6cf519ad791..00000000000
--- a/changelogs/unreleased/rails5-fix-48104.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: 'Rails5 fix expected: 1 time with arguments: (97, anything, {"squash"=>false})
- received: 0 times'
-merge_request: 20004
-author: Jasper Maes
-type: fixed
diff --git a/changelogs/unreleased/rails5-fix-48140.yml b/changelogs/unreleased/rails5-fix-48140.yml
deleted file mode 100644
index a6992803e5a..00000000000
--- a/changelogs/unreleased/rails5-fix-48140.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: 'Rails 5 fix Capybara::ElementNotFound: Unable to find visible css #modal-revert-commit
- and expected: "/bar" got: "/foo"'
-merge_request: 20044
-author: Jasper Maes
-type: fixed
diff --git a/changelogs/unreleased/rails5-fix-48141.yml b/changelogs/unreleased/rails5-fix-48141.yml
deleted file mode 100644
index 5e2aa23b8fb..00000000000
--- a/changelogs/unreleased/rails5-fix-48141.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: 'Rails5 fix expected: 0 times with any arguments received: 1 time with arguments:
- DashboardController'
-merge_request: 20018
-author: Jasper Maes
-type: fixed
diff --git a/changelogs/unreleased/rails5-fix-48142.yml b/changelogs/unreleased/rails5-fix-48142.yml
deleted file mode 100644
index bfd95cfbe8b..00000000000
--- a/changelogs/unreleased/rails5-fix-48142.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Rails5 fix Admin::HooksController
-merge_request: 20017
-author: Jasper Maes
-type: fixed
diff --git a/changelogs/unreleased/rails5-fix-48430.yml b/changelogs/unreleased/rails5-fix-48430.yml
deleted file mode 100644
index 16495615395..00000000000
--- a/changelogs/unreleased/rails5-fix-48430.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Rails5 fix MySQL milliseconds problem in specs
-merge_request: 20221
-author: Jasper Maes
-type: fixed
diff --git a/changelogs/unreleased/rails5-fix-48432.yml b/changelogs/unreleased/rails5-fix-48432.yml
deleted file mode 100644
index 732294447a9..00000000000
--- a/changelogs/unreleased/rails5-fix-48432.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Rails5 fix Mysql comparison failure caused by milliseconds problem
-merge_request: 20222
-author: Jasper Maes
-type: fixed
diff --git a/changelogs/unreleased/rails5-fix-db-check.yml b/changelogs/unreleased/rails5-fix-db-check.yml
deleted file mode 100644
index ccac4619ea7..00000000000
--- a/changelogs/unreleased/rails5-fix-db-check.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Rails5 fix connection execute return integer instead of string
-merge_request: 19901
-author: Jasper Maes
-type: fixed
diff --git a/changelogs/unreleased/rails5-fix-mysql-arel-from.yml b/changelogs/unreleased/rails5-fix-mysql-arel-from.yml
deleted file mode 100644
index 9883ff306f1..00000000000
--- a/changelogs/unreleased/rails5-fix-mysql-arel-from.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Rails5 fix arel from in mysql_median_datetime_sql
-merge_request: 20167
-author: Jasper Maes
-type: fixed
diff --git a/changelogs/unreleased/rails5-fix-pages-controller.yml b/changelogs/unreleased/rails5-fix-pages-controller.yml
deleted file mode 100644
index eeb3747c4eb..00000000000
--- a/changelogs/unreleased/rails5-fix-pages-controller.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Rails5 fix Projects::PagesController spec
-merge_request: 20007
-author: Jasper Maes
-type: fixed
diff --git a/changelogs/unreleased/rd-33733-showing-created-date-instead-of-updated-date-in-project-lists.yml b/changelogs/unreleased/rd-33733-showing-created-date-instead-of-updated-date-in-project-lists.yml
deleted file mode 100644
index 3934381b0cf..00000000000
--- a/changelogs/unreleased/rd-33733-showing-created-date-instead-of-updated-date-in-project-lists.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Invalidate cache with project details when repository is updated
-merge_request: 19774
-author:
-type: fixed
diff --git a/changelogs/unreleased/remove-allocations-gem.yml b/changelogs/unreleased/remove-allocations-gem.yml
deleted file mode 100644
index e809fd26701..00000000000
--- a/changelogs/unreleased/remove-allocations-gem.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Remove remaining traces of the Allocations Gem
-merge_request:
-author:
-type: changed
diff --git a/changelogs/unreleased/remove-ci_job_request_with_tags_matcher.yml b/changelogs/unreleased/remove-ci_job_request_with_tags_matcher.yml
deleted file mode 100644
index b86512445d5..00000000000
--- a/changelogs/unreleased/remove-ci_job_request_with_tags_matcher.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Remove the ci_job_request_with_tags_matcher
-merge_request:
-author:
-type: performance
diff --git a/changelogs/unreleased/remove-is-shared-from-ci-runners.yml b/changelogs/unreleased/remove-is-shared-from-ci-runners.yml
deleted file mode 100644
index a6917431a53..00000000000
--- a/changelogs/unreleased/remove-is-shared-from-ci-runners.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Remove the use of `is_shared` of `Ci::Runner`
-merge_request:
-author:
-type: other
diff --git a/changelogs/unreleased/remove-link-label-vertical-alignment-property.yml b/changelogs/unreleased/remove-link-label-vertical-alignment-property.yml
deleted file mode 100644
index 40ec3998b05..00000000000
--- a/changelogs/unreleased/remove-link-label-vertical-alignment-property.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Change label link vertical alignment property
-merge_request: 18777
-author: George Tsiolis
-type: changed
diff --git a/changelogs/unreleased/remove-small-container-width.yml b/changelogs/unreleased/remove-small-container-width.yml
deleted file mode 100644
index 1af8aafa87e..00000000000
--- a/changelogs/unreleased/remove-small-container-width.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Remove small container width
-merge_request: 19893
-author: George Tsiolis
-type: changed
diff --git a/changelogs/unreleased/remove-trace-efficiently.yml b/changelogs/unreleased/remove-trace-efficiently.yml
deleted file mode 100644
index a6ba6d28dce..00000000000
--- a/changelogs/unreleased/remove-trace-efficiently.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Remove redundant query when removing trace
-merge_request: 20324
-author:
-type: performance
diff --git a/changelogs/unreleased/revert-merge-request-discussion-buttons-padding.yml b/changelogs/unreleased/revert-merge-request-discussion-buttons-padding.yml
deleted file mode 100644
index 9f11dd3dc3f..00000000000
--- a/changelogs/unreleased/revert-merge-request-discussion-buttons-padding.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Revert merge request discussion buttons padding
-merge_request: 20060
-author: George Tsiolis
-type: changed
diff --git a/changelogs/unreleased/safari-scrollbar-bug.yml b/changelogs/unreleased/safari-scrollbar-bug.yml
deleted file mode 100644
index 792a66d1ada..00000000000
--- a/changelogs/unreleased/safari-scrollbar-bug.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Remove scrollbar in Safari in repo settings page
-merge_request: 19809
-author: gfyoung
-type: fixed
diff --git a/changelogs/unreleased/security-2682-fix-xss-for-markdown-toc.yml b/changelogs/unreleased/security-2682-fix-xss-for-markdown-toc.yml
deleted file mode 100644
index f595678c3c2..00000000000
--- a/changelogs/unreleased/security-2682-fix-xss-for-markdown-toc.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix XSS vulnerability for table of content generation
-merge_request:
-author:
-type: security
diff --git a/changelogs/unreleased/security-fj-bumping-sanitize-gem.yml b/changelogs/unreleased/security-fj-bumping-sanitize-gem.yml
deleted file mode 100644
index bec1033425d..00000000000
--- a/changelogs/unreleased/security-fj-bumping-sanitize-gem.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Update sanitize gem to 4.6.5 to fix HTML injection vulnerability
-merge_request:
-author:
-type: security
diff --git a/changelogs/unreleased/security-html_escape_branch_name.yml b/changelogs/unreleased/security-html_escape_branch_name.yml
deleted file mode 100644
index 02d1065348f..00000000000
--- a/changelogs/unreleased/security-html_escape_branch_name.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: HTML escape branch name in project graphs page
-merge_request:
-author:
-type: security
diff --git a/changelogs/unreleased/security-html_escape_usernames.yml b/changelogs/unreleased/security-html_escape_usernames.yml
deleted file mode 100644
index 7e69e4ae266..00000000000
--- a/changelogs/unreleased/security-html_escape_usernames.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: HTML escape the name of the user in ProjectsHelper#link_to_member
-merge_request:
-author:
-type: security
diff --git a/changelogs/unreleased/security-rd-do-not-show-internal-info-in-public-feed.yml b/changelogs/unreleased/security-rd-do-not-show-internal-info-in-public-feed.yml
deleted file mode 100644
index ff78c162dff..00000000000
--- a/changelogs/unreleased/security-rd-do-not-show-internal-info-in-public-feed.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Don't show events from internal projects for anonymous users in public feed
-merge_request:
-author:
-type: security
diff --git a/changelogs/unreleased/sh-bump-rugged-0-27-2.yml b/changelogs/unreleased/sh-bump-rugged-0-27-2.yml
deleted file mode 100644
index 6c519648b51..00000000000
--- a/changelogs/unreleased/sh-bump-rugged-0-27-2.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Bump rugged to 0.27.2
-merge_request:
-author:
-type: fixed
diff --git a/changelogs/unreleased/sh-fix-bamboo-change-set.yml b/changelogs/unreleased/sh-fix-bamboo-change-set.yml
deleted file mode 100644
index 85e79e17dee..00000000000
--- a/changelogs/unreleased/sh-fix-bamboo-change-set.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix Bamboo CI status not showing for branch plans
-merge_request:
-author:
-type: fixed
diff --git a/changelogs/unreleased/sh-normalize-urls.yml b/changelogs/unreleased/sh-normalize-urls.yml
new file mode 100644
index 00000000000..b0d1120e10b
--- /dev/null
+++ b/changelogs/unreleased/sh-normalize-urls.yml
@@ -0,0 +1,5 @@
+---
+title: Escape username and password in UrlSanitizer#full_url
+merge_request: 20684
+author:
+type: fixed
diff --git a/changelogs/unreleased/sh-optimize-locks-check-ce.yml b/changelogs/unreleased/sh-optimize-locks-check-ce.yml
deleted file mode 100644
index 933ec9b79bf..00000000000
--- a/changelogs/unreleased/sh-optimize-locks-check-ce.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Eliminate N+1 queries in LFS file locks checks during a push
-merge_request:
-author:
-type: performance
diff --git a/changelogs/unreleased/straight-comparision-mode.yml b/changelogs/unreleased/straight-comparision-mode.yml
deleted file mode 100644
index 2f6a0c0b54d..00000000000
--- a/changelogs/unreleased/straight-comparision-mode.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Allow straight diff in Compare API
-merge_request: 20120
-author: Maciej Nowak
-type: added
diff --git a/changelogs/unreleased/tc-repo-check-per-shard.yml b/changelogs/unreleased/tc-repo-check-per-shard.yml
deleted file mode 100644
index 227b6b0b93b..00000000000
--- a/changelogs/unreleased/tc-repo-check-per-shard.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Run repository checks in parallel for each shard
-merge_request: 20179
-author:
-type: added
diff --git a/changelogs/unreleased/text-expander-icon-update.yml b/changelogs/unreleased/text-expander-icon-update.yml
deleted file mode 100644
index be9dc98728f..00000000000
--- a/changelogs/unreleased/text-expander-icon-update.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Updated the icon for expand buttons to ellipsis
-merge_request: 18793
-author: Constance Okoghenun
-type: changed \ No newline at end of file
diff --git a/changelogs/unreleased/transfer_project_api_endpoint.yml b/changelogs/unreleased/transfer_project_api_endpoint.yml
deleted file mode 100644
index 60c704c62a0..00000000000
--- a/changelogs/unreleased/transfer_project_api_endpoint.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Add transfer project API endpoint
-merge_request: 20122
-author: Aram Visser
-type: added
diff --git a/changelogs/unreleased/tz-diff-blob-image-viewer.yml b/changelogs/unreleased/tz-diff-blob-image-viewer.yml
deleted file mode 100644
index 81d87bc71f5..00000000000
--- a/changelogs/unreleased/tz-diff-blob-image-viewer.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Web IDE supports now Image + Download Diff Viewing
-merge_request: 18768
-author:
-type: added
diff --git a/changelogs/unreleased/unify-views-search-results.yml b/changelogs/unreleased/unify-views-search-results.yml
deleted file mode 100644
index 81ad3616648..00000000000
--- a/changelogs/unreleased/unify-views-search-results.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Hide project name if searching against a project
-merge_request: 19595
-author:
-type: changed
diff --git a/changelogs/unreleased/update-bcrypt-to-support-libxcrypt.yml b/changelogs/unreleased/update-bcrypt-to-support-libxcrypt.yml
deleted file mode 100644
index c18a0f75d22..00000000000
--- a/changelogs/unreleased/update-bcrypt-to-support-libxcrypt.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: update bcrypt to also support libxcrypt
-merge_request: 20260
-author: muhammadn
-type: other
diff --git a/changelogs/unreleased/update-environments-nav-controls.yml b/changelogs/unreleased/update-environments-nav-controls.yml
deleted file mode 100644
index 639dadd0cdf..00000000000
--- a/changelogs/unreleased/update-environments-nav-controls.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Update environments nav controls icons
-merge_request: 20199
-author: George Tsiolis
-type: changed
diff --git a/changelogs/unreleased/update-external-link-icon-in-header-user-dropdown.yml b/changelogs/unreleased/update-external-link-icon-in-header-user-dropdown.yml
deleted file mode 100644
index ee769f06379..00000000000
--- a/changelogs/unreleased/update-external-link-icon-in-header-user-dropdown.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Update external link icon in header user dropdown
-merge_request: 20150
-author: George Tsiolis
-type: changed
diff --git a/changelogs/unreleased/update-external-link-icon-in-merge-request-widget.yml b/changelogs/unreleased/update-external-link-icon-in-merge-request-widget.yml
deleted file mode 100644
index c650c32f884..00000000000
--- a/changelogs/unreleased/update-external-link-icon-in-merge-request-widget.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Update external link icon in merge request widget
-merge_request: 20154
-author: George Tsiolis
-type: changed
diff --git a/changelogs/unreleased/update-integrations-external-link-icons.yml b/changelogs/unreleased/update-integrations-external-link-icons.yml
deleted file mode 100644
index 9972744bd00..00000000000
--- a/changelogs/unreleased/update-integrations-external-link-icons.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Update integrations external link icons
-merge_request: 20205
-author: George Tsiolis
-type: changed
diff --git a/changelogs/unreleased/update-pipeline-icon-in-web-ide-sidebar.yml b/changelogs/unreleased/update-pipeline-icon-in-web-ide-sidebar.yml
deleted file mode 100644
index 3f1f3c643e2..00000000000
--- a/changelogs/unreleased/update-pipeline-icon-in-web-ide-sidebar.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Update pipeline icon in web ide sidebar
-merge_request: 20058
-author: George Tsiolis
-type: changed
diff --git a/changelogs/unreleased/upgrade-gitlab-markup.yml b/changelogs/unreleased/upgrade-gitlab-markup.yml
deleted file mode 100644
index 9b0eaa7068d..00000000000
--- a/changelogs/unreleased/upgrade-gitlab-markup.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix extra blank line at start of rendered reStructuredText code block
-merge_request: 19596
-author:
-type: fixed
diff --git a/changelogs/unreleased/use-backup-custom-hooks-gitaly.yml b/changelogs/unreleased/use-backup-custom-hooks-gitaly.yml
deleted file mode 100644
index 4b9766332c3..00000000000
--- a/changelogs/unreleased/use-backup-custom-hooks-gitaly.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: migrate backup rake task to gitaly
-merge_request:
-author:
-type: added
diff --git a/changelogs/unreleased/use-tooltip-component-in-mr-widget-author-time-component.yml b/changelogs/unreleased/use-tooltip-component-in-mr-widget-author-time-component.yml
deleted file mode 100644
index 4ab9b6dadc0..00000000000
--- a/changelogs/unreleased/use-tooltip-component-in-mr-widget-author-time-component.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Use Tooltip component in MrWidgetAuthorTime vue comonent
-merge_request: 19635
-author: George Tsiolis
-type: performance
diff --git a/changelogs/unreleased/web-hooks-log-pagination.yml b/changelogs/unreleased/web-hooks-log-pagination.yml
deleted file mode 100644
index fd9e4f9ca13..00000000000
--- a/changelogs/unreleased/web-hooks-log-pagination.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fixed pagination of web hook logs
-merge_request:
-author:
-type: performance
diff --git a/changelogs/unreleased/winh-new-branch-url-encode.yml b/changelogs/unreleased/winh-new-branch-url-encode.yml
deleted file mode 100644
index f3554d0d4a1..00000000000
--- a/changelogs/unreleased/winh-new-branch-url-encode.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Fix branch name encoding for dropdown on issue page
-merge_request: 19634
-author:
-type: fixed
diff --git a/changelogs/unreleased/zj-gitaly-read-write-check.yml b/changelogs/unreleased/zj-gitaly-read-write-check.yml
deleted file mode 100644
index 43951d20e8f..00000000000
--- a/changelogs/unreleased/zj-gitaly-read-write-check.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Gitaly metrics check for read/writeability
-merge_request: 20022
-author:
-type: other
diff --git a/config/boot.rb b/config/boot.rb
index 84f390f3228..655c54ddb84 100644
--- a/config/boot.rb
+++ b/config/boot.rb
@@ -9,3 +9,8 @@ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../#{gemfile}", __dir__)
# Set up gems listed in the Gemfile.
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
+begin
+ require 'bootsnap/setup'
+rescue LoadError
+ # bootsnap is optional dependency, so if we don't have it it's fine
+end
diff --git a/db/migrate/20161124141322_migrate_process_commit_worker_jobs.rb b/db/migrate/20161124141322_migrate_process_commit_worker_jobs.rb
index dc16d5c5169..1eb6a8fa5df 100644
--- a/db/migrate/20161124141322_migrate_process_commit_worker_jobs.rb
+++ b/db/migrate/20161124141322_migrate_process_commit_worker_jobs.rb
@@ -1,9 +1,19 @@
-# See http://doc.gitlab.com/ce/development/migration_style_guide.html
-# for more information on how to write migrations for GitLab.
-
class MigrateProcessCommitWorkerJobs < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers
+ class Repository
+ attr_reader :storage
+
+ def initialize(storage, relative_path)
+ @storage = storage
+ @relative_path = relative_path
+ end
+
+ def gitaly_repository
+ Gitaly::Repository.new(storage_name: @storage, relative_path: @relative_path)
+ end
+ end
+
class Project < ActiveRecord::Base
def self.find_including_path(id)
select("projects.*, CONCAT(namespaces.path, '/', projects.path) AS path_with_namespace")
@@ -11,19 +21,12 @@ class MigrateProcessCommitWorkerJobs < ActiveRecord::Migration
.find_by(id: id)
end
- def repository_storage_path
- Gitlab::GitalyClient::StorageSettings.allow_disk_access do
- Gitlab.config.repositories.storages[repository_storage].legacy_disk_path
- end
- end
-
- def repository_path
- # TODO: review if the change from Legacy storage needs to reflect here as well.
- File.join(repository_storage_path, read_attribute(:path_with_namespace) + '.git')
+ def commit(rev)
+ Gitlab::GitalyClient::CommitService.new(repository).find_commit(rev)
end
def repository
- @repository ||= Rugged::Repository.new(repository_path)
+ @repository ||= Repository.new(repository_storage, read_attribute(:path_with_namespace) + '.git')
end
end
@@ -42,22 +45,19 @@ class MigrateProcessCommitWorkerJobs < ActiveRecord::Migration
next unless project
- begin
- commit = project.repository.lookup(payload['args'][2])
- rescue Rugged::OdbError
- next
- end
+ commit = project.commit(payload['args'][2])
+ next unless commit
hash = {
- id: commit.oid,
- message: encode(commit.message),
- parent_ids: commit.parent_ids,
- authored_date: commit.author[:time],
- author_name: encode(commit.author[:name]),
- author_email: encode(commit.author[:email]),
- committed_date: commit.committer[:time],
- committer_email: encode(commit.committer[:email]),
- committer_name: encode(commit.committer[:name])
+ id: commit.id,
+ message: encode(commit.body),
+ parent_ids: commit.parent_ids.to_a,
+ authored_date: Time.at(commit.author.date.seconds).utc,
+ author_name: encode(commit.author.name),
+ author_email: encode(commit.author.email),
+ committed_date: Time.at(commit.committer.date.seconds).utc,
+ committer_email: encode(commit.committer.email),
+ committer_name: encode(commit.committer.name)
}
payload['args'][2] = hash
diff --git a/db/migrate/20161226122833_remove_dot_git_from_usernames.rb b/db/migrate/20161226122833_remove_dot_git_from_usernames.rb
index 133435523e1..db10426b483 100644
--- a/db/migrate/20161226122833_remove_dot_git_from_usernames.rb
+++ b/db/migrate/20161226122833_remove_dot_git_from_usernames.rb
@@ -1,11 +1,7 @@
-# See http://doc.gitlab.com/ce/development/migration_style_guide.html
-# for more information on how to write migrations for GitLab.
-
class RemoveDotGitFromUsernames < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers
include Gitlab::ShellAdapter
- # Set this constant to true if this migration requires downtime.
DOWNTIME = false
def up
@@ -64,16 +60,14 @@ class RemoveDotGitFromUsernames < ActiveRecord::Migration
# we rename suffix instead of removing it
path = path.sub(/\.git\z/, '_git')
- Gitlab::GitalyClient::StorageSettings.allow_disk_access do
- check_routes(path.dup, 0, path)
- end
+ check_routes(path.dup, 0, path)
end
def check_routes(base, counter, path)
route_exists = route_exists?(path)
- Gitlab.config.repositories.storages.each do |shard, storage|
- if route_exists || path_exists?(shard, storage.legacy_disk_path)
+ Gitlab.config.repositories.storages.each do |shard, _storage|
+ if route_exists || path_exists?(shard, path)
counter += 1
path = "#{base}#{counter}"
diff --git a/doc/api/projects.md b/doc/api/projects.md
index a35c2a56992..f3ccca46420 100644
--- a/doc/api/projects.md
+++ b/doc/api/projects.md
@@ -55,6 +55,8 @@ GET /projects
| `with_custom_attributes` | boolean | no | Include [custom attributes](custom_attributes.md) in response (admins only) |
| `with_issues_enabled` | boolean | no | Limit by enabled issues feature |
| `with_merge_requests_enabled` | boolean | no | Limit by enabled merge requests feature |
+| `wiki_checksum_failed` | boolean | no | Limit projects where the wiki checksum calculation has failed _([Introduced][ee-6137] in [GitLab Premium][eep] 11.2)_ |
+| `repository_checksum_failed` | boolean | no | Limit projects where the repository checksum calculation has failed _([Introduced][ee-6137] in [GitLab Premium][eep] 11.2)_ |
When `simple=true` or the user is unauthenticated this returns something like:
@@ -1509,3 +1511,6 @@ GET /projects/:id/snapshot
| --------- | ---- | -------- | ----------- |
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) |
| `wiki` | boolean | no | Whether to download the wiki, rather than project, repository |
+
+[eep]: https://about.gitlab.com/pricing/ "Available only in GitLab Premium"
+[ee-6137]: https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/6137
diff --git a/doc/development/README.md b/doc/development/README.md
index 5d6fed5bc72..fed3903c771 100644
--- a/doc/development/README.md
+++ b/doc/development/README.md
@@ -40,6 +40,7 @@ description: 'Learn how to contribute to GitLab.'
- [View sent emails or preview mailers](emails.md)
- [Shell commands](shell_commands.md) in the GitLab codebase
- [`Gemfile` guidelines](gemfile.md)
+- [Pry debugging](pry_debugging.md)
- [Sidekiq debugging](sidekiq_debugging.md)
- [Gotchas](gotchas.md) to avoid
- [Avoid modules with instance variables](module_with_instance_variables.md) if possible
diff --git a/doc/development/profiling.md b/doc/development/profiling.md
index 11878b4009b..0ca8bb67a77 100644
--- a/doc/development/profiling.md
+++ b/doc/development/profiling.md
@@ -42,6 +42,36 @@ Passing a `logger:` keyword argument to `Gitlab::Profiler.profile` will send
ActiveRecord and ActionController log output to that logger. Further options are
documented with the method source.
+There is also a RubyProf printer available:
+`Gitlab::Profiler::TotalTimeFlatPrinter`. This acts like
+`RubyProf::FlatPrinter`, but its `min_percent` option works on the method's
+total time, not its self time. (This is because we often spend most of our time
+in library code, but this comes from calls in our application.) It also offers a
+`max_percent` option to help filter out outer calls that aren't useful (like
+`ActionDispatch::Integration::Session#process`).
+
+There is a convenience method for using this,
+`Gitlab::Profiler.print_by_total_time`:
+
+```ruby
+result = Gitlab::Profiler.profile('/my-user')
+Gitlab::Profiler.print_by_total_time(result, max_percent: 60, min_percent: 2)
+# Measure Mode: wall_time
+# Thread ID: 70005223698240
+# Fiber ID: 70004894952580
+# Total: 1.768912
+# Sort by: total_time
+#
+# %self total self wait child calls name
+# 0.00 1.017 0.000 0.000 1.017 14 *ActionView::Helpers::RenderingHelper#render
+# 0.00 1.017 0.000 0.000 1.017 14 *ActionView::Renderer#render_partial
+# 0.00 1.017 0.000 0.000 1.017 14 *ActionView::PartialRenderer#render
+# 0.00 1.007 0.000 0.000 1.007 14 *ActionView::PartialRenderer#render_partial
+# 0.00 0.930 0.000 0.000 0.930 14 Hamlit::TemplateHandler#call
+# 0.00 0.928 0.000 0.000 0.928 14 Temple::Engine#call
+# 0.02 0.865 0.000 0.000 0.864 638 *Enumerable#inject
+```
+
[GitLab-Profiler](https://gitlab.com/gitlab-com/gitlab-profiler) is a project
that builds on this to add some additional niceties, such as allowing
configuration with a single Yaml file for multiple URLs, and uploading of the
diff --git a/doc/development/pry_debugging.md b/doc/development/pry_debugging.md
new file mode 100644
index 00000000000..de5e1323e6a
--- /dev/null
+++ b/doc/development/pry_debugging.md
@@ -0,0 +1,130 @@
+# Pry debugging
+
+## Invoking pry debugging
+
+To invoke the debugger, place `binding.pry` somewhere in your
+code. When the Ruby interpreter hits that code, execution will stop,
+and you can type in commands to debug the state of the program
+
+## `byebug` vs `binding.pry`
+
+`byebug` has a very similar interface as `gdb`, but `byebug` does not
+use the powerful Pry REPL.
+
+`binding.pry` uses Pry, but lacks some of the `byebug`
+features. GitLab uses the [`pry-byebug`](https://github.com/deivid-rodriguez/pry-byebug)
+gem. This gem brings some capabilities `byebug` to `binding.pry`, so
+using that, will give you the most debugging powers.
+
+## `byebug`
+
+Check out [the docs](https://github.com/deivid-rodriguez/byebug) for the full list of commands.
+
+You can start the Pry REPL with the `pry` command.
+
+## `pry`
+
+There are **a lot** of features present in `pry`, too much to cover in
+this document, so for the full documentation head over to the [Pry wiki](https://github.com/pry/pry/wiki).
+
+Below are a few features definitely worth checking out, also run
+`help` in a pry session to see what else you can do.
+
+### State navigation
+
+With the [state navigation](https://github.com/pry/pry/wiki/State-navigation)
+you can move around in the code to discover methods and such:
+
+```ruby
+# Change context
+[1] pry(main)> cd Pry
+[2] pry(Pry):1>
+
+# Print methods
+[2] pry(Pry):1> ls -m
+
+# Find a method
+[3] pry(Pry):1> find-method to_yaml
+```
+
+### Source browsing
+
+You [look at the source code](https://github.com/pry/pry/wiki/Source-browsing)
+from your `pry` session:
+
+```ruby
+[1] pry(main)> $ Array#first
+# The above is equivalent to
+[2] pry(main)> cd Array
+[3] pry(Array):1> show-source first
+```
+
+`$` is an alias for `show-source`.
+
+### Documentation browsing
+
+Similar to source browsing, is [Documentation browsing](https://github.com/pry/pry/wiki/Documentation-browsing).
+
+```ruby
+[1] pry(main)> show-doc Array#first
+```
+
+`?` is an alias for `show-doc`.
+
+### Command history
+
+With <kdb>Ctrl+R</kbd> you can search your [command history](https://github.com/pry/pry/wiki/History).
+
+## Stepping
+
+To step through the code, you can use the following commands:
+
+- `break`: Manage breakpoints.
+- `step`: Step execution into the next line or method. Takes an
+ optional numeric argument to step multiple times.
+- `next`: Step over to the next line within the same frame. Also takes
+ an optional numeric argument to step multiple lines.
+- `finish`: Execute until current stack frame returns.
+- `continue`: Continue program execution and end the Pry session.
+
+## Callstack navigation
+
+You also can move around in the callstack with these commands:
+
+- `backtrace`: Shows the current stack. You can use the numbers on the
+ left side with the frame command to navigate the stack.
+- `up`: Moves the stack frame up. Takes an optional numeric argument
+ to move multiple frames.
+- `down`: Moves the stack frame down. Takes an optional numeric
+ argument to move multiple frames.
+- `frame <n>`: Moves to a specific frame. Called without arguments
+ will show the current frame.
+
+## Short commands
+
+When you use `binding.pry` instead of `byebug`, the short commands
+like `s`, `n`, `f`, and `c` do not work. To reinstall them, add this
+to `~/.pryrc`:
+
+```ruby
+if defined?(PryByebug)
+ Pry.commands.alias_command 's', 'step'
+ Pry.commands.alias_command 'n', 'next'
+ Pry.commands.alias_command 'f', 'finish'
+ Pry.commands.alias_command 'c', 'continue'
+end
+```
+
+## Repeat last command
+
+You can repeat the last command by just hitting the <kbd>Enter</kbd>
+key (e.g., with `step` or`next`), if you place the following snippet
+in your `~/.pryrc`:
+
+```ruby
+Pry::Commands.command /^$/, "repeat last command" do
+ _pry_.run_command Pry.history.to_a.last
+end
+```
+
+`byebug` supports this out-of-the-box.
diff --git a/doc/development/testing_guide/best_practices.md b/doc/development/testing_guide/best_practices.md
index 1a926a660f1..acbfa1850b4 100644
--- a/doc/development/testing_guide/best_practices.md
+++ b/doc/development/testing_guide/best_practices.md
@@ -101,7 +101,7 @@ CHROME_HEADLESS=0 bundle exec rspec some_spec.rb
The test will go by quickly, but this will give you an idea of what's happening.
-You can also add `byebug` or `binding.pry` to pause execution and step through
+You can also add `byebug` or `binding.pry` to pause execution and [step through](../pry_debugging.md#stepping)
the test.
#### Screenshots
diff --git a/doc/update/mysql_to_postgresql.md b/doc/update/mysql_to_postgresql.md
index 44e9f6c5516..0b38cde811d 100644
--- a/doc/update/mysql_to_postgresql.md
+++ b/doc/update/mysql_to_postgresql.md
@@ -194,12 +194,12 @@ sudo apt-get install pgloader
1. Switch database from MySQL to PostgreSQL
- ``` bash
- cd /home/git/gitlab
- sudo -u git mv config/database.yml config/database.yml.bak
- sudo -u git cp config/database.yml.postgresql config/database.yml
- sudo -u git -H chmod o-rwx config/database.yml
- ```
+ ``` bash
+ cd /home/git/gitlab
+ sudo -u git mv config/database.yml config/database.yml.bak
+ sudo -u git cp config/database.yml.postgresql config/database.yml
+ sudo -u git -H chmod o-rwx config/database.yml
+ ```
1. Run the following commands to prepare the schema:
diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index 0888e3befac..889e3d4f819 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -9,6 +9,21 @@ module API
before { authenticate_non_get! }
helpers do
+ params :optional_filter_params_ee do
+ # EE::API::Projects would override this helper
+ end
+
+ # EE::API::Projects would override this method
+ def apply_filters(projects)
+ projects = projects.with_issues_available_for_user(current_user) if params[:with_issues_enabled]
+ projects = projects.with_merge_requests_enabled if params[:with_merge_requests_enabled]
+ projects = projects.with_statistics if params[:statistics]
+
+ projects
+ end
+ end
+
+ helpers do
params :statistics_params do
optional :statistics, type: Boolean, default: false, desc: 'Include project statistics'
end
@@ -39,6 +54,8 @@ module API
optional :membership, type: Boolean, default: false, desc: 'Limit by projects that the current user is a member of'
optional :with_issues_enabled, type: Boolean, default: false, desc: 'Limit by enabled issues feature'
optional :with_merge_requests_enabled, type: Boolean, default: false, desc: 'Limit by enabled merge requests feature'
+
+ use :optional_filter_params_ee
end
params :create_params do
@@ -52,9 +69,7 @@ module API
def present_projects(projects, options = {})
projects = reorder_projects(projects)
- projects = projects.with_issues_available_for_user(current_user) if params[:with_issues_enabled]
- projects = projects.with_merge_requests_enabled if params[:with_merge_requests_enabled]
- projects = projects.with_statistics if params[:statistics]
+ projects = apply_filters(projects)
projects = paginate(projects)
projects, options = with_custom_attributes(projects, options)
diff --git a/lib/gitlab/ci/variables/collection/item.rb b/lib/gitlab/ci/variables/collection/item.rb
index 222aa06b800..7da6d09d440 100644
--- a/lib/gitlab/ci/variables/collection/item.rb
+++ b/lib/gitlab/ci/variables/collection/item.rb
@@ -34,7 +34,7 @@ module Gitlab
def self.fabricate(resource)
case resource
when Hash
- self.new(resource)
+ self.new(resource.symbolize_keys)
when ::HasVariable
self.new(resource.to_runner_variable)
when self
diff --git a/lib/gitlab/git/operation_service.rb b/lib/gitlab/git/operation_service.rb
index 280def182d5..57d748343be 100644
--- a/lib/gitlab/git/operation_service.rb
+++ b/lib/gitlab/git/operation_service.rb
@@ -8,6 +8,8 @@ module Gitlab
alias_method :branch_created?, :branch_created
def self.from_gitaly(branch_update)
+ return if branch_update.nil?
+
new(
branch_update.commit_id,
branch_update.repo_created,
diff --git a/lib/gitlab/git/repository.rb b/lib/gitlab/git/repository.rb
index 39fbf6e2526..5b955753a92 100644
--- a/lib/gitlab/git/repository.rb
+++ b/lib/gitlab/git/repository.rb
@@ -1,4 +1,3 @@
-# Gitlab::Git::Repository is a wrapper around native Rugged::Repository object
require 'tempfile'
require 'forwardable'
require "rubygems/package"
@@ -673,35 +672,17 @@ module Gitlab
# If `mirror_refmap` is present the remote is set as mirror with that mapping
def add_remote(remote_name, url, mirror_refmap: nil)
- gitaly_migrate(:remote_add_remote) do |is_enabled|
- if is_enabled
- gitaly_remote_client.add_remote(remote_name, url, mirror_refmap)
- else
- rugged_add_remote(remote_name, url, mirror_refmap)
- end
+ wrapped_gitaly_errors do
+ gitaly_remote_client.add_remote(remote_name, url, mirror_refmap)
end
end
def remove_remote(remote_name)
- gitaly_migrate(:remote_remove_remote) do |is_enabled|
- if is_enabled
- gitaly_remote_client.remove_remote(remote_name)
- else
- rugged_remove_remote(remote_name)
- end
+ wrapped_gitaly_errors do
+ gitaly_remote_client.remove_remote(remote_name)
end
end
- # Update the specified remote using the values in the +options+ hash
- #
- # Example
- # repo.update_remote("origin", url: "path/to/repo")
- def remote_update(remote_name, url:)
- # TODO: Implement other remote options
- rugged.remotes.set_url(remote_name, url)
- nil
- end
-
AUTOCRLF_VALUES = {
"true" => true,
"false" => false,
@@ -875,12 +856,8 @@ module Gitlab
end
def fetch_repository_as_mirror(repository)
- gitaly_migrate(:remote_fetch_internal_remote) do |is_enabled|
- if is_enabled
- gitaly_remote_client.fetch_internal_remote(repository)
- else
- rugged_fetch_repository_as_mirror(repository)
- end
+ wrapped_gitaly_errors do
+ gitaly_remote_client.fetch_internal_remote(repository)
end
end
@@ -1288,35 +1265,6 @@ module Gitlab
gitaly_ref_client.delete_refs(refs: ref_names) if ref_names.any?
end
- def rugged_remove_remote(remote_name)
- # When a remote is deleted all its remote refs are deleted too, but in
- # the case of mirrors we map its refs (that would usualy go under
- # [remote_name]/) to the top level namespace. We clean the mapping so
- # those don't get deleted.
- if rugged.config["remote.#{remote_name}.mirror"]
- rugged.config.delete("remote.#{remote_name}.fetch")
- end
-
- rugged.remotes.delete(remote_name)
- true
- rescue Rugged::ConfigError
- false
- end
-
- def rugged_fetch_repository_as_mirror(repository)
- remote_name = "tmp-#{SecureRandom.hex}"
- repository = RemoteRepository.new(repository) unless repository.is_a?(RemoteRepository)
-
- add_remote(remote_name, GITALY_INTERNAL_URL, mirror_refmap: :all_refs)
- fetch_remote(remote_name, env: repository.fetch_env)
- ensure
- remove_remote(remote_name)
- end
-
- def fetch_remote(remote_name = 'origin', env: nil)
- run_git(['fetch', remote_name], env: env).last.zero?
- end
-
def gitlab_projects_error
raise CommandError, @gitlab_projects.output
end
diff --git a/lib/gitlab/git/repository_mirroring.rb b/lib/gitlab/git/repository_mirroring.rb
index ef86d4a55ca..8835bfb2481 100644
--- a/lib/gitlab/git/repository_mirroring.rb
+++ b/lib/gitlab/git/repository_mirroring.rb
@@ -1,22 +1,6 @@
module Gitlab
module Git
module RepositoryMirroring
- REFMAPS = {
- # With `:all_refs`, the repository is equivalent to the result of `git clone --mirror`
- all_refs: '+refs/*:refs/*',
- heads: '+refs/heads/*:refs/heads/*',
- tags: '+refs/tags/*:refs/tags/*'
- }.freeze
-
- RemoteError = Class.new(StandardError)
-
- def set_remote_as_mirror(remote_name, refmap: :all_refs)
- set_remote_refmap(remote_name, refmap)
-
- rugged.config["remote.#{remote_name}.mirror"] = true
- rugged.config["remote.#{remote_name}.prune"] = true
- end
-
def remote_branches(remote_name)
gitaly_migrate(:ref_find_all_remote_branches) do |is_enabled|
if is_enabled
@@ -45,20 +29,6 @@ module Gitlab
branches
end
-
- def set_remote_refmap(remote_name, refmap)
- Array(refmap).each_with_index do |refspec, i|
- refspec = REFMAPS[refspec] || refspec
-
- # We need multiple `fetch` entries, but Rugged only allows replacing a config, not adding to it.
- # To make sure we start from scratch, we set the first using rugged, and use `git` for any others
- if i == 0
- rugged.config["remote.#{remote_name}.fetch"] = refspec
- else
- run_git(%W[config --add remote.#{remote_name}.fetch #{refspec}])
- end
- end
- end
end
end
end
diff --git a/lib/gitlab/gitaly_client/operation_service.rb b/lib/gitlab/gitaly_client/operation_service.rb
index 555733d1834..54c78fdb680 100644
--- a/lib/gitlab/gitaly_client/operation_service.rb
+++ b/lib/gitlab/gitaly_client/operation_service.rb
@@ -144,13 +144,14 @@ module Gitlab
branch: encode_binary(target_branch)
)
- branch_update = GitalyClient.call(
+ response = GitalyClient.call(
@repository.storage,
:operation_service,
:user_ff_branch,
request
- ).branch_update
- Gitlab::Git::OperationService::BranchUpdate.from_gitaly(branch_update)
+ )
+
+ Gitlab::Git::OperationService::BranchUpdate.from_gitaly(response.branch_update)
rescue GRPC::FailedPrecondition => e
raise Gitlab::Git::CommitError, e
end
@@ -306,9 +307,9 @@ module Gitlab
raise Gitlab::Git::CommitError, response.commit_error
elsif response.create_tree_error.presence
raise Gitlab::Git::Repository::CreateTreeError, response.create_tree_error
- else
- Gitlab::Git::OperationService::BranchUpdate.from_gitaly(response.branch_update)
end
+
+ Gitlab::Git::OperationService::BranchUpdate.from_gitaly(response.branch_update)
end
def user_commit_files_request_header(
diff --git a/lib/gitlab/profiler.rb b/lib/gitlab/profiler.rb
index ecff6ab5d5e..c5bb4648572 100644
--- a/lib/gitlab/profiler.rb
+++ b/lib/gitlab/profiler.rb
@@ -146,5 +146,11 @@ module Gitlab
logger.info("#{model} total (#{query_count}): #{time.round(2)}ms")
end
end
+
+ def self.print_by_total_time(result, options = {})
+ default_options = { sort_method: :total_time }
+
+ Gitlab::Profiler::TotalTimeFlatPrinter.new(result).print(STDOUT, default_options.merge(options))
+ end
end
end
diff --git a/lib/gitlab/profiler/total_time_flat_printer.rb b/lib/gitlab/profiler/total_time_flat_printer.rb
new file mode 100644
index 00000000000..2fd0ec10ba8
--- /dev/null
+++ b/lib/gitlab/profiler/total_time_flat_printer.rb
@@ -0,0 +1,39 @@
+module Gitlab
+ module Profiler
+ class TotalTimeFlatPrinter < RubyProf::FlatPrinter
+ def max_percent
+ @options[:max_percent] || 100
+ end
+
+ # Copied from:
+ # <https://github.com/ruby-prof/ruby-prof/blob/master/lib/ruby-prof/printers/flat_printer.rb>
+ #
+ # The changes are just to filter by total time, not self time, and add a
+ # max_percent option as well.
+ def print_methods(thread)
+ total_time = thread.total_time
+ methods = thread.methods.sort_by(&sort_method).reverse
+
+ sum = 0
+ methods.each do |method|
+ total_percent = (method.total_time / total_time) * 100
+ next if total_percent < min_percent
+ next if total_percent > max_percent
+
+ sum += method.self_time
+
+ @output << "%6.2f %9.3f %9.3f %9.3f %9.3f %8d %s%s\n" % [
+ method.self_time / total_time * 100, # %self
+ method.total_time, # total
+ method.self_time, # self
+ method.wait_time, # wait
+ method.children_time, # children
+ method.called, # calls
+ method.recursive? ? "*" : " ", # cycle
+ method_name(method) # name
+ ]
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/project_search_results.rb b/lib/gitlab/project_search_results.rb
index 38bdc61d8ab..62f9e538c04 100644
--- a/lib/gitlab/project_search_results.rb
+++ b/lib/gitlab/project_search_results.rb
@@ -5,7 +5,7 @@ module Gitlab
def initialize(current_user, project, query, repository_ref = nil, per_page: 20)
@current_user = current_user
@project = project
- @repository_ref = repository_ref.presence || project.default_branch
+ @repository_ref = repository_ref.presence
@query = query
@per_page = per_page
end
@@ -95,7 +95,7 @@ module Gitlab
def blobs
return [] unless Ability.allowed?(@current_user, :download_code, @project)
- @blobs ||= Gitlab::FileFinder.new(project, repository_ref).find(query)
+ @blobs ||= Gitlab::FileFinder.new(project, repository_project_ref).find(query)
end
def wiki_blobs
@@ -103,11 +103,8 @@ module Gitlab
@wiki_blobs ||= begin
if project.wiki_enabled? && query.present?
- project_wiki = ProjectWiki.new(project)
-
- unless project_wiki.empty?
- ref = repository_ref || project.wiki.default_branch
- Gitlab::WikiFileFinder.new(project, ref).find(query)
+ unless project.wiki.empty?
+ Gitlab::WikiFileFinder.new(project, repository_wiki_ref).find(query)
else
[]
end
@@ -150,5 +147,13 @@ module Gitlab
def project_ids_relation
project
end
+
+ def repository_project_ref
+ @repository_project_ref ||= repository_ref || project.default_branch
+ end
+
+ def repository_wiki_ref
+ @repository_wiki_ref ||= repository_ref || project.wiki.default_branch
+ end
end
end
diff --git a/lib/gitlab/serializer/ci/variables.rb b/lib/gitlab/serializer/ci/variables.rb
index c059c454eac..292c8de6229 100644
--- a/lib/gitlab/serializer/ci/variables.rb
+++ b/lib/gitlab/serializer/ci/variables.rb
@@ -13,8 +13,9 @@ module Gitlab
object = YAML.safe_load(string, [Symbol])
object.map do |variable|
- variable[:key] = variable[:key].to_s
- variable
+ variable.symbolize_keys.tap do |variable|
+ variable[:key] = variable[:key].to_s
+ end
end
end
diff --git a/lib/gitlab/url_sanitizer.rb b/lib/gitlab/url_sanitizer.rb
index de8b6ec69ce..308a95d2f09 100644
--- a/lib/gitlab/url_sanitizer.rb
+++ b/lib/gitlab/url_sanitizer.rb
@@ -71,12 +71,10 @@ module Gitlab
def generate_full_url
return @url unless valid_credentials?
- @full_url = @url.dup
-
- @full_url.password = credentials[:password] if credentials[:password].present?
- @full_url.user = credentials[:user] if credentials[:user].present?
-
- @full_url
+ @url.dup.tap do |generated|
+ generated.password = encode_percent(credentials[:password]) if credentials[:password].present?
+ generated.user = encode_percent(credentials[:user]) if credentials[:user].present?
+ end
end
def safe_url
@@ -89,5 +87,10 @@ module Gitlab
def valid_credentials?
credentials && credentials.is_a?(Hash) && credentials.any?
end
+
+ def encode_percent(string)
+ # CGI.escape converts spaces to +, but this doesn't work for git clone
+ CGI.escape(string).gsub('+', '%20')
+ end
end
end
diff --git a/lib/tasks/gitlab/cleanup.rake b/lib/tasks/gitlab/cleanup.rake
index 52ae1330d7f..5e07b12ee1c 100644
--- a/lib/tasks/gitlab/cleanup.rake
+++ b/lib/tasks/gitlab/cleanup.rake
@@ -104,28 +104,5 @@ namespace :gitlab do
puts "To block these users run this command with BLOCK=true".color(:yellow)
end
end
-
- # This is a rake task which removes faulty refs. These refs where only
- # created in the 8.13.RC cycle, and fixed in the stable builds which were
- # released. So likely this should only be run once on gitlab.com
- # Faulty refs are moved so they are kept around, else some features break.
- desc 'GitLab | Cleanup | Remove faulty deployment refs'
- task move_faulty_deployment_refs: :gitlab_environment do
- projects = Project.where(id: Deployment.select(:project_id).distinct)
-
- projects.find_each do |project|
- rugged = project.repository.rugged
-
- max_iid = project.deployments.maximum(:iid)
-
- rugged.references.each('refs/environments/**/*') do |ref|
- id = ref.name.split('/').last.to_i
- next unless id > max_iid
-
- project.deployments.find(id).create_ref
- project.repository.delete_refs(ref)
- end
- end
- end
end
end
diff --git a/package.json b/package.json
index e1801d4d435..256ebc1fb6e 100644
--- a/package.json
+++ b/package.json
@@ -53,6 +53,7 @@
"emoji-unicode-version": "^0.2.1",
"exports-loader": "^0.7.0",
"file-loader": "^1.1.11",
+ "formdata-polyfill": "^3.0.11",
"fuzzaldrin-plus": "^0.5.0",
"glob": "^7.1.2",
"imports-loader": "^0.8.0",
diff --git a/spec/javascripts/helpers/vuex_action_helper.js b/spec/javascripts/helpers/vuex_action_helper.js
index 4ca7015184e..dd9174194a1 100644
--- a/spec/javascripts/helpers/vuex_action_helper.js
+++ b/spec/javascripts/helpers/vuex_action_helper.js
@@ -84,14 +84,12 @@ export default (
done();
};
- return new Promise((resolve, reject) => {
- try {
- const result = action({ commit, state, dispatch, rootState: state }, payload);
- resolve(result);
- } catch (e) {
- reject(e);
- }
+ const result = action({ commit, state, dispatch, rootState: state }, payload);
+
+ return new Promise(resolve => {
+ setImmediate(resolve);
})
+ .then(() => result)
.catch(error => {
validateResults();
throw error;
diff --git a/spec/javascripts/helpers/vuex_action_helper_spec.js b/spec/javascripts/helpers/vuex_action_helper_spec.js
index 8d6ad6750c0..09f0bd395c3 100644
--- a/spec/javascripts/helpers/vuex_action_helper_spec.js
+++ b/spec/javascripts/helpers/vuex_action_helper_spec.js
@@ -138,4 +138,29 @@ describe('VueX test helper (testAction)', () => {
});
});
});
+
+ it('should work with async actions not returning promises', done => {
+ const data = { FOO: 'BAR' };
+
+ const promiseAction = ({ commit, dispatch }) => {
+ dispatch('ACTION');
+
+ axios
+ .get(TEST_HOST)
+ .then(() => {
+ commit('SUCCESS');
+ return data;
+ })
+ .catch(error => {
+ commit('ERROR');
+ throw error;
+ });
+ };
+
+ mock.onGet(TEST_HOST).replyOnce(200, 42);
+
+ assertion = { mutations: [{ type: 'SUCCESS' }], actions: [{ type: 'ACTION' }] };
+
+ testAction(promiseAction, null, {}, assertion.mutations, assertion.actions, done);
+ });
});
diff --git a/spec/javascripts/ide/ide_router_spec.js b/spec/javascripts/ide/ide_router_spec.js
new file mode 100644
index 00000000000..52ea0882bf4
--- /dev/null
+++ b/spec/javascripts/ide/ide_router_spec.js
@@ -0,0 +1,44 @@
+import router from '~/ide/ide_router';
+import store from '~/ide/stores';
+
+describe('IDE router', () => {
+ const PROJECT_NAMESPACE = 'my-group/sub-group';
+ const PROJECT_NAME = 'my-project';
+
+ afterEach(() => {
+ router.push('/');
+ });
+
+ afterAll(() => {
+ // VueRouter leaves this window.history at the "base" url. We need to clean this up.
+ window.history.replaceState({}, '', '/');
+ });
+
+ [
+ `/project/${PROJECT_NAMESPACE}/${PROJECT_NAME}/tree/master/-/src/blob/`,
+ `/project/${PROJECT_NAMESPACE}/${PROJECT_NAME}/tree/master/-/src/blob`,
+ `/project/${PROJECT_NAMESPACE}/${PROJECT_NAME}/tree/blob/-/src/blob`,
+ `/project/${PROJECT_NAMESPACE}/${PROJECT_NAME}/tree/master/-/src/tree/`,
+ `/project/${PROJECT_NAMESPACE}/${PROJECT_NAME}/tree/weird:branch/name-123/-/src/tree/`,
+ `/project/${PROJECT_NAMESPACE}/${PROJECT_NAME}/blob/master/-/src/blob`,
+ `/project/${PROJECT_NAMESPACE}/${PROJECT_NAME}/blob/master/-/src/edit`,
+ `/project/${PROJECT_NAMESPACE}/${PROJECT_NAME}/blob/master/-/src/merge_requests/2`,
+ `/project/${PROJECT_NAMESPACE}/${PROJECT_NAME}/blob/blob/-/src/blob`,
+ `/project/${PROJECT_NAMESPACE}/${PROJECT_NAME}/edit/blob/-/src/blob`,
+ `/project/${PROJECT_NAMESPACE}/${PROJECT_NAME}/merge_requests/2`,
+ `/project/${PROJECT_NAMESPACE}/${PROJECT_NAME}/tree/blob`,
+ `/project/${PROJECT_NAMESPACE}/${PROJECT_NAME}/edit`,
+ `/project/${PROJECT_NAMESPACE}/${PROJECT_NAME}`,
+ ].forEach(route => {
+ it(`finds project path when route is "${route}"`, () => {
+ spyOn(store, 'dispatch').and.returnValue(new Promise(() => {}));
+
+ router.push(route);
+
+ expect(store.dispatch).toHaveBeenCalledWith('getProjectData', {
+ namespace: PROJECT_NAMESPACE,
+ projectId: PROJECT_NAME,
+ });
+ });
+ });
+});
diff --git a/spec/lib/gitlab/ci/variables/collection/item_spec.rb b/spec/lib/gitlab/ci/variables/collection/item_spec.rb
index adb3ff4321f..46874662edd 100644
--- a/spec/lib/gitlab/ci/variables/collection/item_spec.rb
+++ b/spec/lib/gitlab/ci/variables/collection/item_spec.rb
@@ -75,6 +75,14 @@ describe Gitlab::Ci::Variables::Collection::Item do
expect(resource).to eq variable
end
+ it 'supports using a hash with stringified values' do
+ variable = { 'key' => 'VARIABLE', 'value' => 'my value' }
+
+ resource = described_class.fabricate(variable)
+
+ expect(resource).to eq(key: 'VARIABLE', value: 'my value')
+ end
+
it 'supports using an active record resource' do
variable = create(:ci_variable, key: 'CI_VAR', value: '123')
resource = described_class.fabricate(variable)
diff --git a/spec/lib/gitlab/git/repository_spec.rb b/spec/lib/gitlab/git/repository_spec.rb
index ee385226e65..62396af1ebe 100644
--- a/spec/lib/gitlab/git/repository_spec.rb
+++ b/spec/lib/gitlab/git/repository_spec.rb
@@ -527,25 +527,6 @@ describe Gitlab::Git::Repository, seed_helper: true do
end
end
- describe "#remote_update" do
- before(:all) do
- @repo = Gitlab::Git::Repository.new('default', TEST_MUTABLE_REPO_PATH, '')
- @repo.remote_update("expendable", url: TEST_NORMAL_REPO_PATH)
- end
-
- it "should add the remote" do
- rugged = Gitlab::GitalyClient::StorageSettings.allow_disk_access { @repo.rugged }
-
- expect(rugged.remotes["expendable"].url).to(
- eq(TEST_NORMAL_REPO_PATH)
- )
- end
-
- after(:all) do
- ensure_seeds
- end
- end
-
describe '#fetch_repository_as_mirror' do
let(:new_repository) do
Gitlab::Git::Repository.new('default', 'my_project.git', '')
diff --git a/spec/lib/gitlab/gitaly_client/operation_service_spec.rb b/spec/lib/gitlab/gitaly_client/operation_service_spec.rb
index 031d1e87dc1..eaf64e3c9b4 100644
--- a/spec/lib/gitlab/gitaly_client/operation_service_spec.rb
+++ b/spec/lib/gitlab/gitaly_client/operation_service_spec.rb
@@ -1,10 +1,10 @@
require 'spec_helper'
describe Gitlab::GitalyClient::OperationService do
- let(:project) { create(:project) }
+ set(:project) { create(:project, :repository) }
let(:repository) { project.repository.raw }
let(:client) { described_class.new(repository) }
- let(:user) { create(:user) }
+ set(:user) { create(:user) }
let(:gitaly_user) { Gitlab::Git::User.from_gitlab(user).to_gitaly }
describe '#user_create_branch' do
@@ -151,18 +151,104 @@ describe Gitlab::GitalyClient::OperationService do
end
let(:response) { Gitaly::UserFFBranchResponse.new(branch_update: branch_update) }
- subject { client.user_ff_branch(user, source_sha, target_branch) }
-
- it 'sends a user_ff_branch message and returns a BranchUpdate object' do
+ before do
expect_any_instance_of(Gitaly::OperationService::Stub)
.to receive(:user_ff_branch).with(request, kind_of(Hash))
.and_return(response)
+ end
+ subject { client.user_ff_branch(user, source_sha, target_branch) }
+
+ it 'sends a user_ff_branch message and returns a BranchUpdate object' do
expect(subject).to be_a(Gitlab::Git::OperationService::BranchUpdate)
expect(subject.newrev).to eq(source_sha)
expect(subject.repo_created).to be(false)
expect(subject.branch_created).to be(false)
end
+
+ context 'when the response has no branch_update' do
+ let(:response) { Gitaly::UserFFBranchResponse.new }
+
+ it { expect(subject).to be_nil }
+ end
+ end
+
+ shared_examples 'cherry pick and revert errors' do
+ context 'when a pre_receive_error is present' do
+ let(:response) { response_class.new(pre_receive_error: "something failed") }
+
+ it 'raises a PreReceiveError' do
+ expect { subject }.to raise_error(Gitlab::Git::PreReceiveError, "something failed")
+ end
+ end
+
+ context 'when a commit_error is present' do
+ let(:response) { response_class.new(commit_error: "something failed") }
+
+ it 'raises a CommitError' do
+ expect { subject }.to raise_error(Gitlab::Git::CommitError, "something failed")
+ end
+ end
+
+ context 'when a create_tree_error is present' do
+ let(:response) { response_class.new(create_tree_error: "something failed") }
+
+ it 'raises a CreateTreeError' do
+ expect { subject }.to raise_error(Gitlab::Git::Repository::CreateTreeError, "something failed")
+ end
+ end
+
+ context 'when branch_update is nil' do
+ let(:response) { response_class.new }
+
+ it { expect(subject).to be_nil }
+ end
+ end
+
+ describe '#user_cherry_pick' do
+ let(:response_class) { Gitaly::UserCherryPickResponse }
+
+ subject do
+ client.user_cherry_pick(
+ user: user,
+ commit: repository.commit,
+ branch_name: 'master',
+ message: 'Cherry-pick message',
+ start_branch_name: 'master',
+ start_repository: repository
+ )
+ end
+
+ before do
+ expect_any_instance_of(Gitaly::OperationService::Stub)
+ .to receive(:user_cherry_pick).with(kind_of(Gitaly::UserCherryPickRequest), kind_of(Hash))
+ .and_return(response)
+ end
+
+ it_behaves_like 'cherry pick and revert errors'
+ end
+
+ describe '#user_revert' do
+ let(:response_class) { Gitaly::UserRevertResponse }
+
+ subject do
+ client.user_revert(
+ user: user,
+ commit: repository.commit,
+ branch_name: 'master',
+ message: 'Revert message',
+ start_branch_name: 'master',
+ start_repository: repository
+ )
+ end
+
+ before do
+ expect_any_instance_of(Gitaly::OperationService::Stub)
+ .to receive(:user_revert).with(kind_of(Gitaly::UserRevertRequest), kind_of(Hash))
+ .and_return(response)
+ end
+
+ it_behaves_like 'cherry pick and revert errors'
end
describe '#user_squash' do
@@ -203,7 +289,7 @@ describe Gitlab::GitalyClient::OperationService do
Gitaly::UserSquashResponse.new(git_error: "something failed")
end
- it "throws a PreReceive exception" do
+ it "raises a GitError exception" do
expect_any_instance_of(Gitaly::OperationService::Stub)
.to receive(:user_squash).with(request, kind_of(Hash))
.and_return(response)
@@ -212,5 +298,41 @@ describe Gitlab::GitalyClient::OperationService do
Gitlab::Git::Repository::GitError, "something failed")
end
end
+
+ describe '#user_commit_files' do
+ subject do
+ client.user_commit_files(
+ gitaly_user, 'my-branch', 'Commit files message', [], 'janedoe@example.com', 'Jane Doe',
+ 'master', repository)
+ end
+
+ before do
+ expect_any_instance_of(Gitaly::OperationService::Stub)
+ .to receive(:user_commit_files).with(kind_of(Enumerator), kind_of(Hash))
+ .and_return(response)
+ end
+
+ context 'when a pre_receive_error is present' do
+ let(:response) { Gitaly::UserCommitFilesResponse.new(pre_receive_error: "something failed") }
+
+ it 'raises a PreReceiveError' do
+ expect { subject }.to raise_error(Gitlab::Git::PreReceiveError, "something failed")
+ end
+ end
+
+ context 'when an index_error is present' do
+ let(:response) { Gitaly::UserCommitFilesResponse.new(index_error: "something failed") }
+
+ it 'raises a PreReceiveError' do
+ expect { subject }.to raise_error(Gitlab::Git::Index::IndexError, "something failed")
+ end
+ end
+
+ context 'when branch_update is nil' do
+ let(:response) { Gitaly::UserCommitFilesResponse.new }
+
+ it { expect(subject).to be_nil }
+ end
+ end
end
end
diff --git a/spec/lib/gitlab/project_search_results_spec.rb b/spec/lib/gitlab/project_search_results_spec.rb
index 767a3092c73..4a0dc3686ec 100644
--- a/spec/lib/gitlab/project_search_results_spec.rb
+++ b/spec/lib/gitlab/project_search_results_spec.rb
@@ -64,6 +64,49 @@ describe Gitlab::ProjectSearchResults do
end
end
+ shared_examples 'blob search repository ref' do |entity_type|
+ let(:query) { 'files' }
+ let(:file_finder) { double }
+ let(:project_branch) { 'project_branch' }
+
+ subject(:results) { described_class.new(user, project, query, repository_ref).objects(blob_type) }
+
+ before do
+ allow(entity).to receive(:default_branch).and_return(project_branch)
+ allow(file_finder).to receive(:find).and_return([])
+ end
+
+ context 'when repository_ref exists' do
+ let(:repository_ref) { 'ref_branch' }
+
+ it 'uses it' do
+ expect(Gitlab::FileFinder).to receive(:new).with(project, repository_ref).and_return(file_finder)
+
+ results
+ end
+ end
+
+ context 'when repository_ref is not present' do
+ let(:repository_ref) { nil }
+
+ it "uses #{entity_type} repository default reference" do
+ expect(Gitlab::FileFinder).to receive(:new).with(project, project_branch).and_return(file_finder)
+
+ results
+ end
+ end
+
+ context 'when repository_ref is blank' do
+ let(:repository_ref) { '' }
+
+ it "uses #{entity_type} repository default reference" do
+ expect(Gitlab::FileFinder).to receive(:new).with(project, project_branch).and_return(file_finder)
+
+ results
+ end
+ end
+ end
+
describe 'blob search' do
let(:project) { create(:project, :public, :repository) }
@@ -75,6 +118,11 @@ describe Gitlab::ProjectSearchResults do
let(:expected_file_by_content) { 'CHANGELOG' }
end
+ it_behaves_like 'blob search repository ref', 'project' do
+ let(:blob_type) { 'blobs' }
+ let(:entity) { project }
+ end
+
describe 'parsing results' do
let(:results) { project.repository.search_files_by_content('feature', 'master') }
let(:search_result) { results.first }
@@ -212,6 +260,11 @@ describe Gitlab::ProjectSearchResults do
let(:expected_file_by_name) { 'Files/Title.md' }
let(:expected_file_by_content) { 'CHANGELOG.md' }
end
+
+ it_behaves_like 'blob search repository ref', 'wiki' do
+ let(:blob_type) { 'wiki_blobs' }
+ let(:entity) { project.wiki }
+ end
end
it 'does not list issues on private projects' do
diff --git a/spec/lib/gitlab/serializer/ci/variables_spec.rb b/spec/lib/gitlab/serializer/ci/variables_spec.rb
index c4b7fda5dbb..1d1fd5b0763 100644
--- a/spec/lib/gitlab/serializer/ci/variables_spec.rb
+++ b/spec/lib/gitlab/serializer/ci/variables_spec.rb
@@ -1,4 +1,4 @@
-require 'spec_helper'
+require 'fast_spec_helper'
describe Gitlab::Serializer::Ci::Variables do
subject do
@@ -6,11 +6,11 @@ describe Gitlab::Serializer::Ci::Variables do
end
let(:object) do
- [{ key: :key, value: 'value', public: true },
+ [{ 'key' => :key, 'value' => 'value', 'public' => true },
{ key: 'wee', value: 1, public: false }]
end
- it 'converts keys into strings' do
+ it 'converts keys into strings and symbolizes hash' do
is_expected.to eq([
{ key: 'key', value: 'value', public: true },
{ key: 'wee', value: 1, public: false }
diff --git a/spec/lib/gitlab/url_sanitizer_spec.rb b/spec/lib/gitlab/url_sanitizer_spec.rb
index 758a9bc5a2b..b41a81a8167 100644
--- a/spec/lib/gitlab/url_sanitizer_spec.rb
+++ b/spec/lib/gitlab/url_sanitizer_spec.rb
@@ -145,6 +145,10 @@ describe Gitlab::UrlSanitizer do
'http://foo:@example.com' | 'http://foo@example.com'
'http://:bar@example.com' | :same
'http://foo:bar@example.com' | :same
+ 'http://foo:g p@example.com' | 'http://foo:g%20p@example.com'
+ 'http://foo:s/h@example.com' | 'http://foo:s%2Fh@example.com'
+ 'http://t u:a#b@example.com' | 'http://t%20u:a%23b@example.com'
+ 'http://t+u:a#b@example.com' | 'http://t%2Bu:a%23b@example.com'
end
with_them do
@@ -160,7 +164,7 @@ describe Gitlab::UrlSanitizer do
url_sanitizer = described_class.new("https://foo:b?r@github.com/me/project.git")
expect(url_sanitizer.sanitized_url).to eq("https://github.com/me/project.git")
- expect(url_sanitizer.full_url).to eq("https://foo:b?r@github.com/me/project.git")
+ expect(url_sanitizer.full_url).to eq("https://foo:b%3Fr@github.com/me/project.git")
end
end
end
diff --git a/spec/migrations/migrate_process_commit_worker_jobs_spec.rb b/spec/migrations/migrate_process_commit_worker_jobs_spec.rb
index a30e6c23ac9..6219a67c900 100644
--- a/spec/migrations/migrate_process_commit_worker_jobs_spec.rb
+++ b/spec/migrations/migrate_process_commit_worker_jobs_spec.rb
@@ -4,14 +4,11 @@ require 'spec_helper'
require Rails.root.join('db', 'migrate', '20161124141322_migrate_process_commit_worker_jobs.rb')
describe MigrateProcessCommitWorkerJobs do
- let(:project) { create(:project, :legacy_storage, :repository) } # rubocop:disable RSpec/FactoriesInMigrationSpecs
- let(:user) { create(:user) } # rubocop:disable RSpec/FactoriesInMigrationSpecs
- let(:rugged) do
- Gitlab::GitalyClient::StorageSettings.allow_disk_access do
- project.repository.rugged
- end
+ set(:project) { create(:project, :legacy_storage, :repository) } # rubocop:disable RSpec/FactoriesInMigrationSpecs
+ set(:user) { create(:user) } # rubocop:disable RSpec/FactoriesInMigrationSpecs
+ let(:commit) do
+ Gitlab::Git::Commit.last(project.repository.raw)
end
- let(:commit) { rugged.rev_parse(project.commit.id) }
describe 'Project' do
describe 'find_including_path' do
@@ -29,32 +26,13 @@ describe MigrateProcessCommitWorkerJobs do
end
end
- describe '#repository_storage_path' do
- it 'returns the storage path for the repository' do
- migration_project = described_class::Project
- .find_including_path(project.id)
-
- expect(File.directory?(migration_project.repository_storage_path))
- .to eq(true)
- end
- end
-
- describe '#repository_path' do
- it 'returns the path to the repository' do
- migration_project = described_class::Project
- .find_including_path(project.id)
-
- expect(File.directory?(migration_project.repository_path)).to eq(true)
- end
- end
-
describe '#repository' do
- it 'returns a Rugged::Repository' do
+ it 'returns a mock implemention of ::Repository' do
migration_project = described_class::Project
.find_including_path(project.id)
- expect(migration_project.repository)
- .to be_an_instance_of(Rugged::Repository)
+ expect(migration_project.repository).to respond_to(:storage)
+ expect(migration_project.repository).to respond_to(:gitaly_repository)
end
end
end
@@ -72,7 +50,7 @@ describe MigrateProcessCommitWorkerJobs do
before do
Sidekiq.redis do |redis|
- job = JSON.dump(args: [project.id, user.id, commit.oid])
+ job = JSON.dump(args: [project.id, user.id, commit.id])
redis.lpush('queue:process_commit', job)
end
end
@@ -88,9 +66,10 @@ describe MigrateProcessCommitWorkerJobs do
end
it 'skips jobs using commits that no longer exist' do
- allow_any_instance_of(Rugged::Repository).to receive(:lookup)
- .with(commit.oid)
- .and_raise(Rugged::OdbError)
+ allow_any_instance_of(Gitlab::GitalyClient::CommitService)
+ .to receive(:find_commit)
+ .with(commit.id)
+ .and_return(nil)
migration.up
@@ -104,11 +83,7 @@ describe MigrateProcessCommitWorkerJobs do
end
it 'encodes data to UTF-8' do
- allow_any_instance_of(Rugged::Repository).to receive(:lookup)
- .with(commit.oid)
- .and_return(commit)
-
- allow(commit).to receive(:message)
+ allow(commit).to receive(:body)
.and_return('김치'.force_encoding('BINARY'))
migration.up
@@ -140,7 +115,7 @@ describe MigrateProcessCommitWorkerJobs do
end
it 'includes the commit ID' do
- expect(commit_hash['id']).to eq(commit.oid)
+ expect(commit_hash['id']).to eq(commit.id)
end
it 'includes the commit message' do
@@ -152,27 +127,27 @@ describe MigrateProcessCommitWorkerJobs do
end
it 'includes the author date' do
- expect(commit_hash['authored_date']).to eq(commit.author[:time].to_s)
+ expect(commit_hash['authored_date']).to eq(commit.authored_date.to_s)
end
it 'includes the author name' do
- expect(commit_hash['author_name']).to eq(commit.author[:name])
+ expect(commit_hash['author_name']).to eq(commit.author_name)
end
it 'includes the author Email' do
- expect(commit_hash['author_email']).to eq(commit.author[:email])
+ expect(commit_hash['author_email']).to eq(commit.author_email)
end
it 'includes the commit date' do
- expect(commit_hash['committed_date']).to eq(commit.committer[:time].to_s)
+ expect(commit_hash['committed_date']).to eq(commit.committed_date.to_s)
end
it 'includes the committer name' do
- expect(commit_hash['committer_name']).to eq(commit.committer[:name])
+ expect(commit_hash['committer_name']).to eq(commit.committer_name)
end
it 'includes the committer Email' do
- expect(commit_hash['committer_email']).to eq(commit.committer[:email])
+ expect(commit_hash['committer_email']).to eq(commit.committer_email)
end
end
end
@@ -186,7 +161,7 @@ describe MigrateProcessCommitWorkerJobs do
before do
Sidekiq.redis do |redis|
- job = JSON.dump(args: [project.id, user.id, commit.oid])
+ job = JSON.dump(args: [project.id, user.id, commit.id])
redis.lpush('queue:process_commit', job)
migration.up
@@ -215,7 +190,7 @@ describe MigrateProcessCommitWorkerJobs do
end
it 'includes the commit SHA' do
- expect(job['args'][2]).to eq(commit.oid)
+ expect(job['args'][2]).to eq(commit.id)
end
end
end
diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb
index ee923374480..67199eb6d26 100644
--- a/spec/models/ci/build_spec.rb
+++ b/spec/models/ci/build_spec.rb
@@ -2269,6 +2269,34 @@ describe Ci::Build do
end
end
+ describe '#yaml_variables' do
+ before do
+ build.update_attribute(:yaml_variables, variables)
+ end
+
+ context 'when serialized valu is a symbolized hash' do
+ let(:variables) do
+ [{ key: :VARIABLE, value: 'my value 1' }]
+ end
+
+ it 'keeps symbolizes keys and stringifies variables names' do
+ expect(build.yaml_variables)
+ .to eq [{ key: 'VARIABLE', value: 'my value 1' }]
+ end
+ end
+
+ context 'when serialized value is a hash with string keys' do
+ let(:variables) do
+ [{ 'key' => :VARIABLE, 'value' => 'my value 2' }]
+ end
+
+ it 'symblizes variables hash' do
+ expect(build.yaml_variables)
+ .to eq [{ key: 'VARIABLE', value: 'my value 2' }]
+ end
+ end
+ end
+
describe 'state transition: any => [:pending]' do
let(:build) { create(:ci_build, :created) }
diff --git a/yarn.lock b/yarn.lock
index 67f9aa98c74..85fdb150d34 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3211,6 +3211,10 @@ form-data@~2.3.0, form-data@~2.3.1:
combined-stream "1.0.6"
mime-types "^2.1.12"
+formdata-polyfill@^3.0.11:
+ version "3.0.11"
+ resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-3.0.11.tgz#c82b4b4bea3356c0a6752219e54ce1edb2a7fb5b"
+
forwarded@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"