Skip to content

Commit 0701312

Browse files
author
GitLab Bot
committed
Add latest changes from gitlab-org/gitlab@master
1 parent c536927 commit 0701312

File tree

88 files changed

+1291
-297
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+1291
-297
lines changed

.gitlab/ci/rules.gitlab-ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2394,6 +2394,7 @@
23942394
changes:
23952395
- "{,jh/}.gitlab-ci.yml"
23962396
- "{,jh/}.gitlab/ci/**/*"
2397+
- "spec/dot_gitlab_ci/**/*"
23972398

23982399
.rails:rules:detect-tests:
23992400
rules:

.rubocop_todo/gitlab/namespaced_class.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,6 @@ Gitlab/NamespacedClass:
429429
- 'app/presenters/project_hook_presenter.rb'
430430
- 'app/presenters/project_member_presenter.rb'
431431
- 'app/presenters/project_presenter.rb'
432-
- 'app/presenters/prometheus_alert_presenter.rb'
433432
- 'app/presenters/release_presenter.rb'
434433
- 'app/presenters/search_service_presenter.rb'
435434
- 'app/presenters/sentry_error_presenter.rb'

.rubocop_todo/layout/line_length.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3903,7 +3903,6 @@ Layout/LineLength:
39033903
- 'spec/presenters/packages/nuget/package_metadata_presenter_spec.rb'
39043904
- 'spec/presenters/packages/nuget/packages_metadata_presenter_spec.rb'
39053905
- 'spec/presenters/projects/security/configuration_presenter_spec.rb'
3906-
- 'spec/presenters/prometheus_alert_presenter_spec.rb'
39073906
- 'spec/presenters/snippet_blob_presenter_spec.rb'
39083907
- 'spec/rack_servers/puma_spec.rb'
39093908
- 'spec/requests/admin/background_migrations_controller_spec.rb'

.rubocop_todo/rspec/factory_bot/avoid_create.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,6 @@ RSpec/FactoryBot/AvoidCreate:
395395
- 'spec/presenters/projects/import_export/project_export_presenter_spec.rb'
396396
- 'spec/presenters/projects/security/configuration_presenter_spec.rb'
397397
- 'spec/presenters/projects/settings/deploy_keys_presenter_spec.rb'
398-
- 'spec/presenters/prometheus_alert_presenter_spec.rb'
399398
- 'spec/presenters/release_presenter_spec.rb'
400399
- 'spec/presenters/releases/link_presenter_spec.rb'
401400
- 'spec/presenters/search_service_presenter_spec.rb'

.rubocop_todo/rspec/feature_category.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3881,7 +3881,6 @@ RSpec/FeatureCategory:
38813881
- 'spec/presenters/project_presenter_spec.rb'
38823882
- 'spec/presenters/projects/import_export/project_export_presenter_spec.rb'
38833883
- 'spec/presenters/projects/settings/deploy_keys_presenter_spec.rb'
3884-
- 'spec/presenters/prometheus_alert_presenter_spec.rb'
38853884
- 'spec/presenters/release_presenter_spec.rb'
38863885
- 'spec/presenters/releases/link_presenter_spec.rb'
38873886
- 'spec/presenters/sentry_error_presenter_spec.rb'

