diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-03-24 06:09:16 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-03-24 06:09:16 +0000 |
commit | f1d39f5bea74d84c38b4713f66cfcc9fdbcd1c57 (patch) | |
tree | 2c43f91d951a7465535d6e3b328a12e5f93aa1e1 | |
parent | 93b0b77287acb1cf1a6a408b3a4e9587bedc9364 (diff) | |
download | gitlab-ce-f1d39f5bea74d84c38b4713f66cfcc9fdbcd1c57.tar.gz |
Add latest changes from gitlab-org/gitlab@master
23 files changed, 101 insertions, 91 deletions
diff --git a/app/assets/javascripts/boards/components/board_add_new_column_trigger.vue b/app/assets/javascripts/boards/components/board_add_new_column_trigger.vue index 7c08e33be7e..85f001d9d61 100644 --- a/app/assets/javascripts/boards/components/board_add_new_column_trigger.vue +++ b/app/assets/javascripts/boards/components/board_add_new_column_trigger.vue @@ -13,9 +13,9 @@ export default { </script> <template> - <span class="gl-ml-3 gl-display-flex gl-align-items-center" data-testid="boards-create-list"> + <div class="gl-ml-3 gl-display-flex gl-align-items-center" data-testid="boards-create-list"> <gl-button variant="confirm" @click="setAddColumnFormVisibility(true)" >{{ __('Create list') }} </gl-button> - </span> + </div> </template> diff --git a/app/assets/javascripts/boards/components/toggle_focus.vue b/app/assets/javascripts/boards/components/toggle_focus.vue index 74805f8a681..dc0f8ffd0fd 100644 --- a/app/assets/javascripts/boards/components/toggle_focus.vue +++ b/app/assets/javascripts/boards/components/toggle_focus.vue @@ -38,10 +38,11 @@ export default { </script> <template> - <div class="board-extra-actions gl-ml-3 gl-display-flex gl-align-items-center"> + <div class="board-extra-actions gl-ml-3 gl-display-none gl-md-display-flex gl-align-items-center"> <gl-button ref="toggleFocusModeButton" v-gl-tooltip + category="tertiary" :icon="isFullscreen ? 'minimize' : 'maximize'" class="js-focus-mode-btn" data-qa-selector="focus_mode_button" diff --git a/app/assets/javascripts/droplab/drop_lab.js b/app/assets/javascripts/droplab/drop_lab.js index 74fa6887ba5..6f068aaa800 100644 --- a/app/assets/javascripts/droplab/drop_lab.js +++ b/app/assets/javascripts/droplab/drop_lab.js @@ -60,21 +60,24 @@ class DropLab { addEvents() { this.eventWrapper.documentClicked = this.documentClicked.bind(this); - document.addEventListener('mousedown', this.eventWrapper.documentClicked); + document.addEventListener('click', this.eventWrapper.documentClicked); } documentClicked(e) { - let thisTag = e.target; + if (e.defaultPrevented) return; - if (thisTag.tagName !== 'UL') thisTag = utils.closest(thisTag, 'UL'); - if (utils.isDropDownParts(thisTag, this.hooks)) return; - if (utils.isDropDownParts(e.target, this.hooks)) return; + if (utils.isDropDownParts(e.target)) return; + + if (e.target.tagName !== 'UL') { + const closestUl = utils.closest(e.target, 'UL'); + if (utils.isDropDownParts(closestUl)) return; + } this.hooks.forEach((hook) => hook.list.hide()); } removeEvents() { - document.removeEventListener('mousedown', this.eventWrapper.documentClicked); + document.removeEventListener('click', this.eventWrapper.documentClicked); } changeHookList(trigger, list, plugins, config) { diff --git a/app/assets/javascripts/droplab/hook_button.js b/app/assets/javascripts/droplab/hook_button.js index c58d0052251..c51d6167fa3 100644 --- a/app/assets/javascripts/droplab/hook_button.js +++ b/app/assets/javascripts/droplab/hook_button.js @@ -18,6 +18,8 @@ class HookButton extends Hook { } clicked(e) { + e.preventDefault(); + const buttonEvent = new CustomEvent('click.dl', { detail: { hook: this, diff --git a/app/controllers/root_controller.rb b/app/controllers/root_controller.rb index dab2f3bd67a..672a03ad11d 100644 --- a/app/controllers/root_controller.rb +++ b/app/controllers/root_controller.rb @@ -13,7 +13,6 @@ class RootController < Dashboard::ProjectsController before_action :redirect_unlogged_user, if: -> { current_user.nil? } before_action :redirect_logged_user, if: -> { current_user.present? } - before_action :customize_homepage, only: :index, if: -> { current_user.present? } # We only need to load the projects when the user is logged in but did not # configure a dashboard. In which case we render projects. We can do that straight # from the #index action. @@ -69,10 +68,6 @@ class RootController < Dashboard::ProjectsController root_urls.exclude?(home_page_url) end - - def customize_homepage - @customize_homepage = Feature.enabled?(:customize_homepage, default_enabled: :yaml) - end end RootController.prepend_if_ee('EE::RootController') diff --git a/app/helpers/user_callouts_helper.rb b/app/helpers/user_callouts_helper.rb index 6a242d000ae..d1db624432b 100644 --- a/app/helpers/user_callouts_helper.rb +++ b/app/helpers/user_callouts_helper.rb @@ -49,8 +49,8 @@ module UserCalloutsHelper !user_dismissed?(WEBHOOKS_MOVED) end - def show_customize_homepage_banner?(customize_homepage) - customize_homepage && !user_dismissed?(CUSTOMIZE_HOMEPAGE) + def show_customize_homepage_banner? + !user_dismissed?(CUSTOMIZE_HOMEPAGE) end def show_feature_flags_new_version? diff --git a/app/views/dashboard/projects/index.html.haml b/app/views/dashboard/projects/index.html.haml index 1f4bd06aea4..c24d386c412 100644 --- a/app/views/dashboard/projects/index.html.haml +++ b/app/views/dashboard/projects/index.html.haml @@ -3,7 +3,7 @@ = content_for :meta_tags do = auto_discovery_link_tag(:atom, dashboard_projects_url(rss_url_options), title: "All activity") -- if show_customize_homepage_banner?(@customize_homepage) +- if show_customize_homepage_banner? = content_for :customize_homepage_banner do .gl-display-none.gl-md-display-block{ class: "gl-pt-6! gl-pb-2! #{(container_class unless @no_container)} #{@content_class}" } .js-customize-homepage-banner{ data: { svg_path: image_path('illustrations/monitoring/getting_started.svg'), diff --git a/app/views/shared/doorkeeper/applications/_delete_form.html.haml b/app/views/shared/doorkeeper/applications/_delete_form.html.haml index 172661a179a..caa553bc2ef 100644 --- a/app/views/shared/doorkeeper/applications/_delete_form.html.haml +++ b/app/views/shared/doorkeeper/applications/_delete_form.html.haml @@ -2,7 +2,7 @@ = form_tag path do %input{ :name => "_method", :type => "hidden", :value => "delete" } - if defined? small - = button_tag type: "submit", class: "gl-button btn btn-default", data: { confirm: _("Are you sure?") } do + = button_tag type: "submit", class: "gl-button btn btn-danger btn-icon", data: { confirm: _("Are you sure?") } do %span.sr-only = _('Destroy') = sprite_icon('remove') diff --git a/app/views/shared/doorkeeper/applications/_index.html.haml b/app/views/shared/doorkeeper/applications/_index.html.haml index 2365c52cf6a..8ccb4bcdbe0 100644 --- a/app/views/shared/doorkeeper/applications/_index.html.haml +++ b/app/views/shared/doorkeeper/applications/_index.html.haml @@ -43,7 +43,7 @@ %div= uri %td= application.access_tokens.count %td.gl-display-flex - = link_to edit_application_url.call(application), class: "gl-button btn btn-default gl-mr-2" do + = link_to edit_application_url.call(application), class: "gl-button btn btn-default btn-icon gl-mr-3" do %span.sr-only = _('Edit') = sprite_icon('pencil') diff --git a/changelogs/unreleased/273325-fy21q4-foundations-kr2-audit-and-update-buttons-on-groups-boardsco.yml b/changelogs/unreleased/273325-fy21q4-foundations-kr2-audit-and-update-buttons-on-groups-boardsco.yml new file mode 100644 index 00000000000..99463a4e3be --- /dev/null +++ b/changelogs/unreleased/273325-fy21q4-foundations-kr2-audit-and-update-buttons-on-groups-boardsco.yml @@ -0,0 +1,5 @@ +--- +title: Only display focus mode button at md+ breakpoint and make it the tertiary style +merge_request: 57139 +author: +type: other diff --git a/changelogs/unreleased/299895-experiment-cleanup-customize_homepage-banner-2.yml b/changelogs/unreleased/299895-experiment-cleanup-customize_homepage-banner-2.yml new file mode 100644 index 00000000000..17d4d90a8df --- /dev/null +++ b/changelogs/unreleased/299895-experiment-cleanup-customize_homepage-banner-2.yml @@ -0,0 +1,5 @@ +--- +title: Remove feature flag for customize homepage banner +merge_request: 57147 +author: +type: other diff --git a/changelogs/unreleased/btn-danger-apps.yml b/changelogs/unreleased/btn-danger-apps.yml new file mode 100644 index 00000000000..1da4ff43ff9 --- /dev/null +++ b/changelogs/unreleased/btn-danger-apps.yml @@ -0,0 +1,5 @@ +--- +title: Move to btn-danger for delete button in applications +merge_request: 56088 +author: Yogi (@yo) +type: changed diff --git a/changelogs/unreleased/close-droplab-dropdowns-on-click.yml b/changelogs/unreleased/close-droplab-dropdowns-on-click.yml new file mode 100644 index 00000000000..5091ec1a626 --- /dev/null +++ b/changelogs/unreleased/close-droplab-dropdowns-on-click.yml @@ -0,0 +1,5 @@ +--- +title: Close DropLab dropdowns on click instead of mousedown +merge_request: 56847 +author: Simon Stieger @sim0 +type: fixed diff --git a/config/feature_flags/development/customize_homepage.yml b/config/feature_flags/development/customize_homepage.yml deleted file mode 100644 index 2be1d5ff8e3..00000000000 --- a/config/feature_flags/development/customize_homepage.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: customize_homepage -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/54357 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/299895 -milestone: '13.10' -type: development -group: group::expansion -default_enabled: true diff --git a/doc/ci/pipelines/settings.md b/doc/ci/pipelines/settings.md index e607bae53bd..31e42a2cb68 100644 --- a/doc/ci/pipelines/settings.md +++ b/doc/ci/pipelines/settings.md @@ -137,21 +137,19 @@ averaged. <!-- vale gitlab.Spelling = NO --> -| Coverage Tool | Sample regular expression | -|------------------------------------------------|-----------------------------------------------| -| Simplecov (Ruby) | `\(\d+.\d+\%\) covered` | -| pytest-cov (Python) | `^TOTAL.+?(\d+\%)$` | -| Scoverage (Scala) | `Statement coverage[A-Za-z\.*]\s*:\s*([^%]+)` | -| `phpunit --coverage-text --colors=never` (PHP) | `^\s*Lines:\s*\d+.\d+\%` | -| gcovr (C/C++) | `^TOTAL.*\s+(\d+\%)$` | -| `tap --coverage-report=text-summary` (NodeJS) | `^Statements\s*:\s*([^%]+)` | -| `nyc npm test` (NodeJS) | `All files[^|]*\|[^|]*\s+([\d\.]+)` | -| excoveralls (Elixir) | `\[TOTAL\]\s+(\d+\.\d+)%` | -| `mix test --cover` (Elixir) | `\d+.\d+\%\s+\|\s+Total` | -| JaCoCo (Java/Kotlin) | `Total.*?([0-9]{1,3})%` | -| `go test -cover` (Go) | `coverage: \d+.\d+% of statements` | -| .Net (OpenCover) | `(Visited Points).*\((.*)\)` | -| .Net (`dotnet test` line coverage) | `Total\s*\|\s*(\d+\.?\d+)` | +- Simplecov (Ruby). Example: `\(\d+.\d+\%\) covered`. +- pytest-cov (Python). Example: `^TOTAL.+?(\d+\%)$`. +- Scoverage (Scala). Example: `Statement coverage[A-Za-z\.*]\s*:\s*([^%]+)`. +- `phpunit --coverage-text --colors=never` (PHP). Example: `^\s*Lines:\s*\d+.\d+\%`. +- gcovr (C/C++). Example: `^TOTAL.*\s+(\d+\%)$`. +- `tap --coverage-report=text-summary` (NodeJS). Example: `^Statements\s*:\s*([^%]+)`. +- `nyc npm test` (NodeJS). Example: `All files[^|]*\|[^|]*\s+([\d\.]+)`. +- excoveralls (Elixir). Example: `\[TOTAL\]\s+(\d+\.\d+)%`. +- `mix test --cover` (Elixir). Example: `\d+.\d+\%\s+\|\s+Total`. +- JaCoCo (Java/Kotlin). Example: `Total.*?([0-9]{1,3})%`. +- `go test -cover` (Go). Example: `coverage: \d+.\d+% of statements`. +- .Net (OpenCover). Example: `(Visited Points).*\((.*)\)`. +- .Net (`dotnet test` line coverage). Example: `Total\s*\|\s*(\d+\.?\d+)`. <!-- vale gitlab.Spelling = YES --> diff --git a/doc/development/sql.md b/doc/development/sql.md index 8726c1331e8..1053abf5c02 100644 --- a/doc/development/sql.md +++ b/doc/development/sql.md @@ -367,3 +367,12 @@ retries if it were to fail because of an To be able to use this method, make sure the model you want to use this on inherits from `ApplicationRecord`. + +## Monitor SQL queries in production + +GitLab team members can monitor slow or canceled queries on GitLab.com +using the PostgreSQL logs, which are indexed in Elasticsearch and +searchable using Kibana. + +See [the runbook](https://gitlab.com/gitlab-com/runbooks/-/blob/master/docs/patroni/pg_collect_query_data.md#searching-postgresql-logs-with-kibanaelasticsearch) +for more details. diff --git a/doc/user/application_security/security_dashboard/index.md b/doc/user/application_security/security_dashboard/index.md index b8728a6ec29..0891b3bb8df 100644 --- a/doc/user/application_security/security_dashboard/index.md +++ b/doc/user/application_security/security_dashboard/index.md @@ -83,7 +83,7 @@ data up to 365 days. The chart's data is updated daily. Filter the historical data by clicking on the corresponding legend name. The image above, for example, shows only the graph for vulnerabilities with **high** severity. -To zoom in, select the left-most icon, then select the desired rangeby dragging across the chart. Select **Remove Selection** (**{{redo}}**) to reset to the original date range. +To zoom in, select the left-most icon, then select the desired rangeby dragging across the chart. Select **Remove Selection** (**{redo}**) to reset to the original date range. To download an SVG image of the chart, select **Save chart to an image** (**{download}**). diff --git a/locale/gitlab.pot b/locale/gitlab.pot index b3cf6a8d5f9..cb7bdb7c1f5 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -14704,9 +14704,6 @@ msgstr "" msgid "Group project URLs are prefixed with the group namespace" msgstr "" -msgid "Group push rule exists, try updating" -msgstr "" - msgid "Group requires separate account" msgstr "" diff --git a/spec/controllers/root_controller_spec.rb b/spec/controllers/root_controller_spec.rb index 49841aa61d7..01ff646274a 100644 --- a/spec/controllers/root_controller_spec.rb +++ b/spec/controllers/root_controller_spec.rb @@ -134,26 +134,6 @@ RSpec.describe RootController do expect(response).to render_template 'dashboard/projects/index' end - - context 'when customize_homepage is enabled' do - it 'renders the default dashboard' do - get :index - - expect(assigns[:customize_homepage]).to be true - end - end - - context 'when customize_homepage is not enabled' do - before do - stub_feature_flags(customize_homepage: false) - end - - it 'renders the default dashboard' do - get :index - - expect(assigns[:customize_homepage]).to be false - end - end end end end diff --git a/spec/features/dashboard/projects_spec.rb b/spec/features/dashboard/projects_spec.rb index d7330b5267b..3080baa3173 100644 --- a/spec/features/dashboard/projects_spec.rb +++ b/spec/features/dashboard/projects_spec.rb @@ -3,9 +3,9 @@ require 'spec_helper' RSpec.describe 'Dashboard Projects' do - let(:user) { create(:user) } - let(:project) { create(:project, :repository, name: 'awesome stuff') } - let(:project2) { create(:project, :public, name: 'Community project') } + let_it_be(:user) { create(:user) } + let_it_be(:project, reload: true) { create(:project, :repository) } + let_it_be(:project2) { create(:project, :public) } before do project.add_developer(user) @@ -18,17 +18,10 @@ RSpec.describe 'Dashboard Projects' do end end - it 'shows the project the user in a member of in the list' do - visit dashboard_projects_path - expect(page).to have_content('awesome stuff') - end - - it 'shows "New project" button' do + it 'shows the customize banner', :js do visit dashboard_projects_path - page.within '#content-body' do - expect(page).to have_link('New project') - end + expect(page).to have_content('Do you want to customize this page?') end context 'when user has access to the project' do @@ -153,7 +146,7 @@ RSpec.describe 'Dashboard Projects' do end describe 'with a pipeline', :clean_gitlab_redis_shared_state do - let(:pipeline) { create(:ci_pipeline, project: project, sha: project.commit.sha, ref: project.default_branch) } + let_it_be(:pipeline) { create(:ci_pipeline, project: project, sha: project.commit.sha, ref: project.default_branch) } before do # Since the cache isn't updated when a new pipeline is created diff --git a/spec/helpers/user_callouts_helper_spec.rb b/spec/helpers/user_callouts_helper_spec.rb index b6607182461..a2d9495ce6c 100644 --- a/spec/helpers/user_callouts_helper_spec.rb +++ b/spec/helpers/user_callouts_helper_spec.rb @@ -102,24 +102,14 @@ RSpec.describe UserCalloutsHelper do end describe '.show_customize_homepage_banner?' do - let(:customize_homepage) { true } - - subject { helper.show_customize_homepage_banner?(customize_homepage) } + subject { helper.show_customize_homepage_banner? } context 'when user has not dismissed' do before do allow(helper).to receive(:user_dismissed?).with(described_class::CUSTOMIZE_HOMEPAGE) { false } end - context 'when customize_homepage is set' do - it { is_expected.to be true } - end - - context 'when customize_homepage is false' do - let(:customize_homepage) { false } - - it { is_expected.to be false } - end + it { is_expected.to be true } end context 'when user dismissed' do diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml index 37b43066a62..fbba31b1c2a 100644 --- a/spec/lib/gitlab/import_export/all_models.yml +++ b/spec/lib/gitlab/import_export/all_models.yml @@ -740,3 +740,5 @@ status_page_published_incident: - issue issuable_sla: - issue +push_rule: + - group diff --git a/spec/views/dashboard/projects/index.html.haml_spec.rb b/spec/views/dashboard/projects/index.html.haml_spec.rb new file mode 100644 index 00000000000..72b5901d5e5 --- /dev/null +++ b/spec/views/dashboard/projects/index.html.haml_spec.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'dashboard/projects/index.html.haml' do + let_it_be(:user) { build(:user) } + + before do + allow(view).to receive(:limited_counter_with_delimiter) + allow(view).to receive(:current_user).and_return(user) + allow(view).to receive(:project_list_cache_key) + allow(view).to receive(:time_ago_with_tooltip) + allow(view).to receive(:project_icon) + assign(:projects, [build(:project, name: 'awesome stuff')]) + end + + it 'shows the project the user is a member of in the list' do + render + + expect(rendered).to have_content('awesome stuff') + end + + it 'shows the "New project" button' do + render + + expect(rendered).to have_link('New project') + end +end |