Skip to content

Commit adb8e99

Browse files
author
GitLab Bot
committed
Add latest changes from gitlab-org/gitlab@master
1 parent 06b63cf commit adb8e99

File tree

30 files changed

+258
-87
lines changed

30 files changed

+258
-87
lines changed

CHANGELOG.md

+8
Original file line numberDiff line numberDiff line change
@@ -10201,6 +10201,10 @@ No changes.
1020110201
- [Alias read_namespace to access_namespace and move usages to new ability](gitlab-org/gitlab@61cdb4127143162a9bf9182f9c3c2d8421ee447f) by @Taucher2003 ([merge request](gitlab-org/gitlab!126625))
1020210202
- [Remove `custom_roles_on_groups` feature flag](gitlab-org/gitlab@ddb4b4399b8bb82793410005c5778a002ae409b9) ([merge request](gitlab-org/gitlab!132187)) **GitLab Enterprise Edition**
1020310203

10204+
## 16.4.7 (2024-09-20)
10205+
10206+
No changes.
10207+
1020410208
## 16.4.6 (2024-07-23)
1020510209

1020610210
### Added (2 changes)
@@ -11031,6 +11035,10 @@ No changes.
1103111035
- [Convert design_user_mentions.note_id to bigint for self-managed](gitlab-org/gitlab@08219da99fc356fecc4e9965fe1891baca4d10ff) ([merge request](gitlab-org/gitlab!129111))
1103211036
- [Migrate etag cache store from SharedState to Cache](gitlab-org/gitlab@6476298fcdcf77206fa768bcca6bd1e3c7994936) ([merge request](gitlab-org/gitlab!129050))
1103311037

11038+
## 16.3.9 (2024-09-20)
11039+
11040+
No changes.
11041+
1103411042
## 16.3.8 (2024-07-23)
1103511043

1103611044
### Added (1 change)

app/assets/javascripts/ci/job_details/components/job_log_top_bar.vue