Gemfile.checksum

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,7 @@
448448
{"name":"opentelemetry-common","version":"0.21.0","platform":"ruby","checksum":"fe891a44583a20bc3217b324aec76d066504494951682d391cfd57d40cd01c98"},
449449
{"name":"opentelemetry-exporter-otlp","version":"0.27.0","platform":"ruby","checksum":"0050cf6ade97186ee3176cd8c44087b70cb739c3c624dbfc7c33097a3a189e4c"},
450450
{"name":"opentelemetry-helpers-sql-obfuscation","version":"0.1.0","platform":"ruby","checksum":"bc6ef1373dbcf979647091b3bfc99d7b6fb9669f74c3ae184f58b48adfc8d432"},
451+
{"name":"opentelemetry-instrumentation-action_mailer","version":"0.1.0","platform":"ruby","checksum":"52fe3400bb9051d079a2aed0858fc2d98c677bfb66d163e3b438b67c795dd1a9"},
451452
{"name":"opentelemetry-instrumentation-action_pack","version":"0.9.0","platform":"ruby","checksum":"c5df8472afc9cdbfc1425d9af7816b9cfc1a1a69b86621f1fc624974bd9acb9a"},
452453
{"name":"opentelemetry-instrumentation-action_view","version":"0.7.0","platform":"ruby","checksum":"bc7c714be0b4bb76843085c29ecc9465e65cb7fe6722e34c71629e44f8c3cb75"},
453454
{"name":"opentelemetry-instrumentation-active_job","version":"0.7.1","platform":"ruby","checksum":"da24806c9d92fe580db42638f6c763fe1324ff90aa147d45d4247f8052c68089"},
@@ -466,7 +467,7 @@
466467
{"name":"opentelemetry-instrumentation-net_http","version":"0.22.5","platform":"ruby","checksum":"99bd10e03918032ea6e4670c121c8778403e729d343446a5901d1126fcc5f7be"},
467468
{"name":"opentelemetry-instrumentation-pg","version":"0.27.3","platform":"ruby","checksum":"b689e9c47185729d671669a0f7c206c013d9c8dfc7a355901ec50b12c94e35cd"},
468469
{"name":"opentelemetry-instrumentation-rack","version":"0.24.4","platform":"ruby","checksum":"be35db05a459a608e2854baea7257daadd37d34fe7a274ff75cb63b5896e82b5"},
469-
{"name":"opentelemetry-instrumentation-rails","version":"0.30.1","platform":"ruby","checksum":"73060c76be009c75af5c3c4bb94bf9883cb5770d6a5115bcddbc590afc823142"},
470+
{"name":"opentelemetry-instrumentation-rails","version":"0.30.2","platform":"ruby","checksum":"42ddd023afa551f60ea632712d5125ce8b781eeb8d311a02efc2c62e02613a12"},
470471
{"name":"opentelemetry-instrumentation-rake","version":"0.2.2","platform":"ruby","checksum":"fbde8a6aab77c09bf0f94d914dd26dcf2e23ec67e2300f06a1cb8294a97d8020"},
471472
{"name":"opentelemetry-instrumentation-redis","version":"0.25.5","platform":"ruby","checksum":"d7ce798069539ab25a0d1685837d482eb40d076c642b4b15cecfed56516333d7"},
472473
{"name":"opentelemetry-instrumentation-sidekiq","version":"0.25.4","platform":"ruby","checksum":"4ce1b2e0952321d504d4c3e0e4fcbd5d090ff1f4de4cb214c6aa79d70ce8a3a3"},

Gemfile.lock

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1247,6 +1247,10 @@ GEM
12471247
opentelemetry-semantic_conventions
12481248
opentelemetry-helpers-sql-obfuscation (0.1.0)
12491249
opentelemetry-common (~> 0.20)
1250+
opentelemetry-instrumentation-action_mailer (0.1.0)
1251+
opentelemetry-api (~> 1.0)
1252+
opentelemetry-instrumentation-active_support (~> 0.1)
1253+
opentelemetry-instrumentation-base (~> 0.22.1)
12501254
opentelemetry-instrumentation-action_pack (0.9.0)
12511255
opentelemetry-api (~> 1.0)
12521256
opentelemetry-instrumentation-base (~> 0.22.1)
@@ -1311,8 +1315,9 @@ GEM
13111315
opentelemetry-api (~> 1.0)
13121316
opentelemetry-common (~> 0.21.0)
13131317
opentelemetry-instrumentation-base (~> 0.22.1)
1314-
opentelemetry-instrumentation-rails (0.30.1)
1318+
opentelemetry-instrumentation-rails (0.30.2)
13151319
opentelemetry-api (~> 1.0)
1320+
opentelemetry-instrumentation-action_mailer (~> 0.1.0)
13161321
opentelemetry-instrumentation-action_pack (~> 0.9.0)
13171322
opentelemetry-instrumentation-action_view (~> 0.7.0)
13181323
opentelemetry-instrumentation-active_job (~> 0.7.0)

