Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2021-02-17 00:09:19 +00:00
parent 44e10d208a
commit 668e319631
44 changed files with 282 additions and 202 deletions

View file

@ -1,5 +1,5 @@
import Vue from 'vue';
import commitPipelinesTable from './pipelines_table.vue';
import CommitPipelinesTable from './pipelines_table.vue';
/**
* Used in:
@ -8,14 +8,6 @@ import commitPipelinesTable from './pipelines_table.vue';
* - Merge Request details View > Pipelines Tab > Pipelines Table (projects:merge_requests:show)
* - New Merge Request View > Pipelines Tab > Pipelines Table (projects:merge_requests:creations:new)
*/
const CommitPipelinesTable = Vue.extend(commitPipelinesTable);
// export for use in merge_request_tabs.js (TODO: remove this hack when we understand how to load
// vue.js in merge_request_tabs.js)
window.gl = window.gl || {};
window.gl.CommitPipelinesTable = CommitPipelinesTable;
export default () => {
const pipelineTableViewEl = document.querySelector('#commit-pipeline-table-view');
@ -34,13 +26,17 @@ export default () => {
});
if (pipelineTableViewEl.dataset.disableInitialization === undefined) {
const table = new CommitPipelinesTable({
propsData: {
endpoint: pipelineTableViewEl.dataset.endpoint,
helpPagePath: pipelineTableViewEl.dataset.helpPagePath,
emptyStateSvgPath: pipelineTableViewEl.dataset.emptyStateSvgPath,
errorStateSvgPath: pipelineTableViewEl.dataset.errorStateSvgPath,
autoDevopsHelpPath: pipelineTableViewEl.dataset.helpAutoDevopsPath,
const table = new Vue({
render(createElement) {
return createElement(CommitPipelinesTable, {
props: {
endpoint: pipelineTableViewEl.dataset.endpoint,
helpPagePath: pipelineTableViewEl.dataset.helpPagePath,
emptyStateSvgPath: pipelineTableViewEl.dataset.emptyStateSvgPath,
errorStateSvgPath: pipelineTableViewEl.dataset.errorStateSvgPath,
autoDevopsHelpPath: pipelineTableViewEl.dataset.helpAutoDevopsPath,
},
});
},
}).$mount();
pipelineTableViewEl.appendChild(table.$el);

View file

@ -1,8 +1,9 @@
/* eslint-disable no-new, class-methods-use-this */
import { GlBreakpointInstance as bp } from '@gitlab/ui/dist/utils';
import $ from 'jquery';
import Cookies from 'js-cookie';
import Vue from 'vue';
import CommitPipelinesTable from '~/commit/pipelines/pipelines_table.vue';
import createEventHub from '~/helpers/event_hub_factory';
import initAddContextCommitsTriggers from './add_context_commits_modal';
import BlobForkSuggestion from './blob/blob_fork_suggestion';
@ -350,26 +351,30 @@ export default class MergeRequestTabs {
mountPipelinesView() {
const pipelineTableViewEl = document.querySelector('#commit-pipeline-table-view');
const { CommitPipelinesTable, mrWidgetData } = gl;
const { mrWidgetData } = gl;
this.commitPipelinesTable = new CommitPipelinesTable({
propsData: {
endpoint: pipelineTableViewEl.dataset.endpoint,
helpPagePath: pipelineTableViewEl.dataset.helpPagePath,
emptyStateSvgPath: pipelineTableViewEl.dataset.emptyStateSvgPath,
errorStateSvgPath: pipelineTableViewEl.dataset.errorStateSvgPath,
autoDevopsHelpPath: pipelineTableViewEl.dataset.helpAutoDevopsPath,
canCreatePipelineInTargetProject: Boolean(
mrWidgetData?.can_create_pipeline_in_target_project,
),
sourceProjectFullPath: mrWidgetData?.source_project_full_path || '',
targetProjectFullPath: mrWidgetData?.target_project_full_path || '',
projectId: pipelineTableViewEl.dataset.projectId,
mergeRequestId: mrWidgetData ? mrWidgetData.iid : null,
},
this.commitPipelinesTable = new Vue({
provide: {
targetProjectFullPath: mrWidgetData?.target_project_full_path || '',
},
render(createElement) {
return createElement(CommitPipelinesTable, {
props: {
endpoint: pipelineTableViewEl.dataset.endpoint,
helpPagePath: pipelineTableViewEl.dataset.helpPagePath,
emptyStateSvgPath: pipelineTableViewEl.dataset.emptyStateSvgPath,
errorStateSvgPath: pipelineTableViewEl.dataset.errorStateSvgPath,
autoDevopsHelpPath: pipelineTableViewEl.dataset.helpAutoDevopsPath,
canCreatePipelineInTargetProject: Boolean(
mrWidgetData?.can_create_pipeline_in_target_project,
),
sourceProjectFullPath: mrWidgetData?.source_project_full_path || '',
targetProjectFullPath: mrWidgetData?.target_project_full_path || '',
projectId: pipelineTableViewEl.dataset.projectId,
mergeRequestId: mrWidgetData ? mrWidgetData.iid : null,
},
});
},
}).$mount();
// $mount(el) replaces the el with the new rendered component. We need it in order to mount

View file

@ -65,8 +65,8 @@ export default {
return axios
.get(endpoint)
.then(({ data }) => {
this.branches = data.Branches;
this.tags = data.Tags;
this.branches = data.Branches || [];
this.tags = data.Tags || [];
})
.catch(() => {
createFlash({

View file

@ -907,14 +907,6 @@ $system-note-svg-size: 16px;
.discussion-filter-container {
.dropdown-menu {
margin-bottom: $gl-padding-4;
@include media-breakpoint-down(md) {
margin-left: $btn-side-margin + $contextual-sidebar-collapsed-width;
}
@include media-breakpoint-down(xs) {
margin-left: $btn-side-margin;
}
}
}

View file

@ -4,6 +4,7 @@ module Clusters
class Agent < ApplicationRecord
self.table_name = 'cluster_agents'
belongs_to :created_by_user, class_name: 'User', optional: true
belongs_to :project, class_name: '::Project' # Otherwise, it will load ::Clusters::Project
has_many :agent_tokens, class_name: 'Clusters::AgentToken'

View file

@ -3,29 +3,30 @@
.form-group
= form.label :url, _('URL'), class: 'label-bold'
= form.text_field :url, class: 'form-control gl-form-input'
%p.form-text.text-muted= _('URL must be percent-encoded if neccessary.')
.form-group
= form.label :token, _('Secret Token'), class: 'label-bold'
= form.label :token, _('Secret token'), class: 'label-bold'
= form.text_field :token, class: 'form-control gl-form-input'
%p.form-text.text-muted= _('Use this token to validate received payloads')
%p.form-text.text-muted= _('Use this token to validate received payloads.')
.form-group
= form.label :url, _('Trigger'), class: 'label-bold'
.form-text.text-secondary.gl-mb-5= _('System hook will be triggered on set of events like creating project or adding ssh key. But you can also enable extra triggers like Push events.')
.form-text.text-secondary.gl-mb-5= _('System hooks are triggered on sets of events like creating a project or adding an SSH key. You can also enable extra triggers, such as push events.')
%fieldset.form-group.form-check
= form.check_box :repository_update_events, class: 'form-check-input'
= form.label :repository_update_events, _('Repository update events'), class: 'label-bold form-check-label'
.text-secondary= _('This URL will be triggered when repository is updated')
.text-secondary= _('URL is triggered when repository is updated')
%fieldset.form-group.form-check
= form.check_box :push_events, class: 'form-check-input'
= form.label :push_events, _('Push events'), class: 'label-bold form-check-label'
.text-secondary= _('This URL will be triggered for each branch updated to the repository')
.text-secondary= _('URL is triggered for each branch updated to the repository')
%fieldset.form-group.form-check
= form.check_box :tag_push_events, class: 'form-check-input'
= form.label :tag_push_events, _('Tag push events'), class: 'label-bold form-check-label'
.text-secondary= _('This URL will be triggered when a new tag is pushed to the repository')
.text-secondary= _('URL is triggered when a new tag is pushed to the repository')
%fieldset.form-group.form-check
= form.check_box :merge_requests_events, class: 'form-check-input'
= form.label :merge_requests_events, _('Merge request events'), class: 'label-bold form-check-label'
.text-secondary= _('This URL will be triggered when a merge request is created/updated/merged')
.text-secondary= _('URL is triggered when a merge request is created, updated, or merged')
.form-group
= form.label :enable_ssl_verification, _('SSL verification'), class: 'label-bold checkbox'
.form-check

View file

@ -3,11 +3,13 @@
.form-group
= form.label :url, s_('Webhooks|URL'), class: 'label-bold'
= form.text_field :url, class: 'form-control gl-form-input', placeholder: 'http://example.com/trigger-ci.json'
%p.form-text.text-muted
= s_('Webhooks|URL must be percent-encoded if neccessary.')
.form-group
= form.label :token, s_('Webhooks|Secret Token'), class: 'label-bold'
= form.label :token, s_('Webhooks|Secret token'), class: 'label-bold'
= form.text_field :token, class: 'form-control gl-form-input', placeholder: ''
%p.form-text.text-muted
= s_('Webhooks|Use this token to validate received payloads. It will be sent with the request in the X-Gitlab-Token HTTP header.')
= s_('Webhooks|Use this token to validate received payloads. It is sent with the request in the X-Gitlab-Token HTTP header.')
.form-group
= form.label :url, s_('Webhooks|Trigger'), class: 'label-bold'
%ul.list-unstyled.gl-ml-6
@ -17,37 +19,37 @@
%strong= s_('Webhooks|Push events')
= form.text_field :push_events_branch_filter, class: 'form-control gl-form-input', placeholder: 'Branch name or wildcard pattern to trigger on (leave blank for all)'
%p.text-muted.gl-ml-1
= s_('Webhooks|This URL will be triggered by a push to the repository')
= s_('Webhooks|URL is triggered by a push to the repository')
%li
= form.check_box :tag_push_events, class: 'form-check-input'
= form.label :tag_push_events, class: 'list-label form-check-label gl-ml-1' do
%strong= s_('Webhooks|Tag push events')
%p.text-muted.gl-ml-1
= s_('Webhooks|This URL will be triggered when a new tag is pushed to the repository')
= s_('Webhooks|URL is triggered when a new tag is pushed to the repository')
%li
= form.check_box :note_events, class: 'form-check-input'
= form.label :note_events, class: 'list-label form-check-label gl-ml-1' do
%strong= s_('Webhooks|Comments')
%p.text-muted.gl-ml-1
= s_('Webhooks|This URL will be triggered when someone adds a comment')
= s_('Webhooks|URL is triggered when someone adds a comment')
%li
= form.check_box :confidential_note_events, class: 'form-check-input'
= form.label :confidential_note_events, class: 'list-label form-check-label gl-ml-1' do
%strong= s_('Webhooks|Confidential Comments')
%strong= s_('Webhooks|Confidential comments')
%p.text-muted.gl-ml-1
= s_('Webhooks|This URL will be triggered when someone adds a comment on a confidential issue')
= s_('Webhooks|URL is triggered when someone adds a comment on a confidential issue')
%li
= form.check_box :issues_events, class: 'form-check-input'
= form.label :issues_events, class: 'list-label form-check-label gl-ml-1' do
%strong= s_('Webhooks|Issues events')
%p.text-muted.gl-ml-1
= s_('Webhooks|This URL will be triggered when an issue is created/updated/merged')
= s_('Webhooks|URL is triggered when an issue is created, updated, or merged')
%li
= form.check_box :confidential_issues_events, class: 'form-check-input'
= form.label :confidential_issues_events, class: 'list-label form-check-label gl-ml-1' do
%strong= s_('Webhooks|Confidential Issues events')
%strong= s_('Webhooks|Confidential issues events')
%p.text-muted.gl-ml-1
= s_('Webhooks|This URL will be triggered when a confidential issue is created/updated/merged')
= s_('Webhooks|URL is triggered when a confidential issue is created, updated, or merged')
- if @group
= render_if_exists 'groups/hooks/member_events', form: form
= render_if_exists 'groups/hooks/subgroup_events', form: form
@ -56,43 +58,43 @@
= form.label :merge_requests_events, class: 'list-label form-check-label gl-ml-1' do
%strong= s_('Webhooks|Merge request events')
%p.text-muted.gl-ml-1
= s_('Webhooks|This URL will be triggered when a merge request is created/updated/merged')
= s_('Webhooks|URL is triggered when a merge request is created, updated, or merged')
%li
= form.check_box :job_events, class: 'form-check-input'
= form.label :job_events, class: 'list-label form-check-label gl-ml-1' do
%strong= s_('Webhooks|Job events')
%p.text-muted.gl-ml-1
= s_('Webhooks|This URL will be triggered when the job status changes')
= s_('Webhooks|URL is triggered when the job status changes')
%li
= form.check_box :pipeline_events, class: 'form-check-input'
= form.label :pipeline_events, class: 'list-label form-check-label gl-ml-1' do
%strong= s_('Webhooks|Pipeline events')
%p.text-muted.gl-ml-1
= s_('Webhooks|This URL will be triggered when the pipeline status changes')
= s_('Webhooks|URL is triggered when the pipeline status changes')
%li
= form.check_box :wiki_page_events, class: 'form-check-input'
= form.label :wiki_page_events, class: 'list-label form-check-label gl-ml-1' do
%strong= s_('Webhooks|Wiki Page events')
%strong= s_('Webhooks|Wiki page events')
%p.text-muted.gl-ml-1
= s_('Webhooks|This URL will be triggered when a wiki page is created/updated')
= s_('Webhooks|URL is triggered when a wiki page is created or updated')
%li
= form.check_box :deployment_events, class: 'form-check-input'
= form.label :deployment_events, class: 'list-label form-check-label gl-ml-1' do
%strong= s_('Webhooks|Deployment events')
%p.text-muted.gl-ml-1
= s_('Webhooks|This URL is triggered when a deployment starts, finishes, fails, or is canceled')
= s_('Webhooks|URL is triggered when a deployment starts, finishes, fails, or is canceled')
%li
= form.check_box :feature_flag_events, class: 'form-check-input'
= form.label :feature_flag_events, class: 'list-label form-check-label gl-ml-1' do
%strong= s_('Webhooks|Feature Flag events')
%strong= s_('Webhooks|Feature flag events')
%p.text-muted.gl-ml-1
= s_('Webhooks|This URL is triggered when a feature flag is turned on or off')
= s_('Webhooks|URL is triggered when a feature flag is turned on or off')
%li
= form.check_box :releases_events, class: 'form-check-input'
= form.label :releases_events, class: 'list-label form-check-label gl-ml-1' do
%strong= s_('Webhooks|Releases events')
%p.text-muted.gl-ml-1
= s_('Webhooks|This URL is triggered when a release is created/updated')
= s_('Webhooks|URL is triggered when a release is created or updated')
.form-group
= form.label :enable_ssl_verification, s_('Webhooks|SSL verification'), class: 'label-bold checkbox'
.form-check

View file

@ -0,0 +1,5 @@
---
title: Add created_by_user to cluster agents
merge_request: 54011
author:
type: added

View file

@ -0,0 +1,5 @@
---
title: Safe guard repo compare when data is undefined
merge_request: 54371
author:
type: fixed

View file

@ -0,0 +1,5 @@
---
title: Extend index on ci_builds_metadata
merge_request: 52123
author:
type: performance

View file

@ -0,0 +1,5 @@
---
title: Add URL help text and edit other UI text
merge_request: 53578
author:
type: other

View file

@ -0,0 +1,5 @@
---
title: Fix unneeded left margin in discussion filter container on mobile
merge_request: 54379
author:
type: fixed

View file

@ -1,8 +0,0 @@
---
name: track_issue_activity_actions
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/40904
rollout_issue_url:
milestone: '13.4'
type: development
group: group::project management
default_enabled: true

View file

@ -0,0 +1,40 @@
# frozen_string_literal: true
class ExtendIndexOnCiBuildsMetadata < ActiveRecord::Migration[6.0]
include Gitlab::Database::MigrationHelpers
DOWNTIME = false
disable_ddl_transaction!
OLD_INDEX = :index_ci_builds_metadata_on_build_id_and_interruptible
NEW_INDEX = :index_ci_builds_metadata_on_build_id_and_id_and_interruptible
TABLE = :ci_builds_metadata
def up
create_covering_index(TABLE, NEW_INDEX)
remove_concurrent_index_by_name TABLE, OLD_INDEX
end
def down
add_concurrent_index TABLE, :build_id, where: 'interruptible = true', name: OLD_INDEX
remove_concurrent_index_by_name TABLE, NEW_INDEX
end
private
def create_covering_index(table, name)
return if index_exists_by_name?(table, name)
disable_statement_timeout do
execute <<~SQL
CREATE INDEX CONCURRENTLY #{name}
ON #{table} (build_id) INCLUDE (id)
WHERE interruptible = true
SQL
end
end
end

View file

@ -0,0 +1,27 @@
# frozen_string_literal: true
class AddCreatedByToClusterAgent < ActiveRecord::Migration[6.0]
include Gitlab::Database::MigrationHelpers
DOWNTIME = false
INDEX_NAME = 'index_cluster_agents_on_created_by_user_id'
disable_ddl_transaction!
def up
unless column_exists?(:cluster_agents, :created_by_user_id)
with_lock_retries do
add_column :cluster_agents, :created_by_user_id, :bigint
end
end
add_concurrent_index :cluster_agents, :created_by_user_id, name: INDEX_NAME
add_concurrent_foreign_key :cluster_agents, :users, column: :created_by_user_id, on_delete: :nullify
end
def down
with_lock_retries do
remove_column :cluster_agents, :created_by_user_id
end
end
end

View file

@ -0,0 +1 @@
897815c347f04093da5eba420e95b6310454bd493412914e60a296bd710ebde1

View file

@ -0,0 +1 @@
8c676b4142db828b1d2d5dc6bd891eb929d12ab13e9073693ab7d830bcea599a

View file

@ -11043,6 +11043,7 @@ CREATE TABLE cluster_agents (
updated_at timestamp with time zone NOT NULL,
project_id bigint NOT NULL,
name text NOT NULL,
created_by_user_id bigint,
CONSTRAINT check_3498369510 CHECK ((char_length(name) <= 255))
);
@ -21622,7 +21623,7 @@ CREATE UNIQUE INDEX index_ci_builds_metadata_on_build_id ON ci_builds_metadata U
CREATE INDEX index_ci_builds_metadata_on_build_id_and_has_exposed_artifacts ON ci_builds_metadata USING btree (build_id) WHERE (has_exposed_artifacts IS TRUE);
CREATE INDEX index_ci_builds_metadata_on_build_id_and_interruptible ON ci_builds_metadata USING btree (build_id) WHERE (interruptible = true);
CREATE INDEX index_ci_builds_metadata_on_build_id_and_id_and_interruptible ON ci_builds_metadata USING btree (build_id) INCLUDE (id) WHERE (interruptible = true);
CREATE INDEX index_ci_builds_metadata_on_project_id ON ci_builds_metadata USING btree (project_id);
@ -21848,6 +21849,8 @@ CREATE INDEX index_cluster_agent_tokens_on_created_by_user_id ON cluster_agent_t
CREATE UNIQUE INDEX index_cluster_agent_tokens_on_token_encrypted ON cluster_agent_tokens USING btree (token_encrypted);
CREATE INDEX index_cluster_agents_on_created_by_user_id ON cluster_agents USING btree (created_by_user_id);
CREATE UNIQUE INDEX index_cluster_agents_on_project_id_and_name ON cluster_agents USING btree (project_id, name);
CREATE UNIQUE INDEX index_cluster_groups_on_cluster_id_and_group_id ON cluster_groups USING btree (cluster_id, group_id);
@ -24777,6 +24780,9 @@ ALTER TABLE ONLY design_management_designs_versions
ALTER TABLE ONLY analytics_devops_adoption_segments
ADD CONSTRAINT fk_f5aa768998 FOREIGN KEY (namespace_id) REFERENCES namespaces(id) ON DELETE CASCADE;
ALTER TABLE ONLY cluster_agents
ADD CONSTRAINT fk_f7d43dee13 FOREIGN KEY (created_by_user_id) REFERENCES users(id) ON DELETE SET NULL;
ALTER TABLE ONLY protected_tag_create_access_levels
ADD CONSTRAINT fk_f7dfda8c51 FOREIGN KEY (protected_tag_id) REFERENCES protected_tags(id) ON DELETE CASCADE;

View file

@ -18,4 +18,6 @@ swap:
once the: '"after the"'
once you: '"after you"'
since: '"because" or "after"'
sub-group: '"subgroup"'
sub-groups: '"subgroups"'
within: '"in"'

View file

@ -561,6 +561,8 @@ subfolder
subfolders
subgraph
subgraphs
subgroup
subgroups
subkey
subkeys
sublicense

View file

@ -120,5 +120,7 @@ production environment, you can use the following Prometheus query:
sum(rate(gitaly_git_protocol_requests_total[1m])) by (grpc_method,git_protocol,grpc_service)
```
<!-- This link sporadically returns a 503 during automated link checking but is correct -->
You can view what Git protocol versions are being used on GitLab.com at
<https://dashboards.gitlab.com/d/pqlQq0xik/git-protocol-versions>.

View file

@ -563,7 +563,7 @@ service = ::Groups::TransferService.new(group, user)
service.execute(parent_group)
```
### Count unique users in a group and sub-groups
### Count unique users in a group and subgroups
```ruby
group = Group.find_by_path_or_name("groupname")

View file

@ -443,7 +443,7 @@ group = Group.find_by_full_path('group/subgroup')
# Get group's immediate child projects
group.projects
# Get group's child projects, including those in sub-groups
# Get group's child projects, including those in subgroups
group.all_projects
```

View file

@ -3394,6 +3394,11 @@ type ClusterAgent {
"""
createdAt: Time
"""
User object, containing information about the person who created the agent.
"""
createdByUser: User
"""
ID of the cluster agent.
"""

View file

@ -9175,6 +9175,20 @@
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "createdByUser",
"description": "User object, containing information about the person who created the agent.",
"args": [
],
"type": {
"kind": "OBJECT",
"name": "User",
"ofType": null
},
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "id",
"description": "ID of the cluster agent.",

View file

@ -536,6 +536,7 @@ Autogenerated return type of CiCdSettingsUpdate.
| Field | Type | Description |
| ----- | ---- | ----------- |
| `createdAt` | Time | Timestamp the cluster agent was created. |
| `createdByUser` | User | User object, containing information about the person who created the agent. |
| `id` | ID! | ID of the cluster agent. |
| `name` | String | Name of the cluster agent. |
| `project` | Project | The project this cluster agent is associated with. |

View file

@ -19,7 +19,7 @@ Group exports include the following:
- Group labels
- Group badges
- Group members
- Sub-groups. Each sub-group includes all data above
- Subgroups. Each subgroup includes all data above
- Group wikis **(PREMIUM SELF)**
## Schedule new export

View file

@ -526,6 +526,7 @@ You can use these fake tokens as examples:
| scalability | Do not use when talking about increasing GitLab performance for additional users. The words scale or scaling are sometimes acceptable, but references to increasing GitLab performance for additional users should direct readers to the GitLab [reference architectures](../../../administration/reference_architectures/index.md) page. |
| simply | Do not use. If the user doesn't find the process to be these things, we lose their trust. |
| slashes | Instead of **and/or**, use **or** or another sensible construction. This rule also applies to other slashes, like **follow/unfollow**. Some exceptions (like **CI/CD**) are allowed. |
| subgroup | Use instead of `sub-group`. |
| that | Do not use. Example: `the file that you save` can be `the file you save`. |
| useful | Do not use. If the user doesn't find the process to be these things, we lose their trust. |
| utilize | Do not use. Use **use** instead. It's more succinct and easier for non-native English speakers to understand. |

View file

@ -64,9 +64,9 @@ By default, this seeds an average of 10 issues per week for the last 52 weeks
per project. All issues are also randomly labeled with team, type, severity,
and priority.
#### Seeding groups with sub-groups
#### Seeding groups with subgroups
You can seed groups with sub-groups that contain milestones/projects/issues
You can seed groups with subgroups that contain milestones/projects/issues
with the `gitlab:seed:group_seed` task:
```shell

View file

@ -239,7 +239,7 @@ If you select `Limit namespaces and projects that can be indexed`, more options
![limit namespaces and projects options](img/limit_namespaces_projects_options.png)
You can select namespaces and projects to index exclusively. Note that if the namespace is a group it will include
any sub-groups and projects belonging to those sub-groups to be indexed as well.
any subgroups and projects belonging to those subgroups to be indexed as well.
Advanced Search only provides cross-group code/commit search (global) if all name-spaces are indexed. In this particular scenario where only a subset of namespaces are indexed, a global search will not provide a code or commit scope. This will be possible only in the scope of an indexed namespace. Currently there is no way to code/commit search in multiple indexed namespaces (when only a subset of namespaces has been indexed). For example if two groups are indexed, there is no way to run a single code search on both. You can only run a code search on the first group and then on the second.

View file

@ -150,7 +150,7 @@ An administrator can "impersonate" any other user, including other administrator
This allows the administrator to "see what the user sees," and take actions on behalf of the user.
You can impersonate a user in the following ways:
- Through the UI, by selecting **Admin Area > Overview > Users > [Select a user] > Impersonate**.
- Through the UI, by selecting **Admin Area > Overview > Users > Select a user > Impersonate**.
- With the API, using [impersonation tokens](../../api/README.md#impersonation-tokens).
All impersonation activities are [captured with audit events](../../administration/audit_events.md#impersonation-data).

View file

@ -38,7 +38,7 @@ in the project namespace.
If the project's cluster is available and not disabled, GitLab uses the
project's cluster before using any cluster belonging to the group containing
the project.
In the case of sub-groups, GitLab uses the cluster of the closest ancestor group
In the case of subgroups, GitLab uses the cluster of the closest ancestor group
to the project, provided the cluster is not disabled.
## Multiple Kubernetes clusters

View file

@ -16,7 +16,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
WARNING:
This feature is [under construction](https://gitlab.com/groups/gitlab-org/-/epics/2771) and currently migrates only some of the Group data. Please see below for the full list of what is included in the migration at this time.
Using GitLab Group Migration, you can migrate existing top-level groups from GitLab.com or a self-managed instance. Groups can be migrated to a target instance, as a top-level group, or as a sub-group of any existing top-level group.
Using GitLab Group Migration, you can migrate existing top-level groups from GitLab.com or a self-managed instance. Groups can be migrated to a target instance, as a top-level group, or as a subgroup of any existing top-level group.
The following resources are migrated to the target instance:

View file

@ -787,7 +787,7 @@ To enable delayed deletion of projects:
1. Click **Save changes**.
NOTE:
The group setting for delayed deletion is not inherited by sub-groups and has to be individually defined for each group.
The group setting for delayed deletion is not inherited by subgroups and has to be individually defined for each group.
#### Prevent project forking outside group **(PREMIUM)**

View file

@ -18,7 +18,7 @@ If you follow our guidance to automate user provisioning using [SCIM](scim_setup
User synchronization of SAML SSO groups is supported through [SCIM](scim_setup.md). SCIM supports adding and removing users from the GitLab group.
For example, if you remove a user from the SCIM app, SCIM removes that same user from the GitLab group.
SAML SSO is not supported at the subgroup level.
SAML SSO is only configurable at the top-level group.
## Configuring your Identity Provider

View file

@ -263,7 +263,7 @@ Prerequisite:
When publishing packages:
- The Package Registry on GitLab.com can store up to 500 MB of content.
- The Package Registry on GitLab.com can store up to 5 GB of content.
This limit is [configurable for self-managed GitLab instances](../../../administration/instance_limits.md#package-registry-limits).
- If you publish the same package with the same version multiple times, each
consecutive upload is saved as a separate file. When installing a package,

View file

@ -99,9 +99,9 @@ confidential information prematurely. To make a confidential commit public,
open a merge request from the private fork to the public upstream project.
Permissions are inherited from parent groups. Developers have the same permissions
for private forks created in the same group or in a sub-group of the original
for private forks created in the same group or in a subgroup of the original
Permissions are inherited from parent groups. When private forks are created
in the same group or sub-group as the original upstream repository, users
in the same group or subgroup as the original upstream repository, users
receive the same permissions in both projects. This inheritance ensures
Developer users have the needed permissions to both view confidential issues and
resolve them.

View file

@ -52,7 +52,7 @@ WARNING:
This feature might not be available to you. Check the **version history** note above for details.
GitLab 13.9 introduces custom compliance frameworks at the group-level. A group owner can create a compliance framework label
and assign it to any number of projects within that group or sub-groups. When this feature is enabled, projects can only
and assign it to any number of projects within that group or subgroups. When this feature is enabled, projects can only
be assigned compliance framework labels that already exist within that group.
If existing [Compliance frameworks](#compliance-framework) are not sufficient, project and group owners

View file

@ -145,7 +145,6 @@ module Gitlab
private
def track_unique_action(action, author, time)
return unless Feature.enabled?(:track_issue_activity_actions, default_enabled: true)
return unless author
Gitlab::UsageDataCounters::HLLRedisCounter.track_event(action, values: author.id, time: time)

View file

@ -288,167 +288,134 @@
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_description_changed
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_assignee_changed
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_made_confidential
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_made_visible
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_created
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_closed
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_reopened
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_label_changed
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_milestone_changed
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_iteration_changed
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_weight_changed
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_cross_referenced
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_moved
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_related
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_unrelated
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_marked_as_duplicate
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_locked
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_unlocked
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_added_to_epic
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_removed_from_epic
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_changed_epic
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_designs_added
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_designs_modified
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_designs_removed
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_due_date_changed
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_time_estimate_changed
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_time_spent_changed
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_comment_added
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_comment_edited
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_comment_removed
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_health_status_changed
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
- name: g_project_management_issue_cloned
category: issues_edit
redis_slot: project_management
aggregation: daily
feature_flag: track_issue_activity_actions
# Secrets Management
- name: i_ci_secrets_management_vault_build_created
category: ci_secrets_management

View file

@ -26030,7 +26030,7 @@ msgstr ""
msgid "Secret Detection"
msgstr ""
msgid "Secret Token"
msgid "Secret token"
msgstr ""
msgid "Security"
@ -28607,7 +28607,7 @@ msgstr ""
msgid "System hook was successfully updated."
msgstr ""
msgid "System hook will be triggered on set of events like creating project or adding ssh key. But you can also enable extra triggers like Push events."
msgid "System hooks are triggered on sets of events like creating a project or adding an SSH key. You can also enable extra triggers, such as push events."
msgstr ""
msgid "System metrics (Custom)"
@ -29880,18 +29880,6 @@ msgstr ""
msgid "This URL is already used for another link; duplicate URLs are not allowed"
msgstr ""
msgid "This URL will be triggered for each branch updated to the repository"
msgstr ""
msgid "This URL will be triggered when a merge request is created/updated/merged"
msgstr ""
msgid "This URL will be triggered when a new tag is pushed to the repository"
msgstr ""
msgid "This URL will be triggered when repository is updated"
msgstr ""
msgid "This action can lead to data loss. To prevent accidental actions we ask you to confirm your intention."
msgstr ""
@ -31317,6 +31305,21 @@ msgstr ""
msgid "URL is required"
msgstr ""
msgid "URL is triggered for each branch updated to the repository"
msgstr ""
msgid "URL is triggered when a merge request is created, updated, or merged"
msgstr ""
msgid "URL is triggered when a new tag is pushed to the repository"
msgstr ""
msgid "URL is triggered when repository is updated"
msgstr ""
msgid "URL must be percent-encoded if neccessary."
msgstr ""
msgid "URL must start with %{codeStart}http://%{codeEnd}, %{codeStart}https://%{codeEnd}, or %{codeStart}ftp://%{codeEnd}"
msgstr ""
@ -31938,7 +31941,7 @@ msgstr ""
msgid "Use template"
msgstr ""
msgid "Use this token to validate received payloads"
msgid "Use this token to validate received payloads."
msgstr ""
msgid "Use webhook"
@ -32941,10 +32944,10 @@ msgstr ""
msgid "Webhooks|Comments"
msgstr ""
msgid "Webhooks|Confidential Comments"
msgid "Webhooks|Confidential comments"
msgstr ""
msgid "Webhooks|Confidential Issues events"
msgid "Webhooks|Confidential issues events"
msgstr ""
msgid "Webhooks|Deployment events"
@ -32953,7 +32956,7 @@ msgstr ""
msgid "Webhooks|Enable SSL verification"
msgstr ""
msgid "Webhooks|Feature Flag events"
msgid "Webhooks|Feature flag events"
msgstr ""
msgid "Webhooks|Issues events"
@ -32980,7 +32983,7 @@ msgstr ""
msgid "Webhooks|SSL verification"
msgstr ""
msgid "Webhooks|Secret Token"
msgid "Webhooks|Secret token"
msgstr ""
msgid "Webhooks|Subgroup events"
@ -32989,61 +32992,64 @@ msgstr ""
msgid "Webhooks|Tag push events"
msgstr ""
msgid "Webhooks|This URL is triggered when a deployment starts, finishes, fails, or is canceled"
msgstr ""
msgid "Webhooks|This URL is triggered when a feature flag is turned on or off"
msgstr ""
msgid "Webhooks|This URL is triggered when a release is created/updated"
msgstr ""
msgid "Webhooks|This URL will be triggered by a push to the repository"
msgstr ""
msgid "Webhooks|This URL will be triggered when a confidential issue is created/updated/merged"
msgstr ""
msgid "Webhooks|This URL will be triggered when a group member is created/updated/removed"
msgstr ""
msgid "Webhooks|This URL will be triggered when a merge request is created/updated/merged"
msgstr ""
msgid "Webhooks|This URL will be triggered when a new tag is pushed to the repository"
msgstr ""
msgid "Webhooks|This URL will be triggered when a subgroup is created/removed"
msgstr ""
msgid "Webhooks|This URL will be triggered when a wiki page is created/updated"
msgstr ""
msgid "Webhooks|This URL will be triggered when an issue is created/updated/merged"
msgstr ""
msgid "Webhooks|This URL will be triggered when someone adds a comment"
msgstr ""
msgid "Webhooks|This URL will be triggered when someone adds a comment on a confidential issue"
msgstr ""
msgid "Webhooks|This URL will be triggered when the job status changes"
msgstr ""
msgid "Webhooks|This URL will be triggered when the pipeline status changes"
msgstr ""
msgid "Webhooks|Trigger"
msgstr ""
msgid "Webhooks|URL"
msgstr ""
msgid "Webhooks|Use this token to validate received payloads. It will be sent with the request in the X-Gitlab-Token HTTP header."
msgid "Webhooks|URL is triggered by a push to the repository"
msgstr ""
msgid "Webhooks|Wiki Page events"
msgid "Webhooks|URL is triggered when a confidential issue is created, updated, or merged"
msgstr ""
msgid "Webhooks|URL is triggered when a deployment starts, finishes, fails, or is canceled"
msgstr ""
msgid "Webhooks|URL is triggered when a feature flag is turned on or off"
msgstr ""
msgid "Webhooks|URL is triggered when a group member is created, updated, or removed"
msgstr ""
msgid "Webhooks|URL is triggered when a merge request is created, updated, or merged"
msgstr ""
msgid "Webhooks|URL is triggered when a new tag is pushed to the repository"
msgstr ""
msgid "Webhooks|URL is triggered when a release is created or updated"
msgstr ""
msgid "Webhooks|URL is triggered when a subgroup is created or removed"
msgstr ""
msgid "Webhooks|URL is triggered when a wiki page is created or updated"
msgstr ""
msgid "Webhooks|URL is triggered when an issue is created, updated, or merged"
msgstr ""
msgid "Webhooks|URL is triggered when someone adds a comment"
msgstr ""
msgid "Webhooks|URL is triggered when someone adds a comment on a confidential issue"
msgstr ""
msgid "Webhooks|URL is triggered when the job status changes"
msgstr ""
msgid "Webhooks|URL is triggered when the pipeline status changes"
msgstr ""
msgid "Webhooks|URL must be percent-encoded if neccessary."
msgstr ""
msgid "Webhooks|Use this token to validate received payloads. It is sent with the request in the X-Gitlab-Token HTTP header."
msgstr ""
msgid "Webhooks|Wiki page events"
msgstr ""
msgid "Wednesday"

View file

@ -3,7 +3,6 @@ import $ from 'jquery';
import initMrPage from 'helpers/init_vue_mr_page_helper';
import axios from '~/lib/utils/axios_utils';
import MergeRequestTabs from '~/merge_request_tabs';
import '~/commit/pipelines/pipelines_bundle';
import '~/lib/utils/common_utils';
jest.mock('~/lib/utils/webpack', () => ({

View file

@ -5,6 +5,7 @@ require 'spec_helper'
RSpec.describe Clusters::Agent do
subject { create(:cluster_agent) }
it { is_expected.to belong_to(:created_by_user).class_name('User').optional }
it { is_expected.to belong_to(:project).class_name('::Project') }
it { is_expected.to have_many(:agent_tokens).class_name('Clusters::AgentToken') }

View file

@ -24,12 +24,4 @@ RSpec.shared_examples 'a tracked issue edit event' do |event|
it 'does not track edit actions if author is not present' do
expect(track_action(author: nil)).to be_nil
end
context 'when feature flag track_issue_activity_actions is disabled' do
it 'does not track edit actions' do
stub_feature_flags(track_issue_activity_actions: false)
expect(track_action(author: user1)).to be_nil
end
end
end