+30-22
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ export default {
8888
};
8989
},
9090
computed: {
91+
hasJobLogTimestampsEnabled() {
92+
return this.jobLog.length > 0 && this.jobLog[0].time;
93+
},
9194
jobLogSize() {
9295
return sprintf(s__('Job|Showing last %{size} of log.'), {
9396
size: numberToHumanSize(this.size),
@@ -186,29 +189,34 @@ export default {
186189
</script>
187190
<template>
188191
<div class="top-bar gl-flex gl-items-center gl-justify-between">
189-
<!-- truncated log information -->
190-
<div class="gl-hidden gl-truncate sm:gl-block" data-testid="showing-last">
191-
<template v-if="isJobLogSizeVisible">
192-
{{ jobLogSize }}
193-
<gl-sprintf
194-
v-if="rawPath && isComplete && logViewerPath"
195-
:message="
196-
s__(
197-
'Job|%{rawLinkStart}View raw%{rawLinkEnd} or %{fullLinkStart}full log%{fullLinkEnd}.',
198-
)
199-
"
200-
>
201-
<template #rawLink="{ content }">
202-
<gl-link :href="rawPath">{{ content }}</gl-link>
203-
</template>
204-
<template #fullLink="{ content }">
205-
<gl-link :href="logViewerPath"> {{ content }}</gl-link>
206-
</template>
207-
</gl-sprintf>
208-
<gl-link v-else-if="rawPath" :href="rawPath">{{ s__('Job|View raw') }}</gl-link>
209-
</template>
192+
<div class="gl-hidden gl-truncate sm:gl-block">
193+
<!-- truncated log information -->
194+
<span data-testid="showing-last">
195+
<template v-if="isJobLogSizeVisible">
196+
{{ jobLogSize }}
197+
<gl-sprintf
198+
v-if="rawPath && isComplete && logViewerPath"
199+
:message="
200+
s__(
201+
'Job|%{rawLinkStart}View raw%{rawLinkEnd} or %{fullLinkStart}full log%{fullLinkEnd}.',
202+
)
203+
"
204+
>
205+
<template #rawLink="{ content }">
206+
<gl-link :href="rawPath">{{ content }}</gl-link>
207+
</template>
208+
<template #fullLink="{ content }">
209+
<gl-link :href="logViewerPath"> {{ content }}</gl-link>
210+
</template>
211+
</gl-sprintf>
212+
<gl-link v-else-if="rawPath" :href="rawPath">{{ s__('Job|View raw') }}</gl-link>
213+
</template>
214+
</span>
215+
<!-- eo truncated log information -->
216+
<span v-if="hasJobLogTimestampsEnabled">
217+
{{ s__('Job|Log timestamps in UTC.') }}
218+
</span>
210219
</div>
211-
<!-- eo truncated log information -->
212220

213221
<div class="controllers">
214222
<slot name="controllers"> </slot>

app/assets/javascripts/ci/job_details/store/utils.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ const TIME_START = 11;
2222
const TIME_END = 19;
2323
/**
2424
* Shortens timestamps in the form "2024-05-22T12:43:46.962646Z"
25-
* and extracts the time from them, example: "12:43:46Z"
25+
* and extracts the time from them, example: "12:43:46"
2626
*
2727
* If the timestamp appears malformed the full string is returned.
2828
*/
2929
const extractTime = (timestamp) => {
3030
if (timestamp.length === TIMESTAMP_LENGTH) {
31-
return `${timestamp.substring(TIME_START, TIME_END)}Z`;
31+
return `${timestamp.substring(TIME_START, TIME_END)}`;
3232
}
3333
return timestamp;
3434
};

app/assets/javascripts/diffs/components/commit_item.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ export default {
125125
:img-src="authorAvatar"
126126
:img-alt="authorName"
127127
:img-size="32"
128-
class="avatar-cell gl-my-2 gl-mr-4 gl-hidden sm:gl-block"
128+
class="avatar-cell gl-my-2 gl-mr-3 gl-hidden sm:gl-block"
129129
/>
130130
</div>
131131
<div

app/assets/javascripts/packages_and_registries/shared/components/container_registry_metadata_database_alert.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export default {
3535
<gl-sprintf
3636
:message="
3737
s__(
38-
'ContainerRegistry|The %{linkStart}next-generation container registry%{linkEnd} is now available for upgrade and testing on self-managed instances as a Beta feature. This upgraded registry supports online garbage collection, and has significant performance and reliability improvements.',
38+
'ContainerRegistry|The %{linkStart}next-generation container registry%{linkEnd} is now available for upgrade on self-managed instances. This upgraded registry supports online garbage collection, and has significant performance and reliability improvements.',
3939
)
4040
"
4141
>

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,11 @@ export default {
7676
:img-src="commit.author.avatarUrl"
7777
:img-alt="avatarLinkAltText"
7878
:img-size="32"
79-
class="gl-my-2 gl-mr-4"
79+
class="gl-my-2 gl-mr-3"
8080
/>
8181
<user-avatar-image
8282
v-else
83-
class="gl-my-2 gl-mr-4"
83+
class="gl-my-2 gl-mr-3"
8484
:img-src="commit.authorGravatar || $options.defaultAvatarUrl"
8585
:size="32"
8686
/>

app/assets/stylesheets/components/avatar.scss

-3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@ $avatar-sizes: (
44
line-height: 16px,
55
border-radius: $border-radius-small
66
),
7-
18: (
8-
border-radius: $border-radius-small
9-
),
107
20: (
118
border-radius: $border-radius-small
129
),

app/controllers/profiles_controller.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class ProfilesController < Profiles::ApplicationController
1111
end
1212

1313
feature_category :user_profile, [:reset_incoming_email_token, :reset_feed_token,
14-
:reset_static_object_token, :update_username, :join_early_access_program]
14+
:reset_static_object_token, :update_username]
1515

1616
def reset_incoming_email_token
1717
Users::UpdateService.new(current_user, user: @user).execute! do |user|
@@ -116,4 +116,4 @@ def user_params
116116
end
117117
end
118118

119-
ProfilesController.prepend_mod_with('ProfilesController')
119+
ProfilesController.prepend_mod

app/models/member.rb

+9
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ class Member < ApplicationRecord
5858
},
5959
if: :project_bot?
6060
validate :access_level_inclusion
61+
validate :user_is_not_placeholder
6162

6263
scope :with_invited_user_state, -> do
6364
joins('LEFT JOIN users as invited_user ON invited_user.email = members.invite_email')
@@ -611,6 +612,14 @@ def access_level_inclusion
611612
errors.add(:access_level, "is not included in the list")
612613
end
613614

615+
def user_is_not_placeholder
616+
if Gitlab::Import::PlaceholderUserCreator.placeholder_email_pattern.match?(invite_email)
617+
errors.add(:invite_email, _('must not be a placeholder email'))
618+
elsif user&.placeholder?
619+
errors.add(:user_id, _("must not be a placeholder user"))
620+
end
621+
end
622+
614623
def send_invite
615624
run_after_commit_or_now { Members::InviteMailer.initial_email(self, @raw_invite_token).deliver_later }
616625
end

app/views/projects/commits/_commit.html.haml

+4-4
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
- add_page_specific_style 'page_bundles/commit_description'
2525

2626
%li{ class: ["commit flex-row", ("js-toggle-container" if collapsible)], id: "commit-#{commit.short_id}" }
27-
.avatar-cell.gl-hidden.sm:gl-block
28-
= author_avatar(commit, size: 40, has_tooltip: false)
27+
.avatar-cell.gl-my-2
28+
= author_avatar(commit, size: 32, has_tooltip: false, css_class: 'gl-inline-block')
2929

3030
.commit-detail.flex-list.gl-flex.gl-justify-between.gl-items-center.gl-grow.gl-min-w-0
3131
.commit-content{ data: { testid: 'commit-content' } }
@@ -40,13 +40,13 @@
4040
= render Pajamas::ButtonComponent.new(icon: 'ellipsis_h',
4141
button_options: { class: 'button-ellipsis-horizontal text-expander js-toggle-button', data: { toggle: 'tooltip', container: 'body', collapse_title: toggle_commit_message, expand_title: toggle_commit_message }, title: toggle_commit_message, aria: { label: toggle_commit_message }})
4242

43-
.committer
43+
.committer.gl-text-sm
4444
- commit_author_link = commit_author_link(commit, avatar: false, size: 24)
4545
- commit_authored_timeago = time_ago_with_tooltip(commit.authored_date, placement: 'bottom')
4646
- if commit.different_committer? && commit.committer
4747
- commit_committer_link = commit_committer_link(commit)
4848
- commit_committer_timeago = time_ago_with_tooltip(commit.committed_date, placement: 'bottom')
49-
- commit_committer_avatar = commit_committer_avatar(commit.committer, size: 18, has_tooltip: false)
49+
- commit_committer_avatar = commit_committer_avatar(commit.committer, size: 16, has_tooltip: false)
5050
- commit_text = _('%{commit_author_link} authored %{commit_authored_timeago} and %{commit_committer_avatar} %{commit_committer_link} committed %{commit_committer_timeago}') % { commit_author_link: commit_author_link, commit_authored_timeago: commit_authored_timeago, commit_committer_avatar: commit_committer_avatar, commit_committer_link: commit_committer_link, commit_committer_timeago: commit_committer_timeago }
5151
- else
5252
- commit_text = _('%{commit_author_link} authored %{commit_authored_timeago}') % { commit_author_link: commit_author_link, commit_authored_timeago: commit_authored_timeago }

app/views/projects/pages/_no_domains.html.haml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
- can_add_new_domain = can_create_pages_custom_domains?(current_user, @project)
22

33
- if can?(current_user, :update_pages, @project)
4-
= render ::Layouts::CrudComponent.new(s_('GitLabPages|Domains')) do |c|
4+
= render ::Layouts::CrudComponent.new(s_('GitLabPages|Domains'), options: { class: 'gl-mt-5' }) do |c|
55
- c.with_actions do
66
- if can_add_new_domain
77
= render Pajamas::ButtonComponent.new(variant: :confirm, href: new_project_pages_domain_path(@project)) do

app/views/projects/tags/index.html.haml

+1-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@
3838
= render 'shared/errors/gitaly_unavailable', reason: s_('TagsPage|Unable to load tags')
3939

4040
- if show_empty_search
41-
= render Pajamas::EmptyStateComponent.new(svg_path: 'illustrations/empty-state/empty-search-md.svg',
42-
title: s_('TagsPage|Sorry, your filter produced no results'))
41+
= render ::Layouts::EmptyResultComponent.new(type: :search)
4342
- else
4443
%ul.flex-list.content-list
4544
= render partial: 'tag', collection: @tags

config/routes/profile.rb

-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
put :reset_feed_token
1313
put :reset_static_object_token
1414
put :update_username
15-
post :join_early_access_program
1615
end
1716

1817
scope module: :profiles do
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# frozen_string_literal: true
2+
3+
class RemovePlaceholderMemberships < Gitlab::Database::Migration[2.2]
4+
disable_ddl_transaction!
5+
6+
restrict_gitlab_migration gitlab_schema: :gitlab_main
7+
8+
milestone '17.5'
9+
10+
PLACEHOLDER_TYPE_ID = 15
11+
12+
def up
13+
connection.execute(
14+
<<~SQL
15+
DELETE FROM members
16+
WHERE members.id IN (
17+
SELECT members.id
18+
FROM members
19+
INNER JOIN users
20+
ON users.id = members.user_id
21+
WHERE users.user_type = #{PLACEHOLDER_TYPE_ID}
22+
);
23+
SQL
24+
)
25+
end
26+
27+
def down
28+
# no-op
29+
end
30+
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# frozen_string_literal: true
2+
3+
class ChangeUpcomingReconciliationsOrganizationIdDefault < Gitlab::Database::Migration[2.2]
4+
milestone '17.5'
5+
6+
DEFAULT_ORGANIZATION_ID = 1
7+
8+
def up
9+
change_column_default('upcoming_reconciliations', 'organization_id', nil)
10+
end
11+
12+
def down
13+
change_column_default('upcoming_reconciliations', 'organization_id', DEFAULT_ORGANIZATION_ID)
14+
end
15+
end

db/schema_migrations/20240913004547

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
c78273a01b142fa9d24fdbd1d4b276054997a69a034b3a02c6a73c3aac9743ff

db/schema_migrations/20240917153606

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
76481d2570ad6ecb9e6528b856d4724e0a375adf47fee84db1c17cf7273c227b

db/structure.sql

+1-1
Original file line numberDiff line numberDiff line change
@@ -19204,7 +19204,7 @@ CREATE TABLE upcoming_reconciliations (
1920419204
display_alert_from date NOT NULL,
1920519205
created_at timestamp with time zone NOT NULL,
1920619206
updated_at timestamp with time zone NOT NULL,
19207-
organization_id bigint DEFAULT 1 NOT NULL
19207+
organization_id bigint NOT NULL
1920819208
);
1920919209

1921019210
CREATE SEQUENCE upcoming_reconciliations_id_seq

0 commit comments

Comments
 (0)