app/assets/javascripts/blob/components/blob_header.vue

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@ export default {
7575
required: false,
7676
default: false,
7777
},
78+
showWebIdeForkSuggestion: {
79+
type: Boolean,
80+
required: false,
81+
default: false,
82+
},
7883
projectPath: {
7984
type: String,
8085
required: false,
@@ -156,6 +161,7 @@ export default {
156161
:edit-url="blob.editBlobPath"
157162
:web-ide-url="blob.ideEditPath"
158163
:needs-to-fork="showForkSuggestion"
164+
:needs-to-fork-with-web-ide="showWebIdeForkSuggestion"
159165
:show-pipeline-editor-button="Boolean(blob.pipelineEditorPath)"
160166
:pipeline-editor-url="blob.pipelineEditorPath"
161167
:gitpod-url="blob.gitpodBlobUrl"

app/assets/javascripts/notes/components/toggle_replies_widget.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ export default {
8383
<template #avatar="{ avatar }">
8484
<gl-avatar-link
8585
target="_blank"
86-
:href="avatar.path || author.webUrl"
86+
:href="avatar.path || avatar.webUrl"
8787
:data-user-id="avatar.id"
8888
:data-username="avatar.username"
8989
class="js-user-link"

app/assets/javascripts/organizations/shared/graphql/fragments/base_group.fragment.graphql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,5 @@ fragment BaseGroup on Group {
2222
maxAccessLevel {
2323
integerValue
2424
}
25+
isLinkedToSubscription
2526
}

app/assets/javascripts/repository/components/blob_content_viewer.vue

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -174,13 +174,23 @@ export default {
174174
175175
return pathLock ? pathLock.user : null;
176176
},
177-
showForkSuggestion() {
177+
canFork() {
178178
const { createMergeRequestIn, forkProject } = this.userPermissions;
179+
180+
return this.isLoggedIn && !this.isUsingLfs && createMergeRequestIn && forkProject;
181+
},
182+
showSingleFileEditorForkSuggestion() {
179183
const { canModifyBlob } = this.blobInfo;
180184
181-
return (
182-
this.isLoggedIn && !this.isUsingLfs && !canModifyBlob && createMergeRequestIn && forkProject
183-
);
185+
return this.canFork && !canModifyBlob;
186+
},
187+
showWebIdeForkSuggestion() {
188+
const { canModifyBlobWithWebIde } = this.blobInfo;
189+
190+
return this.canFork && !canModifyBlobWithWebIde;
191+
},
192+
showForkSuggestion() {
193+
return this.showSingleFileEditorForkSuggestion || this.showWebIdeForkSuggestion;
184194
},
185195
forkPath() {
186196
const forkPaths = {
@@ -265,14 +275,24 @@ export default {
265275
if (this.$route?.query?.plain === plain) return;
266276
this.$router.push({ path: this.$route.path, query: { ...this.$route.query, plain } });
267277
},
278+
isIdeTarget(target) {
279+
return target === 'ide';
280+
},
281+
forkSuggestionForSelectedEditor(target) {
282+
return this.isIdeTarget(target)
283+
? this.showWebIdeForkSuggestion
284+
: this.showSingleFileEditorForkSuggestion;
285+
},
268286
editBlob(target) {
269-
if (this.showForkSuggestion) {
287+
const { ideEditPath, editBlobPath } = this.blobInfo;
288+
const isIdeTarget = this.isIdeTarget(target);
289+
const showForkSuggestionForSelectedEditor = this.forkSuggestionForSelectedEditor(target);
290+
291+
if (showForkSuggestionForSelectedEditor) {
270292
this.setForkTarget(target);
271-
return;
293+
} else {
294+
visitUrl(isIdeTarget ? ideEditPath : editBlobPath);
272295
}
273-
274-
const { ideEditPath, editBlobPath } = this.blobInfo;
275-
visitUrl(target === 'ide' ? ideEditPath : editBlobPath);
276296
},
277297
setForkTarget(target) {
278298
this.forkTarget = target;
@@ -311,7 +331,8 @@ export default {
311331
:has-render-error="hasRenderError"
312332
:show-path="false"
313333
:override-copy="true"
314-
:show-fork-suggestion="showForkSuggestion"
334+
:show-fork-suggestion="showSingleFileEditorForkSuggestion"
335+
:show-web-ide-fork-suggestion="showWebIdeForkSuggestion"
315336
:show-blame-toggle="true"
316337
:project-path="projectPath"
317338
:project-id="projectId"
@@ -334,7 +355,7 @@ export default {
334355
:project-path="projectPath"
335356
:is-locked="Boolean(pathLockedByUser)"
336357
:can-lock="canLock"
337-
:show-fork-suggestion="showForkSuggestion"
358+
:show-fork-suggestion="showSingleFileEditorForkSuggestion"
338359
:is-using-lfs="isUsingLfs"
339360
@fork="setForkTarget('view')"
340361
/>
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<script>
2+
import { GlModal, GlSprintf } from '@gitlab/ui';
3+
import { __ } from '~/locale';
4+
import HelpPageLink from '~/vue_shared/components/help_page_link/help_page_link.vue';
5+
6+
export default {
7+
name: 'GroupListItemPreventDeleteModal',
8+
i18n: {
9+
title: __("Group can't be be deleted"),
10+
message: __(
11+
"This group can't be deleted because it is linked to a subscription. To delete this group, %{linkStart}link the subscription%{linkEnd} with a different group.",
12+
),
13+
},
14+
components: {
15+
GlModal,
16+
GlSprintf,
17+
HelpPageLink,
18+
},
19+
props: {
20+
visible: {
21+
type: Boolean,
22+
required: true,
23+
},
24+
modalId: {
25+
type: String,
26+
required: true,
27+
},
28+
group: {
29+
type: Object,
30+
required: true,
31+
},
32+
},
33+
CANCEL_PROPS: {
34+
text: __('Cancel'),
35+
},
36+
};
37+
</script>
38+
<template>
39+
<gl-modal
40+
:visible="visible"
41+
:modal-id="modalId"
42+
:data-testid="modalId"
43+
:title="$options.i18n.title"
44+
size="sm"
45+
:action-cancel="$options.CANCEL_PROPS"
46+
@change="$emit('change', $event)"
47+
>
48+
<gl-sprintf :message="$options.i18n.message">
49+
<template #link="{ content }">
50+
<help-page-link
51+
href="subscriptions/gitlab_com/index"
52+
anchor="change-the-linked-namespace"
53+
>{{ content }}</help-page-link
54+
>
55+
</template>
56+
</gl-sprintf>
57+
</gl-modal>
58+
</template>

app/assets/javascripts/vue_shared/components/groups_list/groups_list_item.vue

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
TIMESTAMP_TYPE_CREATED_AT,
1616
TIMESTAMP_TYPE_UPDATED_AT,
1717
} from '~/vue_shared/components/resource_lists/constants';
18+
import GroupListItemPreventDeleteModal from './group_list_item_prevent_delete_modal.vue';
1819
1920
export default {
2021
i18n: {
@@ -33,6 +34,7 @@ export default {
3334
GlTruncateText,
3435
GlBadge,
3536
ListActions,
37+
GroupListItemPreventDeleteModal,
3638
GroupListItemDeleteModal,
3739
TimeAgoTooltip,
3840
GroupListItemInactiveBadge: () =>
@@ -131,6 +133,9 @@ export default {
131133
onActionDelete() {
132134
this.isDeleteModalVisible = true;
133135
},
136+
onModalChange(isVisible) {
137+
this.isDeleteModalVisible = isVisible;
138+
},
134139
},
135140
};
136141
</script>
@@ -240,15 +245,24 @@ export default {
240245
/>
241246
</div>
242247
243-
<group-list-item-delete-modal
244-
v-if="hasActionDelete"
245-
:visible="isDeleteModalVisible"
246-
:modal-id="modalId"
247-
:phrase="group.fullName"
248-
:confirm-loading="isActionDeleteLoading"
249-
:group="group"
250-
@confirm.prevent="$emit('delete', group)"
251-
@change="isDeleteModalVisible = arguments[0]"
252-
/>
248+
<template v-if="hasActionDelete">
249+
<group-list-item-prevent-delete-modal
250+
v-if="group.isLinkedToSubscription"
251+
:visible="isDeleteModalVisible"
252+
:modal-id="modalId"
253+
:group="group"
254+
@change="onModalChange"
255+
/>
256+
<group-list-item-delete-modal
257+
v-else
258+
:visible="isDeleteModalVisible"
259+
:modal-id="modalId"
260+
:phrase="group.fullName"
261+
:confirm-loading="isActionDeleteLoading"
262+
:group="group"
263+
@confirm.prevent="$emit('delete', group)"
264+
@change="onModalChange"
265+
/>
266+
</template>
253267
</li>
254268
</template>

app/assets/javascripts/vue_shared/components/web_ide_link.vue

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ export default {
5757
required: false,
5858
default: false,
5959
},
60+
needsToForkWithWebIde: {
61+
type: Boolean,
62+
required: false,
63+
default: false,
64+
},
6065
gitpodEnabled: {
6166
type: Boolean,
6267
required: false,
@@ -221,7 +226,7 @@ export default {
221226
webIdeAction() {
222227
if (!this.showWebIdeButton) return null;
223228
224-
const handleOptions = this.needsToFork
229+
const handleOptions = this.needsToForkWithWebIde
225230
? {
226231
handle: () => {
227232
if (this.disableForkModal) {

app/assets/javascripts/work_items/components/create_work_item.vue

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,6 @@ export default {
425425
edit-mode
426426
:autofocus="false"
427427
:full-path="fullPath"
428-
create-flow
429428
:show-buttons-below-field="false"
430429
:work-item-id="$options.NEW_WORK_ITEM_GID"
431430
:work-item-iid="$options.NEW_WORK_ITEM_IID"
@@ -468,7 +467,6 @@ export default {
468467
<template v-if="workItemLabels">
469468
<work-item-labels
470469
class="gl-mb-5 js-labels"
471-
create-flow
472470
:can-update="canUpdate"
473471
:full-path="fullPath"
474472
:work-item-id="workItem.id"

app/assets/javascripts/work_items/components/work_item_description.vue

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import EditedAt from '~/issues/show/components/edited.vue';
88
import Tracking from '~/tracking';
99
import MarkdownEditor from '~/vue_shared/components/markdown/markdown_editor.vue';
1010
import {
11+
newWorkItemId,
1112
newWorkItemFullPath,
1213
autocompleteDataSources,
1314
markdownPreviewPath,
@@ -64,11 +65,6 @@ export default {
6465
required: false,
6566
default: true,
6667
},
67-
createFlow: {
68-
type: Boolean,
69-
required: false,
70-
default: false,
71-
},
7268
workItemTypeName: {
7369
type: String,
7470
required: false,
@@ -119,6 +115,9 @@ export default {
119115
},
120116
},
121117
computed: {
118+
createFlow() {
119+
return this.workItemId === newWorkItemId(this.workItemType);
120+
},
122121
workItemFullPath() {
123122
return this.createFlow
124123
? newWorkItemFullPath(this.fullPath, this.workItemTypeName)

0 commit comments

Comments
 (0)