diff --git a/db/post_migrate/20210802112233_add_index_issues_on_project_id_and_state_id_and_created_at_and_id.rb b/db/post_migrate/20210802112233_add_index_issues_on_project_id_and_state_id_and_created_at_and_id.rb new file mode 100644 index 00000000000..318d9e8a218 --- /dev/null +++ b/db/post_migrate/20210802112233_add_index_issues_on_project_id_and_state_id_and_created_at_and_id.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class AddIndexIssuesOnProjectIdAndStateIdAndCreatedAtAndId < ActiveRecord::Migration[6.1] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + INDEX_NAME = 'index_issues_on_project_id_and_state_id_and_created_at_and_id' + + disable_ddl_transaction! + + def up + add_concurrent_index :issues, [:project_id, :state_id, :created_at, :id], name: INDEX_NAME + end + + def down + remove_concurrent_index_by_name :issues, INDEX_NAME + end +end diff --git a/db/schema_migrations/20210802112233 b/db/schema_migrations/20210802112233 new file mode 100644 index 00000000000..68626f9398b --- /dev/null +++ b/db/schema_migrations/20210802112233 @@ -0,0 +1 @@ +1b55c50a9ba085ae7a0552da4985755c67eafb74e76b06590179803b4b215f81 \ No newline at end of file diff --git a/db/structure.sql b/db/structure.sql index 47b6a6af331..7fcde03f19e 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -24177,6 +24177,8 @@ CREATE UNIQUE INDEX index_issues_on_project_id_and_external_key ON issues USING CREATE UNIQUE INDEX index_issues_on_project_id_and_iid ON issues USING btree (project_id, iid); +CREATE INDEX index_issues_on_project_id_and_state_id_and_created_at_and_id ON issues USING btree (project_id, state_id, created_at, id); + CREATE INDEX index_issues_on_project_id_and_upvotes_count ON issues USING btree (project_id, upvotes_count); CREATE INDEX index_issues_on_promoted_to_epic_id ON issues USING btree (promoted_to_epic_id) WHERE (promoted_to_epic_id IS NOT NULL); diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index f05c730aebd..6231b2193ee 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -11669,6 +11669,7 @@ Represents vulnerability finding of a security report on the pipeline. | ---- | ---- | ----------- | | `confidence` | [`String`](#string) | Type of the security report that found the vulnerability. | | `description` | [`String`](#string) | Description of the vulnerability finding. | +| `falsePositive` | [`Boolean`](#boolean) | Indicates whether the vulnerability is a false positive. Available only when feature flag `vulnerability_flags` is enabled. This flag is disabled by default, because the feature is experimental and is subject to change without notice. | | `identifiers` | [`[VulnerabilityIdentifier!]!`](#vulnerabilityidentifier) | Identifiers of the vulnerabilit finding. | | `location` | [`VulnerabilityLocation`](#vulnerabilitylocation) | Location metadata for the vulnerability. Its fields depend on the type of security scan that found the vulnerability. | | `name` | [`String`](#string) | Name of the vulnerability finding. | diff --git a/doc/user/permissions.md b/doc/user/permissions.md index ea49e72c81e..83a47f4f2c2 100644 --- a/doc/user/permissions.md +++ b/doc/user/permissions.md @@ -74,6 +74,32 @@ The following table lists project permissions available for each role: | [CI/CD](../ci/README.md):
Run Web IDE's Interactive Web Terminals **(ULTIMATE ONLY)** | | | | ✓ | ✓ | | [CI/CD](../ci/README.md):
Use [environment terminals](../ci/environments/index.md#web-terminals) | | | | ✓ | ✓ | | [CI/CD](../ci/README.md):
Delete pipelines | | | | | ✓ | +| [Issues](project/issues/index.md):
Add Labels | ✓ (*16*) | ✓ | ✓ | ✓ | ✓ | +| [Issues](project/issues/index.md):
Assign | ✓ (*16*) | ✓ | ✓ | ✓ | ✓ | +| [Issues](project/issues/index.md):
Create | ✓ | ✓ | ✓ | ✓ | ✓ | +| [Issues](project/issues/index.md):
Create [confidential issues](project/issues/confidential_issues.md) | ✓ | ✓ | ✓ | ✓ | ✓ | +| [Issues](project/issues/index.md):
View [Design Management](project/issues/design_management.md) pages | ✓ | ✓ | ✓ | ✓ | ✓ | +| [Issues](project/issues/index.md):
View related issues | ✓ | ✓ | ✓ | ✓ | ✓ | +| [Issues](project/issues/index.md):
Set weight | ✓ (*16*) | ✓ | ✓ | ✓ | ✓ | +| [Issues](project/issues/index.md):
View [confidential issues](project/issues/confidential_issues.md) | (*2*) | ✓ | ✓ | ✓ | ✓ | +| [Issues](project/issues/index.md):
Lock threads | | ✓ | ✓ | ✓ | ✓ | +| [Issues](project/issues/index.md):
Manage related issues | | ✓ | ✓ | ✓ | ✓ | +| [Issues](project/issues/index.md):
Manage tracker | | ✓ | ✓ | ✓ | ✓ | +| [Issues](project/issues/index.md):
Move issues (*15*) | | ✓ | ✓ | ✓ | ✓ | +| [Issues](project/issues/index.md):
Set issue [time tracking](project/time_tracking.md) estimate and time spent | | ✓ | ✓ | ✓ | ✓ | +| [Issues](project/issues/index.md):
Upload [Design Management](project/issues/design_management.md) files | | | ✓ | ✓ | ✓ | +| [Issues](project/issues/index.md):
Delete | | | | | ✓ | +| [Merge requests](project/merge_requests/index.md):
Assign reviewer | | ✓ | ✓ | ✓ | ✓ | +| [Merge requests](project/merge_requests/index.md):
See list | | ✓ | ✓ | ✓ | ✓ | +| [Merge requests](project/merge_requests/index.md):
Apply code change suggestions | | | ✓ | ✓ | ✓ | +| [Merge requests](project/merge_requests/index.md):
Approve (*9*) | | | ✓ | ✓ | ✓ | +| [Merge requests](project/merge_requests/index.md):
Assign | | | ✓ | ✓ | ✓ | +| [Merge requests](project/merge_requests/index.md):
Create | | | ✓ | ✓ | ✓ | +| [Merge requests](project/merge_requests/index.md):
Add labels | | | ✓ | ✓ | ✓ | +| [Merge requests](project/merge_requests/index.md):
Lock threads | | | ✓ | ✓ | ✓ | +| [Merge requests](project/merge_requests/index.md):
Manage or accept | | | ✓ | ✓ | ✓ | +| [Merge requests](project/merge_requests/index.md):
Manage merge approval rules (project settings) | | | | ✓ | ✓ | +| [Merge requests](project/merge_requests/index.md):
Delete | | | | | ✓ | | [Security dashboard](application_security/security_dashboard/index.md):
View Security reports **(ULTIMATE)** | ✓ (*3*) | ✓ | ✓ | ✓ | ✓ | | [Security dashboard](application_security/security_dashboard/index.md):
Create issue from vulnerability finding **(ULTIMATE)** | | | ✓ | ✓ | ✓ | | [Security dashboard](application_security/security_dashboard/index.md):
Create vulnerability from vulnerability finding **(ULTIMATE)** | | | ✓ | ✓ | ✓ | @@ -84,18 +110,11 @@ The following table lists project permissions available for each role: | [Security dashboard](application_security/security_dashboard/index.md):
Use security dashboard **(ULTIMATE)** | | | ✓ | ✓ | ✓ | | [Security dashboard](application_security/security_dashboard/index.md):
View vulnerability **(ULTIMATE)** | | | ✓ | ✓ | ✓ | | [Security dashboard](application_security/security_dashboard/index.md):
View vulnerability findings in [dependency list](application_security/dependency_list/index.md) **(ULTIMATE)** | | | ✓ | ✓ | ✓ | -| Assign issues | ✓ (*16*)| ✓ | ✓ | ✓ | ✓ | -| Create [confidential issue](project/issues/confidential_issues.md) | ✓ | ✓ | ✓ | ✓ | ✓ | -| Create new issue | ✓ | ✓ | ✓ | ✓ | ✓ | | Download project | ✓ (*1*) | ✓ | ✓ | ✓ | ✓ | -| Label issues | ✓ (*16*)| ✓ | ✓ | ✓ | ✓ | | Leave comments | ✓ | ✓ | ✓ | ✓ | ✓ | | Manage user-starred metrics dashboards (*7*) | ✓ | ✓ | ✓ | ✓ | ✓ | | Pull project code | ✓ (*1*) | ✓ | ✓ | ✓ | ✓ | | Reposition comments on images (posted by any user)| ✓ (*10*)| ✓ (*10*) | ✓ (*10*) | ✓ | ✓ | -| See linked issues | ✓ | ✓ | ✓ | ✓ | ✓ | -| Set issue weight | ✓ (*16*)| ✓ | ✓ | ✓ | ✓ | -| View [Design Management](project/issues/design_management.md) pages | ✓ | ✓ | ✓ | ✓ | ✓ | | View [Releases](project/releases/index.md) | ✓ (*6*) | ✓ | ✓ | ✓ | ✓ | | View a time tracking report | ✓ (*1*) | ✓ | ✓ | ✓ | ✓ | | View allowed and denied licenses **(ULTIMATE)** | ✓ (*1*) | ✓ | ✓ | ✓ | ✓ | @@ -107,34 +126,22 @@ The following table lists project permissions available for each role: | View wiki pages | ✓ | ✓ | ✓ | ✓ | ✓ | | Archive [test case](../ci/test_cases/index.md) | | ✓ | ✓ | ✓ | ✓ | | Archive/reopen requirements **(ULTIMATE)** | | ✓ | ✓ | ✓ | ✓ | -| Assign reviewers | | ✓ | ✓ | ✓ | ✓ | | Create code snippets | | ✓ | ✓ | ✓ | ✓ | | Create new [test case](../ci/test_cases/index.md) | | ✓ | ✓ | ✓ | ✓ | | Create/edit requirements **(ULTIMATE)** | | ✓ | ✓ | ✓ | ✓ | | Import/export requirements **(ULTIMATE)** | | ✓ | ✓ | ✓ | ✓ | -| Lock issue threads | | ✓ | ✓ | ✓ | ✓ | -| Manage issue tracker | | ✓ | ✓ | ✓ | ✓ | | Manage labels | | ✓ | ✓ | ✓ | ✓ | -| Manage linked issues | | ✓ | ✓ | ✓ | ✓ | -| Move issues (*15*) | | ✓ | ✓ | ✓ | ✓ | | Move [test case](../ci/test_cases/index.md) | | ✓ | ✓ | ✓ | ✓ | | Pull [packages](packages/index.md) | ✓ (*1*) | ✓ | ✓ | ✓ | ✓ | | Reopen [test case](../ci/test_cases/index.md) | | ✓ | ✓ | ✓ | ✓ | | See a commit status | | ✓ | ✓ | ✓ | ✓ | -| See a list of merge requests | | ✓ | ✓ | ✓ | ✓ | -| [Set issue estimate and record time spent](project/time_tracking.md) | | ✓ | ✓ | ✓ | ✓ | -| View [confidential issues](project/issues/confidential_issues.md) | (*2*) | ✓ | ✓ | ✓ | ✓ | | View Error Tracking list | | ✓ | ✓ | ✓ | ✓ | | View License list **(ULTIMATE)** | | ✓ | ✓ | ✓ | ✓ | | View metrics dashboard annotations | | ✓ | ✓ | ✓ | ✓ | | View project statistics | | ✓ | ✓ | ✓ | ✓ | | Add tags | | | ✓ | ✓ | ✓ | -| Apply code change suggestions | | | ✓ | ✓ | ✓ | -| Approve merge requests (*9*) | | | ✓ | ✓ | ✓ | -| Assign merge requests | | | ✓ | ✓ | ✓ | | Create and edit wiki pages | | | ✓ | ✓ | ✓ | | Create new branches | | | ✓ | ✓ | ✓ | -| Create new merge request | | | ✓ | ✓ | ✓ | | Create or update commit status | | | ✓ (*5*) | ✓ | ✓ | | Create/edit/delete [releases](project/releases/index.md)| | | ✓ (*13*) | ✓ (*13*) | ✓ (*13*) | | Create/edit/delete a Cleanup policy | | | ✓ | ✓ | ✓ | @@ -142,10 +149,7 @@ The following table lists project permissions available for each role: | Create/edit/delete project milestones | | | ✓ | ✓ | ✓ | | Enable Review Apps | | | ✓ | ✓ | ✓ | | Force push to non-protected branches | | | ✓ | ✓ | ✓ | -| Label merge requests | | | ✓ | ✓ | ✓ | -| Lock merge request threads | | | ✓ | ✓ | ✓ | | Manage Feature Flags **(PREMIUM)** | | | ✓ | ✓ | ✓ | -| Manage/Accept merge requests | | | ✓ | ✓ | ✓ | | Publish [packages](packages/index.md) | | | ✓ | ✓ | ✓ | | Push to non-protected branches | | | ✓ | ✓ | ✓ | | Read Terraform state | | | ✓ | ✓ | ✓ | @@ -153,7 +157,6 @@ The following table lists project permissions available for each role: | Remove non-protected branches | | | ✓ | ✓ | ✓ | | Rewrite/remove Git tags | | | ✓ | ✓ | ✓ | | Update a container registry | | | ✓ | ✓ | ✓ | -| Upload [Design Management](project/issues/design_management.md) files | | | ✓ | ✓ | ✓ | | View Pods logs | | | ✓ | ✓ | ✓ | | View project Audit Events | | | ✓ (*11*) | ✓ | ✓ | | Add deploy keys to project | | | | ✓ | ✓ | @@ -175,7 +178,6 @@ The following table lists project permissions available for each role: | Manage GitLab Pages | | | | ✓ | ✓ | | Manage GitLab Pages domains and certificates | | | | ✓ | ✓ | | Manage license policy **(ULTIMATE)** | | | | ✓ | ✓ | -| Manage merge approval rules (project settings) | | | | ✓ | ✓ | | Manage Project Operations | | | | ✓ | ✓ | | Manage Terraform state | | | | ✓ | ✓ | | Push to protected branches | | | | ✓ | ✓ | @@ -186,8 +188,6 @@ The following table lists project permissions available for each role: | Administer project compliance frameworks | | | | | ✓ | | Archive project | | | | | ✓ | | Change project visibility level | | | | | ✓ | -| Delete issues | | | | | ✓ | -| Delete merge request | | | | | ✓ | | Delete project | | | | | ✓ | | Disable notification emails | | | | | ✓ | | Remove fork relationship | | | | | ✓ | diff --git a/qa/qa/fixtures/export.tar.gz b/qa/qa/fixtures/export.tar.gz index 08e4f0c9c43..8d27b6816ea 100644 Binary files a/qa/qa/fixtures/export.tar.gz and b/qa/qa/fixtures/export.tar.gz differ diff --git a/qa/qa/page/component/import/gitlab.rb b/qa/qa/page/component/import/gitlab.rb index 2fd2a45b399..5831a713ae5 100644 --- a/qa/qa/page/component/import/gitlab.rb +++ b/qa/qa/page/component/import/gitlab.rb @@ -5,6 +5,8 @@ module QA module Component module Import module Gitlab + extend QA::Page::PageConcern + def self.included(base) super @@ -30,7 +32,7 @@ module QA click_element(:import_project_button) wait_until(reload: false) do - has_notice?("The project was successfully imported.") + has_notice?("The project was successfully imported.") || has_element?(:project_name_content) end end end diff --git a/qa/qa/resource/merge_request.rb b/qa/qa/resource/merge_request.rb index e09a4b5860d..8c313f5d518 100644 --- a/qa/qa/resource/merge_request.rb +++ b/qa/qa/resource/merge_request.rb @@ -152,7 +152,8 @@ module QA @project = Resource::ImportProject.fabricate_via_browser_ui! # Setting the name here, since otherwise some tests will look for an existing file in # the proejct without ever knowing what is in it. - @file_name = "github_controller_spec.rb" + @file_name = "added_file-00000000.txt" + @source_branch = "large_merge_request" visit("#{project.web_url}/-/merge_requests/1") current_url end diff --git a/qa/qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb b/qa/qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb index d11afde5648..37008e6d507 100644 --- a/qa/qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb +++ b/qa/qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb @@ -15,7 +15,7 @@ module QA merge_request.visit! end - it 'views the merge request email patches', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1689' do + it 'views the merge request email patches', :can_use_large_setup, testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1689' do Page::MergeRequest::Show.perform(&:view_email_patches) expect(page.text).to start_with('From') @@ -23,10 +23,11 @@ module QA expect(page).to have_content("diff --git a/#{merge_request.file_name} b/#{merge_request.file_name}") end - it 'views the merge request plain diff', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/417' do + it 'views the merge request plain diff', :can_use_large_setup, testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/417' do Page::MergeRequest::Show.perform(&:view_plain_diff) - expect(page.text).to start_with("diff --git a/#{merge_request.file_name} b/#{merge_request.file_name}") + expect(page.text).to start_with('diff') + expect(page).to have_content("diff --git a/#{merge_request.file_name} b/#{merge_request.file_name}") expect(page).to have_content('+File Added') end end