diff --git a/app/controllers/profiles/notifications_controller.rb b/app/controllers/profiles/notifications_controller.rb index 6ba32fd45b329c03eae5c9907366d478c57d5e89..5a55e0e9e4ecb381cb4d620420b5e523e9b093e6 100644 --- a/app/controllers/profiles/notifications_controller.rb +++ b/app/controllers/profiles/notifications_controller.rb @@ -35,6 +35,6 @@ class Profiles::NotificationsController < Profiles::ApplicationController private def user_groups - GroupsFinder.new(current_user).execute.order_name_asc.page(params[:page]).per(NOTIFICATIONS_PER_PAGE) + GroupsFinder.new(current_user, all_available: false).execute.order_name_asc.page(params[:page]).per(NOTIFICATIONS_PER_PAGE) end end diff --git a/app/finders/design_management/designs_finder.rb b/app/finders/design_management/designs_finder.rb index 6673103e1465819b406bca12c3f2709c8e7d74c4..857b828dc477e930189a026a570d47efa27795a6 100644 --- a/app/finders/design_management/designs_finder.rb +++ b/app/finders/design_management/designs_finder.rb @@ -22,10 +22,7 @@ module DesignManagement items = by_visible_at_version(items) items = by_filename(items) items = by_id(items) - - # TODO: We don't need to pass the project anymore after the feature flag is removed - # https://gitlab.com/gitlab-org/gitlab/-/issues/34382 - items.ordered(issue.project) + items.ordered end private diff --git a/app/graphql/mutations/design_management/move.rb b/app/graphql/mutations/design_management/move.rb index 0b654447844d26adc19e17c505029a5ab2f2812a..6126af8b68bac0179c3bade9d0efc22503902367 100644 --- a/app/graphql/mutations/design_management/move.rb +++ b/app/graphql/mutations/design_management/move.rb @@ -20,10 +20,6 @@ module Mutations null: true, description: "The current state of the collection" - def ready(*) - raise ::Gitlab::Graphql::Errors::ResourceNotAvailable unless ::Feature.enabled?(:reorder_designs, default_enabled: true) - end - def resolve(**args) service = ::DesignManagement::MoveDesignsService.new(current_user, parameters(args)) diff --git a/app/models/design_management/design.rb b/app/models/design_management/design.rb index deda814d6894efd0cbe5843c90ebb7d9338b9a98..57bb250829d01c323d39264190e3d15b317e86da 100644 --- a/app/models/design_management/design.rb +++ b/app/models/design_management/design.rb @@ -79,16 +79,10 @@ module DesignManagement joins(join.join_sources).where(actions[:event].not_eq(deletion)) end - scope :ordered, -> (project) do - # TODO: Always order by relative position after the feature flag is removed - # https://gitlab.com/gitlab-org/gitlab/-/issues/34382 - if Feature.enabled?(:reorder_designs, project, default_enabled: true) - # We need to additionally sort by `id` to support keyset pagination. - # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/17788/diffs#note_230875678 - order(:relative_position, :id) - else - in_creation_order - end + scope :ordered, -> do + # We need to additionally sort by `id` to support keyset pagination. + # See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/17788/diffs#note_230875678 + order(:relative_position, :id) end scope :in_creation_order, -> { reorder(:id) } diff --git a/app/models/project_statistics.rb b/app/models/project_statistics.rb index 55934e082383733d99265cfc0c2c6d105a3945b0..67ab2c0ce8acf8fa42b1abab85f89cc3dd37d163 100644 --- a/app/models/project_statistics.rb +++ b/app/models/project_statistics.rb @@ -23,7 +23,6 @@ class ProjectStatistics < ApplicationRecord scope :for_project_ids, ->(project_ids) { where(project_id: project_ids) } scope :for_namespaces, -> (namespaces) { where(namespace: namespaces) } - scope :with_any_ci_minutes_used, -> { where.not(shared_runners_seconds: 0) } def total_repository_size repository_size + lfs_objects_size diff --git a/app/policies/project_policy.rb b/app/policies/project_policy.rb index b2432bfa6081042d15d7557c72709ae23cf5df13..b9f5cd74782139631e09a884113c6b29ea51b092 100644 --- a/app/policies/project_policy.rb +++ b/app/policies/project_policy.rb @@ -101,11 +101,6 @@ class ProjectPolicy < BasePolicy !@subject.design_management_enabled? end - with_scope :subject - condition(:moving_designs_disabled) do - !::Feature.enabled?(:reorder_designs, @subject, default_enabled: true) - end - with_scope :subject condition(:service_desk_enabled) { @subject.service_desk_enabled? } @@ -557,10 +552,6 @@ class ProjectPolicy < BasePolicy prevent :move_design end - rule { moving_designs_disabled }.policy do - prevent :move_design - end - rule { read_package_registry_deploy_token }.policy do enable :read_package enable :read_project diff --git a/app/services/design_management/move_designs_service.rb b/app/services/design_management/move_designs_service.rb index de763caba2fe4b6e4f449eaa41f07cb7f6643f3d..ca715b103519cf25644a9fee9736da0578bcc360 100644 --- a/app/services/design_management/move_designs_service.rb +++ b/app/services/design_management/move_designs_service.rb @@ -13,7 +13,6 @@ module DesignManagement def execute return error(:no_focus) unless current_design.present? - return error(:cannot_move) unless ::Feature.enabled?(:reorder_designs, project, default_enabled: true) return error(:cannot_move) unless current_user.can?(:move_design, current_design) return error(:no_neighbors) unless neighbors.present? return error(:not_distinct) unless all_distinct? diff --git a/changelogs/unreleased/do_not_show_all_groups_on_notif_settings.yml b/changelogs/unreleased/do_not_show_all_groups_on_notif_settings.yml new file mode 100644 index 0000000000000000000000000000000000000000..1ba8f8dbe1e34aa624d49fbb65bd8ebc4fb0cefd --- /dev/null +++ b/changelogs/unreleased/do_not_show_all_groups_on_notif_settings.yml @@ -0,0 +1,5 @@ +--- +title: Do not show all public groups in global notification settings page +merge_request: 40879 +author: +type: fixed diff --git a/config/feature_flags/development/reorder_designs.yml b/config/feature_flags/development/reorder_designs.yml deleted file mode 100644 index 89c6bec7351ee72a1a20e17ff8e0796caff7f616..0000000000000000000000000000000000000000 --- a/config/feature_flags/development/reorder_designs.yml +++ /dev/null @@ -1,7 +0,0 @@ ---- -name: reorder_designs -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/37835 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/232992 -group: group::knowledge -type: development -default_enabled: true diff --git a/doc/ci/pipelines/settings.md b/doc/ci/pipelines/settings.md index 5719ffae2b05ec9b76025b3a0c3fbc2158e27d1f..bd3587793c1a446ef8b0a3203c4d4a49890744b9 100644 --- a/doc/ci/pipelines/settings.md +++ b/doc/ci/pipelines/settings.md @@ -271,7 +271,7 @@ https://gitlab.example.com///badges//pipeline.svg If you want the pipeline status badge to only display the last non-skipped status, you can use the `?ignore_skipped=true` query parameter: ```plaintext -https://example.gitlab.com///badges//pipeline.svg?ignore_skipped=true +https://gitlab.example.com///badges//pipeline.svg?ignore_skipped=true ``` ### Test coverage report badge diff --git a/doc/ci/runners/README.md b/doc/ci/runners/README.md index f64561b3249a3f628156344a2f07a021c4e36fc0..6b2556d00aed68cda5a4888a9f498fba929d8821 100644 --- a/doc/ci/runners/README.md +++ b/doc/ci/runners/README.md @@ -88,20 +88,20 @@ The fair usage algorithm assigns jobs in this order: If these jobs are in the queue: -- Job 1 for project 1 -- Job 2 for project 1 -- Job 3 for project 1 -- Job 4 for project 2 -- Job 5 for project 2 -- Job 6 for project 3 +- Job 1 for Project 1 +- Job 2 for Project 1 +- Job 3 for Project 1 +- Job 4 for Project 2 +- Job 5 for Project 2 +- Job 6 for Project 3 The fair usage algorithm assigns jobs in this order: 1. Job 1 is chosen first, because it has the lowest job number from projects with no running jobs (that is, all projects). -1. We finish job 1. +1. We finish Job 1. 1. Job 2 is next, because, having finished Job 1, all projects have 0 jobs running again, and 2 is the lowest available job number. -1. Job 4 is next, because with Project 1 running a job, 4 is the lowest number from projects running no jobs (Projects 2 and 3). -1. We finish job 4. +1. Job 4 is next, because with Project 1 running a Job, 4 is the lowest number from projects running no jobs (Projects 2 and 3). +1. We finish Job 4. 1. Job 5 is next, because having finished Job 4, Project 2 has no jobs running again. 1. Job 6 is next, because Project 3 is the only project left with no running jobs. 1. Lastly we choose Job 3... because, again, it's the only job left. diff --git a/doc/ci/yaml/README.md b/doc/ci/yaml/README.md index 8d600dfd5d122819dadcb523d1717792b7792248..402d0a486dad55c3df1cb16c4094ef800cb6cb49 100644 --- a/doc/ci/yaml/README.md +++ b/doc/ci/yaml/README.md @@ -1528,7 +1528,7 @@ same rule. In the following example: -- If the dockerfile or any file in `/docker/scripts` has changed, and var=blah, +- If the `Dockerfile` file or any file in `/docker/scripts` has changed, and var=blah, then the job runs manually - Otherwise, the job isn't included in the pipeline. @@ -1773,7 +1773,7 @@ This means the keys are treated as if joined by an OR. This relationship could b In the example below, the `test` job will **not** be created when **any** of the following are true: -- The pipeline runs for the `master`. +- The pipeline runs for the `master` branch. - There are changes to the `README.md` file in the root directory of the repository. ```yaml @@ -3221,7 +3221,7 @@ Send all untracked files but [exclude](#artifactsexclude) `*.txt`: artifacts: untracked: true exclude: - - *.txt + - "*.txt" ``` #### `artifacts:when` diff --git a/doc/gitlab-basics/create-your-ssh-keys.md b/doc/gitlab-basics/create-your-ssh-keys.md index fba0408e26bb2b5d84fadfc262bbfba0e1276749..2a59f10073fb6590f0d8ca4e3557a4399ae8b037 100644 --- a/doc/gitlab-basics/create-your-ssh-keys.md +++ b/doc/gitlab-basics/create-your-ssh-keys.md @@ -7,8 +7,8 @@ type: howto # Create and add your SSH key pair -It is best practice to use [Git over SSH instead of Git over HTTP](https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols). -In order to use SSH, you will need to: +It's best practice to use [Git over SSH instead of Git over HTTP](https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols). +In order to use SSH, you need to: 1. Create an SSH key pair 1. Add your SSH public key to GitLab @@ -25,6 +25,6 @@ To add the SSH public key to GitLab, see [Adding an SSH key to your GitLab account](../ssh/README.md#adding-an-ssh-key-to-your-gitlab-account). NOTE: **Note:** -Once you add a key, you cannot edit it. If it didn't paste properly, it +Once you add a key, you can't edit it. If it did not paste properly, it [will not work](../ssh/README.md#testing-that-everything-is-set-up-correctly), and -you will need to remove the key from GitLab and try adding it again. +you need to remove the key from GitLab and try adding it again. diff --git a/lib/gitlab/ci/features.rb b/lib/gitlab/ci/features.rb index 7e7fa88c73b7dca03a5f73a72df265d20f5ff30f..957eee8587d5c8e25894da333d597c6fa1e287be 100644 --- a/lib/gitlab/ci/features.rb +++ b/lib/gitlab/ci/features.rb @@ -68,10 +68,6 @@ module Gitlab ::Feature.enabled?(:ci_lint_creates_pipeline_with_dry_run, project, default_enabled: true) end - def self.reset_ci_minutes_for_all_namespaces? - ::Feature.enabled?(:reset_ci_minutes_for_all_namespaces, default_enabled: false) - end - def self.project_transactionless_destroy?(project) Feature.enabled?(:project_transactionless_destroy, project, default_enabled: false) end diff --git a/lib/gitlab/kubernetes/cilium_network_policy.rb b/lib/gitlab/kubernetes/cilium_network_policy.rb index 719150408399c213e7d490eb550850684de40683..9bd8a17839ba419d3622902f5616c62e37a41f87 100644 --- a/lib/gitlab/kubernetes/cilium_network_policy.rb +++ b/lib/gitlab/kubernetes/cilium_network_policy.rb @@ -82,7 +82,7 @@ module Gitlab endpointSelector: selector, ingress: ingress, egress: egress - } + }.compact! end override :kind diff --git a/locale/gitlab.pot b/locale/gitlab.pot index ed03c8b01a043c946ad0306d3b48aaad31400a77..ac994221649b51527706757fdf4465be608b7c62 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -10684,9 +10684,6 @@ msgstr "" msgid "FeatureFlags|User List" msgstr "" -msgid "FeatureFlag|Delete strategy" -msgstr "" - msgid "FeatureFlag|List" msgstr "" diff --git a/spec/controllers/profiles/notifications_controller_spec.rb b/spec/controllers/profiles/notifications_controller_spec.rb index b320c909cc5dacced4c7555c840f57d1c449c0ba..cd6eb929b19e5caef033371dc15b2b7c19a87291 100644 --- a/spec/controllers/profiles/notifications_controller_spec.rb +++ b/spec/controllers/profiles/notifications_controller_spec.rb @@ -54,19 +54,36 @@ RSpec.describe Profiles::NotificationsController do end context 'with group notifications' do + let(:notifications_per_page) { 5 } + let_it_be(:group) { create(:group) } let_it_be(:subgroups) { create_list(:group, 10, parent: group) } before do group.add_developer(user) sign_in(user) - stub_const('Profiles::NotificationsController::NOTIFICATIONS_PER_PAGE', 5) - get :show + stub_const('Profiles::NotificationsController::NOTIFICATIONS_PER_PAGE', notifications_per_page) end it 'paginates the groups' do + get :show + expect(assigns(:group_notifications).count).to eq(5) end + + context 'when the user is not a member' do + let(:notifications_per_page) { 20 } + + let_it_be(:public_group) { create(:group, :public) } + + it 'does not show public groups', :aggregate_failures do + get :show + + # Let's make sure we're grabbing all groups in one page, just in case + expect(assigns(:user_groups).count).to eq(11) + expect(assigns(:user_groups)).not_to include(public_group) + end + end end context 'with project notifications' do diff --git a/spec/finders/design_management/designs_finder_spec.rb b/spec/finders/design_management/designs_finder_spec.rb index 0133095827db48ea10732759a0f2012a30e35dbb..feb78a4bc4b51ffb2fa0a7750714869fdff676ad 100644 --- a/spec/finders/design_management/designs_finder_spec.rb +++ b/spec/finders/design_management/designs_finder_spec.rb @@ -42,26 +42,6 @@ RSpec.describe DesignManagement::DesignsFinder do is_expected.to eq([design3, design2, design1]) end - context 'when the :reorder_designs feature is enabled for the project' do - before do - stub_feature_flags(reorder_designs: project) - end - - it 'returns the designs sorted by their relative position' do - is_expected.to eq([design3, design2, design1]) - end - end - - context 'when the :reorder_designs feature is disabled' do - before do - stub_feature_flags(reorder_designs: false) - end - - it 'returns the designs sorted by ID' do - is_expected.to eq([design1, design2, design3]) - end - end - context 'when argument is the ids of designs' do let(:params) { { ids: [design1.id] } } diff --git a/spec/lib/gitlab/kubernetes/cilium_network_policy_spec.rb b/spec/lib/gitlab/kubernetes/cilium_network_policy_spec.rb index 9600a70a95d2c95536dbefac5377cb0b58db4422..877ca28e994604ec3d2313bb2b5b856e3ea8a1a4 100644 --- a/spec/lib/gitlab/kubernetes/cilium_network_policy_spec.rb +++ b/spec/lib/gitlab/kubernetes/cilium_network_policy_spec.rb @@ -20,7 +20,7 @@ RSpec.describe Gitlab::Kubernetes::CiliumNetworkPolicy do kind: partial_class_name, apiVersion: "cilium.io/v2", metadata: { name: name, namespace: namespace, resourceVersion: resource_version }, - spec: { endpointSelector: endpoint_selector, ingress: ingress, egress: nil } + spec: { endpointSelector: endpoint_selector, ingress: ingress } ) end @@ -61,7 +61,7 @@ RSpec.describe Gitlab::Kubernetes::CiliumNetworkPolicy do ) end - let(:spec) { { endpointSelector: selector, ingress: ingress, egress: nil } } + let(:spec) { { endpointSelector: selector, ingress: ingress } } let(:metadata) { { name: name, namespace: namespace, resourceVersion: resource_version } } end @@ -180,7 +180,7 @@ RSpec.describe Gitlab::Kubernetes::CiliumNetworkPolicy do kind: partial_class_name, apiVersion: "cilium.io/v2", metadata: { name: name, namespace: namespace, resourceVersion: resource_version, labels: { app: 'foo' } }, - spec: { endpointSelector: endpoint_selector, ingress: ingress, egress: nil } + spec: { endpointSelector: endpoint_selector, ingress: ingress } ) end diff --git a/spec/models/design_management/design_collection_spec.rb b/spec/models/design_management/design_collection_spec.rb index de766d5ce09384f11de4e71780469bdaec0a6242..33f9d3b988f08c3b94f523c7bedbe450a328402f 100644 --- a/spec/models/design_management/design_collection_spec.rb +++ b/spec/models/design_management/design_collection_spec.rb @@ -41,7 +41,7 @@ RSpec.describe DesignManagement::DesignCollection do design2 = collection.find_or_create_design!(filename: 'design2.jpg') - expect(collection.designs.ordered(issue.project)).to eq([design1, design2]) + expect(collection.designs.ordered).to eq([design1, design2]) end end diff --git a/spec/models/design_management/design_spec.rb b/spec/models/design_management/design_spec.rb index 2c129f883b96fd76d26b11d72aafd6e2a2f47149..f78b66b572c30be6ed4ff9b15fd5d95b30f141b4 100644 --- a/spec/models/design_management/design_spec.rb +++ b/spec/models/design_management/design_spec.rb @@ -161,27 +161,7 @@ RSpec.describe DesignManagement::Design do end it 'sorts by relative position and ID in ascending order' do - expect(described_class.ordered(issue.project)).to eq([design2, design1, design3, deleted_design]) - end - - context 'when the :reorder_designs feature is enabled for the project' do - before do - stub_feature_flags(reorder_designs: issue.project) - end - - it 'sorts by relative position and ID in ascending order' do - expect(described_class.ordered(issue.project)).to eq([design2, design1, design3, deleted_design]) - end - end - - context 'when the :reorder_designs feature is disabled' do - before do - stub_feature_flags(reorder_designs: false) - end - - it 'sorts by ID in ascending order' do - expect(described_class.ordered(issue.project)).to eq([design1, design2, design3, deleted_design]) - end + expect(described_class.ordered).to eq([design2, design1, design3, deleted_design]) end end diff --git a/spec/policies/design_management/design_policy_spec.rb b/spec/policies/design_management/design_policy_spec.rb index 5cf2f376edf2691648cc08015ddd29e577d9d38c..5a74d979ef396c5e22a9c5cd814acbb078bf6ad3 100644 --- a/spec/policies/design_management/design_policy_spec.rb +++ b/spec/policies/design_management/design_policy_spec.rb @@ -131,17 +131,6 @@ RSpec.describe DesignManagement::DesignPolicy do it_behaves_like "design abilities available for members" - context 'when reorder_designs is not enabled' do - before do - stub_feature_flags(reorder_designs: false) - end - - let(:current_user) { developer } - - it { is_expected.to be_allowed(*(developer_design_abilities - [:move_design])) } - it { is_expected.to be_disallowed(:move_design) } - end - context "for guests in private projects" do let_it_be(:project) { create(:project, :private) } let(:current_user) { guest } diff --git a/spec/services/design_management/move_designs_service_spec.rb b/spec/services/design_management/move_designs_service_spec.rb index a05518dc28d8b2750005eb498b387a499a24ecdc..a43f0a2f805b53cc3e0a432d4b3d2f2e3cfbf318 100644 --- a/spec/services/design_management/move_designs_service_spec.rb +++ b/spec/services/design_management/move_designs_service_spec.rb @@ -32,30 +32,6 @@ RSpec.describe DesignManagement::MoveDesignsService do describe '#execute' do subject { service.execute } - context 'the feature is unavailable' do - let(:current_design) { designs.first } - let(:previous_design) { designs.second } - let(:next_design) { designs.third } - - before do - stub_feature_flags(reorder_designs: false) - end - - it 'raises cannot_move' do - expect(subject).to be_error.and(have_attributes(message: :cannot_move)) - end - - context 'but it is available on the current project' do - before do - stub_feature_flags(reorder_designs: issue.project) - end - - it 'is successful' do - expect(subject).to be_success - end - end - end - context 'the user cannot move designs' do let(:current_design) { designs.first } let(:current_user) { build_stubbed(:user) } @@ -124,7 +100,7 @@ RSpec.describe DesignManagement::MoveDesignsService do expect(subject).to be_success - expect(issue.designs.ordered(issue.project)).to eq([ + expect(issue.designs.ordered).to eq([ # Existing designs which already had a relative_position set. # These should stay at the beginning, in the same order. other_design1, diff --git a/spec/services/metrics/dashboard/gitlab_alert_embed_service_spec.rb b/spec/services/metrics/dashboard/gitlab_alert_embed_service_spec.rb index dd9d498e3075c850aef27aab71b8a956279df45b..d5928b1b5afd8a5bff0ea9b0b797db06353c6d37 100644 --- a/spec/services/metrics/dashboard/gitlab_alert_embed_service_spec.rb +++ b/spec/services/metrics/dashboard/gitlab_alert_embed_service_spec.rb @@ -10,9 +10,8 @@ RSpec.describe Metrics::Dashboard::GitlabAlertEmbedService do let_it_be(:user) { create(:user) } let(:alert_id) { alert.id } - before do + before_all do project.add_maintainer(user) - project.clear_memoization(:licensed_feature_available) end describe '.valid_params?' do diff --git a/spec/services/projects/alerting/notify_service_spec.rb b/spec/services/projects/alerting/notify_service_spec.rb index 98f10f2420972f6e5b4d725aa235b1f58943efae..97fad5a6d6525ad8d1635e548d441d9d70db8e6d 100644 --- a/spec/services/projects/alerting/notify_service_spec.rb +++ b/spec/services/projects/alerting/notify_service_spec.rb @@ -6,8 +6,6 @@ RSpec.describe Projects::Alerting::NotifyService do let_it_be(:project, reload: true) { create(:project, :repository) } before do - # We use `let_it_be(:project)` so we make sure to clear caches - project.clear_memoization(:licensed_feature_available) allow(ProjectServiceWorker).to receive(:perform_async) end diff --git a/spec/services/projects/prometheus/alerts/notify_service_spec.rb b/spec/services/projects/prometheus/alerts/notify_service_spec.rb index efe8e8b9243dc0875b9a3a939325c5896d780162..0e5ac7c69e3d2cbdf847d7d1e7c4b02ec2bd1dcd 100644 --- a/spec/services/projects/prometheus/alerts/notify_service_spec.rb +++ b/spec/services/projects/prometheus/alerts/notify_service_spec.rb @@ -16,11 +16,6 @@ RSpec.describe Projects::Prometheus::Alerts::NotifyService do let(:subject) { service.execute(token_input) } - before do - # We use `let_it_be(:project)` so we make sure to clear caches - project.clear_memoization(:licensed_feature_available) - end - context 'with valid payload' do let_it_be(:alert_firing) { create(:prometheus_alert, project: project) } let_it_be(:alert_resolved) { create(:prometheus_alert, project: project) } diff --git a/vendor/gitignore/C++.gitignore b/vendor/gitignore/C++.gitignore old mode 100644 new mode 100755 diff --git a/vendor/gitignore/Java.gitignore b/vendor/gitignore/Java.gitignore old mode 100644 new mode 100755