Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2022-10-25 00:09:22 +00:00
parent 76bbc06371
commit 7162e84914
130 changed files with 778 additions and 791 deletions

View file

@ -1255,68 +1255,68 @@ lib/api/entities/project.rb @gitlab-org/manage/manage-workspace/backend-approver
ee/lib/ee/api/entities/project.rb @gitlab-org/manage/manage-workspace/backend-approvers
[Compliance]
/ee/app/services/audit_events/build_service.rb @gitlab-org/manage/compliance
/ee/spec/services/audit_events/custom_audit_event_service_spec.rb @gitlab-org/manage/compliance
/app/models/audit_event.rb @gitlab-org/manage/compliance
/app/services/audit_event_service.rb @gitlab-org/manage/compliance
/app/services/concerns/audit_event_save_type.rb @gitlab-org/manage/compliance
/app/views/profiles/audit_log.html.haml @gitlab-org/manage/compliance
/ee/app/assets/javascripts/audit_events/components/audit_events_app.vue @gitlab-org/manage/compliance
/ee/app/assets/javascripts/audit_events/components/audit_events_export_button.vue @gitlab-org/manage/compliance
/ee/app/assets/javascripts/audit_events/components/audit_events_filter.vue @gitlab-org/manage/compliance
/ee/app/assets/javascripts/audit_events/components/audit_events_log.vue @gitlab-org/manage/compliance
/ee/app/assets/javascripts/audit_events/components/audit_events_stream.vue @gitlab-org/manage/compliance
/ee/app/assets/javascripts/audit_events/components/audit_events_table.vue @gitlab-org/manage/compliance
/ee/app/assets/javascripts/audit_events/components/tokens/shared/ @gitlab-org/manage/compliance
/ee/app/assets/javascripts/audit_events/init_audit_events.js @gitlab-org/manage/compliance
/ee/app/controllers/admin/audit_log_reports_controller.rb @gitlab-org/manage/compliance
/ee/app/controllers/admin/audit_logs_controller.rb @gitlab-org/manage/compliance
/ee/app/controllers/concerns/audit_events/audit_events_params.rb @gitlab-org/manage/compliance
/ee/app/controllers/groups/audit_events_controller.rb @gitlab-org/manage/compliance
/ee/app/controllers/projects/audit_events_controller.rb @gitlab-org/manage/compliance
/ee/app/finders/audit_event_finder.rb @gitlab-org/manage/compliance
/ee/app/graphql/types/audit_events/external_audit_event_destination_type.rb @gitlab-org/manage/compliance
/ee/app/helpers/audit_events_helper.rb @gitlab-org/manage/compliance
/ee/app/helpers/auditor_user_helper.rb @gitlab-org/manage/compliance
/ee/app/models/audit_events/external_audit_event_destination.rb @gitlab-org/manage/compliance
/ee/app/models/concerns/auditable.rb @gitlab-org/manage/compliance
/ee/app/models/ee/audit_event.rb @gitlab-org/manage/compliance
/ee/app/policies/audit_events/external_audit_event_destination_policy.rb @gitlab-org/manage/compliance
/ee/app/presenters/audit_event_presenter.rb @gitlab-org/manage/compliance
/ee/app/serializers/audit_event_entity.rb @gitlab-org/manage/compliance
/ee/app/serializers/audit_event_serializer.rb @gitlab-org/manage/compliance
/ee/app/services/ci/audit_variable_change_service.rb @gitlab-org/manage/compliance
/ee/app/services/ee/audit_event_service.rb @gitlab-org/manage/compliance
/ee/app/views/admin/users/_auditor_access_level_radio.html.haml @gitlab-org/manage/compliance
/ee/app/views/admin/users/_auditor_user_badge.html.haml @gitlab-org/manage/compliance
/ee/app/views/shared/icons/_icon_audit_events_purple.svg @gitlab-org/manage/compliance
/ee/app/views/shared/promotions/_promote_audit_events.html.haml @gitlab-org/manage/compliance
/ee/app/workers/audit_events/audit_event_streaming_worker.rb @gitlab-org/manage/compliance
/ee/config/events/1652263097_groups__audit_events__index_click_streams_tab.yml @gitlab-org/manage/compliance
/ee/config/events/202108302307_admin_audit_logs_index_click_date_range_button.yml @gitlab-org/manage/compliance
/ee/config/events/202108302307_groups__audit_events_controller_search_audit_event.yml @gitlab-org/manage/compliance
/ee/config/events/202108302307_profiles_controller_search_audit_event.yml @gitlab-org/manage/compliance
/ee/config/events/202108302307_projects__audit_events_controller_search_audit_event.yml @gitlab-org/manage/compliance
/ee/config/events/202111041910_admin__audit_logs_controller_search_audit_event.yml @gitlab-org/manage/compliance
/ee/config/feature_flags/development/audit_event_streaming_git_operations.yml @gitlab-org/manage/compliance
/ee/config/feature_flags/development/audit_log_group_level.yml @gitlab-org/manage/compliance
/ee/config/metrics/counts_28d/20210216183930_g_compliance_audit_events_monthly.yml @gitlab-org/manage/compliance
/ee/config/metrics/counts_28d/20210216183934_i_compliance_audit_events_monthly.yml @gitlab-org/manage/compliance
/ee/config/metrics/counts_28d/20210216183942_a_compliance_audit_events_api_monthly.yml @gitlab-org/manage/compliance
/ee/config/metrics/counts_28d/20211130085433_g_manage_compliance_audit_event_destinations.yml @gitlab-org/manage/compliance
/ee/config/metrics/counts_7d/20210216183906_g_compliance_audit_events.yml @gitlab-org/manage/compliance
/ee/config/metrics/counts_7d/20210216183908_i_compliance_audit_events.yml @gitlab-org/manage/compliance
/ee/config/metrics/counts_7d/20210216183912_a_compliance_audit_events_api.yml @gitlab-org/manage/compliance
/ee/config/metrics/counts_7d/20210216183928_g_compliance_audit_events_weekly.yml @gitlab-org/manage/compliance
/ee/config/metrics/counts_7d/20210216183932_i_compliance_audit_events_weekly.yml @gitlab-org/manage/compliance
/ee/config/metrics/counts_7d/20210216183940_a_compliance_audit_events_api_weekly.yml @gitlab-org/manage/compliance
/ee/config/metrics/counts_all/20211130085433_g_manage_compliance_audit_event_destinations.yml @gitlab-org/manage/compliance
/ee/lib/api/audit_events.rb @gitlab-org/manage/compliance
/ee/lib/audit/external_status_check_changes_auditor.rb @gitlab-org/manage/compliance
/ee/lib/audit/group_merge_request_approval_setting_changes_auditor.rb @gitlab-org/manage/compliance
/ee/lib/audit/group_push_rules_changes_auditor.rb @gitlab-org/manage/compliance
/ee/lib/ee/api/entities/audit_event.rb @gitlab-org/manage/compliance
/ee/lib/ee/audit/ @gitlab-org/manage/compliance
/ee/lib/ee/gitlab/audit/ @gitlab-org/manage/compliance
/lib/gitlab/audit/auditor.rb @gitlab-org/manage/compliance
/lib/gitlab/audit_json_logger.rb @gitlab-org/manage/compliance
/ee/app/services/audit_events/build_service.rb @gitlab-org/govern/compliance
/ee/spec/services/audit_events/custom_audit_event_service_spec.rb @gitlab-org/govern/compliance
/app/models/audit_event.rb @gitlab-org/govern/compliance
/app/services/audit_event_service.rb @gitlab-org/govern/compliance
/app/services/concerns/audit_event_save_type.rb @gitlab-org/govern/compliance
/app/views/profiles/audit_log.html.haml @gitlab-org/govern/compliance
/ee/app/assets/javascripts/audit_events/components/audit_events_app.vue @gitlab-org/govern/compliance
/ee/app/assets/javascripts/audit_events/components/audit_events_export_button.vue @gitlab-org/govern/compliance
/ee/app/assets/javascripts/audit_events/components/audit_events_filter.vue @gitlab-org/govern/compliance
/ee/app/assets/javascripts/audit_events/components/audit_events_log.vue @gitlab-org/govern/compliance
/ee/app/assets/javascripts/audit_events/components/audit_events_stream.vue @gitlab-org/govern/compliance
/ee/app/assets/javascripts/audit_events/components/audit_events_table.vue @gitlab-org/govern/compliance
/ee/app/assets/javascripts/audit_events/components/tokens/shared/ @gitlab-org/govern/compliance
/ee/app/assets/javascripts/audit_events/init_audit_events.js @gitlab-org/govern/compliance
/ee/app/controllers/admin/audit_log_reports_controller.rb @gitlab-org/govern/compliance
/ee/app/controllers/admin/audit_logs_controller.rb @gitlab-org/govern/compliance
/ee/app/controllers/concerns/audit_events/audit_events_params.rb @gitlab-org/govern/compliance
/ee/app/controllers/groups/audit_events_controller.rb @gitlab-org/govern/compliance
/ee/app/controllers/projects/audit_events_controller.rb @gitlab-org/govern/compliance
/ee/app/finders/audit_event_finder.rb @gitlab-org/govern/compliance
/ee/app/graphql/types/audit_events/external_audit_event_destination_type.rb @gitlab-org/govern/compliance
/ee/app/helpers/audit_events_helper.rb @gitlab-org/govern/compliance
/ee/app/helpers/auditor_user_helper.rb @gitlab-org/govern/compliance
/ee/app/models/audit_events/external_audit_event_destination.rb @gitlab-org/govern/compliance
/ee/app/models/concerns/auditable.rb @gitlab-org/govern/compliance
/ee/app/models/ee/audit_event.rb @gitlab-org/govern/compliance
/ee/app/policies/audit_events/external_audit_event_destination_policy.rb @gitlab-org/govern/compliance
/ee/app/presenters/audit_event_presenter.rb @gitlab-org/govern/compliance
/ee/app/serializers/audit_event_entity.rb @gitlab-org/govern/compliance
/ee/app/serializers/audit_event_serializer.rb @gitlab-org/govern/compliance
/ee/app/services/ci/audit_variable_change_service.rb @gitlab-org/govern/compliance
/ee/app/services/ee/audit_event_service.rb @gitlab-org/govern/compliance
/ee/app/views/admin/users/_auditor_access_level_radio.html.haml @gitlab-org/govern/compliance
/ee/app/views/admin/users/_auditor_user_badge.html.haml @gitlab-org/govern/compliance
/ee/app/views/shared/icons/_icon_audit_events_purple.svg @gitlab-org/govern/compliance
/ee/app/views/shared/promotions/_promote_audit_events.html.haml @gitlab-org/govern/compliance
/ee/app/workers/audit_events/audit_event_streaming_worker.rb @gitlab-org/govern/compliance
/ee/config/events/1652263097_groups__audit_events__index_click_streams_tab.yml @gitlab-org/govern/compliance
/ee/config/events/202108302307_admin_audit_logs_index_click_date_range_button.yml @gitlab-org/govern/compliance
/ee/config/events/202108302307_groups__audit_events_controller_search_audit_event.yml @gitlab-org/govern/compliance
/ee/config/events/202108302307_profiles_controller_search_audit_event.yml @gitlab-org/govern/compliance
/ee/config/events/202108302307_projects__audit_events_controller_search_audit_event.yml @gitlab-org/govern/compliance
/ee/config/events/202111041910_admin__audit_logs_controller_search_audit_event.yml @gitlab-org/govern/compliance
/ee/config/feature_flags/development/audit_event_streaming_git_operations.yml @gitlab-org/govern/compliance
/ee/config/feature_flags/development/audit_log_group_level.yml @gitlab-org/govern/compliance
/ee/config/metrics/counts_28d/20210216183930_g_compliance_audit_events_monthly.yml @gitlab-org/govern/compliance
/ee/config/metrics/counts_28d/20210216183934_i_compliance_audit_events_monthly.yml @gitlab-org/govern/compliance
/ee/config/metrics/counts_28d/20210216183942_a_compliance_audit_events_api_monthly.yml @gitlab-org/govern/compliance
/ee/config/metrics/counts_28d/20211130085433_g_manage_compliance_audit_event_destinations.yml @gitlab-org/govern/compliance
/ee/config/metrics/counts_7d/20210216183906_g_compliance_audit_events.yml @gitlab-org/govern/compliance
/ee/config/metrics/counts_7d/20210216183908_i_compliance_audit_events.yml @gitlab-org/govern/compliance
/ee/config/metrics/counts_7d/20210216183912_a_compliance_audit_events_api.yml @gitlab-org/govern/compliance
/ee/config/metrics/counts_7d/20210216183928_g_compliance_audit_events_weekly.yml @gitlab-org/govern/compliance
/ee/config/metrics/counts_7d/20210216183932_i_compliance_audit_events_weekly.yml @gitlab-org/govern/compliance
/ee/config/metrics/counts_7d/20210216183940_a_compliance_audit_events_api_weekly.yml @gitlab-org/govern/compliance
/ee/config/metrics/counts_all/20211130085433_g_manage_compliance_audit_event_destinations.yml @gitlab-org/govern/compliance
/ee/lib/api/audit_events.rb @gitlab-org/govern/compliance
/ee/lib/audit/external_status_check_changes_auditor.rb @gitlab-org/govern/compliance
/ee/lib/audit/group_merge_request_approval_setting_changes_auditor.rb @gitlab-org/govern/compliance
/ee/lib/audit/group_push_rules_changes_auditor.rb @gitlab-org/govern/compliance
/ee/lib/ee/api/entities/audit_event.rb @gitlab-org/govern/compliance
/ee/lib/ee/audit/ @gitlab-org/govern/compliance
/ee/lib/ee/gitlab/audit/ @gitlab-org/govern/compliance
/lib/gitlab/audit/auditor.rb @gitlab-org/govern/compliance
/lib/gitlab/audit_json_logger.rb @gitlab-org/govern/compliance

View file

@ -161,26 +161,6 @@ Layout/SpaceInsideParens:
- 'qa/spec/scenario/template_spec.rb'
- 'spec/dependencies/omniauth_saml_spec.rb'
- 'spec/factories/usage_data.rb'
- 'spec/features/boards/board_filters_spec.rb'
- 'spec/features/boards/user_visits_board_spec.rb'
- 'spec/features/dashboard/datetime_on_tooltips_spec.rb'
- 'spec/features/graphql_known_operations_spec.rb'
- 'spec/features/groups/activity_spec.rb'
- 'spec/features/groups/board_sidebar_spec.rb'
- 'spec/features/groups/empty_states_spec.rb'
- 'spec/features/groups/issues_spec.rb'
- 'spec/features/groups/milestone_spec.rb'
- 'spec/features/groups/milestones_sorting_spec.rb'
- 'spec/features/issues/create_issue_for_discussions_in_merge_request_spec.rb'
- 'spec/features/merge_request/user_edits_assignees_sidebar_spec.rb'
- 'spec/features/profiles/two_factor_auths_spec.rb'
- 'spec/features/projects/branches/user_views_branches_spec.rb'
- 'spec/features/projects/fork_spec.rb'
- 'spec/features/projects/issues/viewing_issues_with_external_authorization_enabled_spec.rb'
- 'spec/features/projects/jobs_spec.rb'
- 'spec/features/projects/pipeline_schedules_spec.rb'
- 'spec/features/projects/releases/user_views_edit_release_spec.rb'
- 'spec/features/projects/releases/user_views_releases_spec.rb'
- 'spec/finders/alert_management/http_integrations_finder_spec.rb'
- 'spec/finders/events_finder_spec.rb'
- 'spec/finders/labels_finder_spec.rb'

View file

@ -1,8 +1,9 @@
<script>
import { GlPagination, GlModal, GlSprintf } from '@gitlab/ui';
import { GlPagination } from '@gitlab/ui';
import { mapState, mapGetters } from 'vuex';
import { __, s__ } from '~/locale';
import { s__ } from '~/locale';
import Tracking from '~/tracking';
import DeletePackageModal from '~/packages_and_registries/shared/components/delete_package_modal.vue';
import PackagesListRow from '~/packages_and_registries/infrastructure_registry/shared/package_list_row.vue';
import PackagesListLoader from '~/packages_and_registries/shared/components/packages_list_loader.vue';
import { TRACKING_ACTIONS } from '~/packages_and_registries/shared/constants';
@ -11,8 +12,7 @@ import { TRACK_CATEGORY } from '~/packages_and_registries/infrastructure_registr
export default {
components: {
GlPagination,
GlModal,
GlSprintf,
DeletePackageModal,
PackagesListLoader,
PackagesListRow,
},
@ -42,22 +42,6 @@ export default {
isListEmpty() {
return !this.list || this.list.length === 0;
},
deletePackageName() {
return this.itemToBeDeleted?.name ?? '';
},
deleteModalActionPrimaryProps() {
return {
text: this.$options.i18n.modalAction,
attributes: {
variant: 'danger',
},
};
},
deleteModalActionCancelProps() {
return {
text: __('Cancel'),
};
},
tracking() {
return {
category: TRACK_CATEGORY,
@ -68,7 +52,6 @@ export default {
setItemToBeDeleted(item) {
this.itemToBeDeleted = { ...item };
this.track(TRACKING_ACTIONS.REQUEST_DELETE_PACKAGE);
this.$refs.packageListDeleteModal.show();
},
deleteItemConfirmation() {
this.$emit('package:delete', this.itemToBeDeleted);
@ -116,22 +99,11 @@ export default {
class="gl-w-full gl-mt-3"
/>
<gl-modal
ref="packageListDeleteModal"
size="sm"
modal-id="confirm-delete-package"
:action-primary="deleteModalActionPrimaryProps"
:action-cancel="deleteModalActionCancelProps"
<delete-package-modal
:item-to-be-deleted="itemToBeDeleted"
@ok="deleteItemConfirmation"
@cancel="deleteItemCanceled"
>
<template #modal-title>{{ $options.i18n.modalTitle }}</template>
<gl-sprintf :message="$options.i18n.deleteModalContent">
<template #name>
<strong>{{ deletePackageName }}</strong>
</template>
</gl-sprintf>
</gl-modal>
/>
</template>
</div>
</template>

View file

@ -1,6 +1,7 @@
<script>
import { GlAlert, GlModal, GlSprintf, GlKeysetPagination } from '@gitlab/ui';
import { __, s__, sprintf } from '~/locale';
import { GlAlert, GlKeysetPagination } from '@gitlab/ui';
import { s__, sprintf } from '~/locale';
import DeletePackageModal from '~/packages_and_registries/shared/components/delete_package_modal.vue';
import PackagesListRow from '~/packages_and_registries/package_registry/components/list/package_list_row.vue';
import PackagesListLoader from '~/packages_and_registries/shared/components/packages_list_loader.vue';
import {
@ -16,8 +17,7 @@ export default {
components: {
GlAlert,
GlKeysetPagination,
GlModal,
GlSprintf,
DeletePackageModal,
PackagesListLoader,
PackagesListRow,
},
@ -49,9 +49,6 @@ export default {
isListEmpty() {
return !this.list || this.list.length === 0;
},
deletePackageName() {
return this.itemToBeDeleted?.name ?? '';
},
tracking() {
const category = this.itemToBeDeleted
? packageTypeToTrackCategory(this.itemToBeDeleted.packageType)
@ -63,29 +60,6 @@ export default {
showPagination() {
return this.pageInfo.hasPreviousPage || this.pageInfo.hasNextPage;
},
showDeleteModal: {
get() {
return Boolean(this.itemToBeDeleted);
},
set(value) {
if (!value) {
this.itemToBeDeleted = null;
}
},
},
deleteModalActionPrimaryProps() {
return {
text: this.$options.i18n.modalAction,
attributes: {
variant: 'danger',
},
};
},
deleteModalActionCancelProps() {
return {
text: __('Cancel'),
};
},
errorTitleAlert() {
return sprintf(
s__('PackageRegistry|There was an error publishing a %{packageName} package'),
@ -113,18 +87,17 @@ export default {
deleteItemConfirmation() {
this.$emit('package:delete', this.itemToBeDeleted);
this.track(DELETE_PACKAGE_TRACKING_ACTION);
this.itemToBeDeleted = null;
},
deleteItemCanceled() {
this.track(CANCEL_DELETE_PACKAGE_TRACKING_ACTION);
this.itemToBeDeleted = null;
},
showConfirmationModal() {
this.setItemToBeDeleted(this.errorPackages[0]);
},
},
i18n: {
deleteModalContent: s__('PackageRegistry|You are about to delete %{name}, are you sure?'),
modalTitle: s__('PackageRegistry|Delete package'),
modalAction: s__('PackageRegistry|Permanently delete'),
errorMessageBodyAlert: s__(
'PackageRegistry|There was a timeout and the package was not published. Delete this package and try again.',
),
@ -169,22 +142,11 @@ export default {
/>
</div>
<gl-modal
v-model="showDeleteModal"
modal-id="confirm-delete-package"
size="sm"
:action-primary="deleteModalActionPrimaryProps"
:action-cancel="deleteModalActionCancelProps"
<delete-package-modal
:item-to-be-deleted="itemToBeDeleted"
@ok="deleteItemConfirmation"
@cancel="deleteItemCanceled"
>
<template #modal-title>{{ $options.i18n.modalTitle }}</template>
<gl-sprintf :message="$options.i18n.deleteModalContent">
<template #name>
<strong>{{ deletePackageName }}</strong>
</template>
</gl-sprintf>
</gl-modal>
/>
</template>
</div>
</template>

View file

@ -36,6 +36,7 @@ export default () => {
const attachMainComponent = () =>
new Vue({
el,
name: 'PackageRegistery',
router,
apolloProvider,
provide: {

View file

@ -0,0 +1,83 @@
<script>
import { GlModal, GlSprintf } from '@gitlab/ui';
import { __ } from '~/locale';
import {
DELETE_PACKAGE_MODAL_CONTENT_MESSAGE,
DELETE_PACKAGE_MODAL_TITLE,
DELETE_PACKAGE_MODAL_ACTION,
} from '~/packages_and_registries/shared/constants';
import { TRACK_CATEGORY } from '~/packages_and_registries/infrastructure_registry/shared/constants';
export default {
components: {
GlModal,
GlSprintf,
},
props: {
itemToBeDeleted: {
type: Object,
required: false,
default: null,
},
},
computed: {
isModalVisible() {
return Boolean(this.itemToBeDeleted);
},
deletePackageName() {
return this.itemToBeDeleted?.name ?? '';
},
deleteModalActionPrimaryProps() {
return {
text: this.$options.i18n.modalAction,
attributes: {
variant: 'danger',
},
};
},
deleteModalActionCancelProps() {
return {
text: __('Cancel'),
};
},
tracking() {
return {
category: TRACK_CATEGORY,
};
},
},
methods: {
deleteItemConfirmation() {
this.$emit('ok');
},
onChangeModalVisibility(isVisible) {
if (!isVisible) this.$emit('cancel');
},
},
i18n: {
modalTitle: DELETE_PACKAGE_MODAL_TITLE,
modalDescription: DELETE_PACKAGE_MODAL_CONTENT_MESSAGE,
modalAction: DELETE_PACKAGE_MODAL_ACTION,
},
};
</script>
<template>
<gl-modal
:visible="isModalVisible"
size="sm"
modal-id="confirm-delete-package"
:title="$options.i18n.modalTitle"
:action-primary="deleteModalActionPrimaryProps"
:action-cancel="deleteModalActionCancelProps"
@ok="deleteItemConfirmation"
@change="onChangeModalVisibility"
>
<template #modal-title>{{ $options.i18n.modalTitle }}</template>
<gl-sprintf :message="$options.i18n.modalDescription">
<template #name>
<strong>{{ deletePackageName }}</strong>
</template>
</gl-sprintf>
</gl-modal>
</template>

View file

@ -39,6 +39,12 @@ export const DELETE_PACKAGE_FILE_SUCCESS_MESSAGE = s__(
'PackageRegistry|Package asset deleted successfully',
);
export const DELETE_PACKAGE_MODAL_CONTENT_MESSAGE = s__(
'PackageRegistry|You are about to delete %{name}, are you sure?',
);
export const DELETE_PACKAGE_MODAL_TITLE = s__('PackageRegistry|Delete package');
export const DELETE_PACKAGE_MODAL_ACTION = s__('PackageRegistry|Permanently delete');
export const PACKAGE_ERROR_STATUS = 'error';
export const PACKAGE_DEFAULT_STATUS = 'default';
export const PACKAGE_HIDDEN_STATUS = 'hidden';

View file

@ -0,0 +1,215 @@
@import 'mixins_and_variables_and_functions';
$design-pin-diameter: 28px;
$design-pin-diameter-sm: 24px;
$t-gray-a-16-design-pin: rgba($black, 0.16);
.design-card-header {
background: transparent;
}
.design-checkbox {
position: absolute;
top: $gl-padding;
left: 30px;
}
.layout-page.design-detail-layout {
max-height: 100vh;
}
.design-detail {
background-color: rgba($modal-backdrop-bg, $modal-backdrop-opacity);
.with-performance-bar & {
top: 35px;
}
.comment-indicator {
border-radius: 50%;
}
.comment-indicator,
.frame .design-note-pin {
&:active {
cursor: grabbing;
}
}
}
.design-list-item {
height: 280px;
text-decoration: none;
.icon-version-status {
position: absolute;
right: 10px;
top: 10px;
}
.card-body {
height: 230px;
}
}
// This is temporary class to be removed after feature flag removal: https://gitlab.com/gitlab-org/gitlab/-/issues/223197
.design-list-item-new {
height: 210px;
}
.design-note-pin {
display: flex;
height: $design-pin-diameter;
width: $design-pin-diameter;
box-sizing: content-box;
background-color: var(--purple-500, $purple-500);
color: var(--white, $white);
font-weight: $gl-font-weight-bold;
border-radius: 50%;
z-index: 1;
padding: 0;
border: 0;
&.draft {
background-color: var(--orange-500, $orange-500);
}
&.resolved {
background-color: var(--gray-500, $gray-500);
}
&.on-image {
box-shadow: 0 2px 4px $t-gray-a-08, 0 0 1px $t-gray-a-24;
border: var(--white, $white) 2px solid;
will-change: transform, box-shadow, opacity;
// NOTE: verbose transition property required for Safari
transition: transform $general-hover-transition-duration linear, box-shadow $general-hover-transition-duration linear, opacity $general-hover-transition-duration linear;
transform-origin: 0 0;
transform: translate(-50%, -50%);
&:hover {
transform: scale(1.2) translate(-50%, -50%);
}
&:active {
box-shadow: 0 0 4px $t-gray-a-16-design-pin, 0 4px 12px $t-gray-a-16-design-pin;
}
&.inactive {
@include gl-opacity-5;
&:hover {
@include gl-opacity-10;
}
}
}
&.small {
position: absolute;
border: 1px solid var(--white, $white);
height: $design-pin-diameter-sm;
width: $design-pin-diameter-sm;
}
&.user-avatar {
top: 25px;
right: 8px;
}
}
.design-scaler-wrapper {
bottom: 0;
left: 50%;
transform: translateX(-50%);
}
.image-notes {
overflow-y: scroll;
padding: $gl-padding;
padding-top: 50px;
background-color: var(--white, $white);
flex-shrink: 0;
min-width: 400px;
flex-basis: 28%;
.link-inherit-color {
&:hover,
&:active,
&:focus {
color: inherit;
text-decoration: none;
}
}
.toggle-comments {
line-height: 20px;
border-top: 1px solid var(--border-color, $border-color);
&.expanded {
border-bottom: 1px solid var(--border-color, $border-color);
}
.toggle-comments-button:focus {
text-decoration: none;
color: var(--blue-600, $blue-600);
}
}
.design-note-pin {
margin-left: $gl-padding;
}
.design-discussion {
margin: $gl-padding 0;
&::before {
content: '';
border-left: 1px solid var(--gray-100, $gray-100);
position: absolute;
left: 28px;
top: -17px;
height: 17px;
}
.design-note {
padding: $gl-padding;
list-style: none;
transition: background $gl-transition-duration-medium $general-hover-transition-curve;
border-top-left-radius: $border-radius-default; // same border radius used by .bordered-box
border-top-right-radius: $border-radius-default;
a {
color: inherit;
}
.note-text a {
color: var(--blue-600, $blue-600);
}
}
.reply-wrapper {
padding: $gl-padding;
}
}
.reply-wrapper {
border-top: 1px solid var(--border-color, $border-color);
}
.new-discussion-disclaimer {
line-height: 20px;
}
}
@media (max-width: map-get($grid-breakpoints, lg)) {
.design-detail {
overflow-y: scroll;
}
.image-notes {
overflow-y: auto;
min-width: 100%;
flex-grow: 1;
flex-basis: auto;
}
}

View file

@ -1,9 +1,5 @@
@import 'mixins_and_variables_and_functions';
$design-pin-diameter: 28px;
$design-pin-diameter-sm: 24px;
$t-gray-a-16-design-pin: rgba($black, 0.16);
.description {
li {
position: relative;
@ -27,216 +23,6 @@ $t-gray-a-16-design-pin: rgba($black, 0.16);
}
}
.design-card-header {
background: transparent;
}
.design-checkbox {
position: absolute;
top: $gl-padding;
left: 30px;
}
.layout-page.design-detail-layout {
max-height: 100vh;
}
.design-detail {
background-color: rgba($modal-backdrop-bg, $modal-backdrop-opacity);
.with-performance-bar & {
top: 35px;
}
.comment-indicator {
border-radius: 50%;
}
.comment-indicator,
.frame .design-note-pin {
&:active {
cursor: grabbing;
}
}
}
.design-list-item {
height: 280px;
text-decoration: none;
.icon-version-status {
position: absolute;
right: 10px;
top: 10px;
}
.card-body {
height: 230px;
}
}
// This is temporary class to be removed after feature flag removal: https://gitlab.com/gitlab-org/gitlab/-/issues/223197
.design-list-item-new {
height: 210px;
}
.design-note-pin {
display: flex;
height: $design-pin-diameter;
width: $design-pin-diameter;
box-sizing: content-box;
background-color: var(--purple-500, $purple-500);
color: var(--white, $white);
font-weight: $gl-font-weight-bold;
border-radius: 50%;
z-index: 1;
padding: 0;
border: 0;
&.draft {
background-color: var(--orange-500, $orange-500);
}
&.resolved {
background-color: var(--gray-500, $gray-500);
}
&.on-image {
box-shadow: 0 2px 4px $t-gray-a-08, 0 0 1px $t-gray-a-24;
border: var(--white, $white) 2px solid;
will-change: transform, box-shadow, opacity;
// NOTE: verbose transition property required for Safari
transition: transform $general-hover-transition-duration linear, box-shadow $general-hover-transition-duration linear, opacity $general-hover-transition-duration linear;
transform-origin: 0 0;
transform: translate(-50%, -50%);
&:hover {
transform: scale(1.2) translate(-50%, -50%);
}
&:active {
box-shadow: 0 0 4px $t-gray-a-16-design-pin, 0 4px 12px $t-gray-a-16-design-pin;
}
&.inactive {
@include gl-opacity-5;
&:hover {
@include gl-opacity-10;
}
}
}
&.small {
position: absolute;
border: 1px solid var(--white, $white);
height: $design-pin-diameter-sm;
width: $design-pin-diameter-sm;
}
&.user-avatar {
top: 25px;
right: 8px;
}
}
.design-scaler-wrapper {
bottom: 0;
left: 50%;
transform: translateX(-50%);
}
.image-notes {
overflow-y: scroll;
padding: $gl-padding;
padding-top: 50px;
background-color: var(--white, $white);
flex-shrink: 0;
min-width: 400px;
flex-basis: 28%;
.link-inherit-color {
&:hover,
&:active,
&:focus {
color: inherit;
text-decoration: none;
}
}
.toggle-comments {
line-height: 20px;
border-top: 1px solid var(--border-color, $border-color);
&.expanded {
border-bottom: 1px solid var(--border-color, $border-color);
}
.toggle-comments-button:focus {
text-decoration: none;
color: var(--blue-600, $blue-600);
}
}
.design-note-pin {
margin-left: $gl-padding;
}
.design-discussion {
margin: $gl-padding 0;
&::before {
content: '';
border-left: 1px solid var(--gray-100, $gray-100);
position: absolute;
left: 28px;
top: -17px;
height: 17px;
}
.design-note {
padding: $gl-padding;
list-style: none;
transition: background $gl-transition-duration-medium $general-hover-transition-curve;
border-top-left-radius: $border-radius-default; // same border radius used by .bordered-box
border-top-right-radius: $border-radius-default;
a {
color: inherit;
}
.note-text a {
color: var(--blue-600, $blue-600);
}
}
.reply-wrapper {
padding: $gl-padding;
}
}
.reply-wrapper {
border-top: 1px solid var(--border-color, $border-color);
}
.new-discussion-disclaimer {
line-height: 20px;
}
}
@media (max-width: map-get($grid-breakpoints, lg)) {
.design-detail {
overflow-y: scroll;
}
.image-notes {
overflow-y: auto;
min-width: 100%;
flex-grow: 1;
flex-basis: auto;
}
}
.is-ghost {
opacity: 0.3;
pointer-events: none;

View file

@ -181,20 +181,51 @@ module SearchHelper
options
end
# search_context exposes a bit too much data to the frontend, this controls what data we share and when.
def search_group
# group gets derived from the Project in the project's scope
@group || @project&.group
end
def search_has_group?
search_group&.present? && search_group&.persisted?
end
def search_has_project?
@project&.present? && @project&.persisted?
end
def header_search_context
{}.tap do |hash|
hash[:group] = { id: search_context.group.id, name: search_context.group.name, full_name: search_context.group.full_name } if search_context.for_group?
hash[:group_metadata] = search_context.group_metadata if search_context.for_group?
if search_has_group?
hash[:group] = { id: search_group.id, name: search_group.name, full_name: search_group.full_name }
hash[:group_metadata] = { issues_path: issues_group_path(search_group), mr_path: merge_requests_group_path(search_group) }
end
hash[:project] = { id: search_context.project.id, name: search_context.project.name } if search_context.for_project?
hash[:project_metadata] = search_context.project_metadata if search_context.for_project?
if search_has_project?
hash[:project] = { id: @project.id, name: @project.name }
hash[:project_metadata] = { issues_path: project_issues_path(@project), mr_path: project_merge_requests_path(@project) }
hash[:code_search] = search_scope.nil?
hash[:ref] = @ref if @ref && can?(current_user, :download_code, @project)
end
hash[:scope] = search_context.scope if search_context.for_project? || search_context.for_group?
hash[:code_search] = search_context.code_search? if search_context.for_project? || search_context.for_group?
hash[:scope] = search_scope if search_has_project? || search_has_group?
hash[:for_snippets] = @snippet&.present? || @snippets&.any?
end
end
hash[:ref] = search_context.ref if can?(current_user, :download_code, search_context.project)
hash[:for_snippets] = search_context.for_snippets?
def search_scope
if current_controller?(:issues)
'issues'
elsif current_controller?(:merge_requests)
'merge_requests'
elsif current_controller?(:wikis)
'wiki_blobs'
elsif current_controller?(:commits)
'commits'
elsif current_controller?(:groups)
if %w(issues merge_requests).include?(controller.action_name)
controller.action_name
end
end
end

View file

@ -1,29 +0,0 @@
- strong_start = "<strong>".html_safe
- strong_end = "</strong>".html_safe
.modal.js-confirm-project-visiblity{ tabindex: -1 }
.modal-dialog
.modal-content
.modal-header
%h1.page-title.gl-font-size-h-display= _('Reduce this projects visibility?')
%button.close{ type: "button", "data-dismiss": "modal", "aria-label" => _('Close') }
%span{ "aria-hidden": "true" }= sprite_icon("close")
.modal-body
%p
- if @project.group
= _("You're about to reduce the visibility of the project %{strong_start}%{project_name}%{strong_end} in %{strong_start}%{group_name}%{strong_end}.").html_safe % { project_name: @project.name, group_name: @project.group.name, strong_start: strong_start, strong_end: strong_end }
- else
= _("You're about to reduce the visibility of the project %{strong_start}%{project_name}%{strong_end}.").html_safe % { project_name: @project.name, strong_start: strong_start, strong_end: strong_end }
%p
= _('Once you confirm and press "Reduce project visibility":')
%ul
%li
= _("Current forks will keep their visibility level.").html_safe
%label{ for: "confirm_path_input" }
= _("To confirm, type %{phrase_code}").html_safe % { phrase_code: '<code class="js-legacy-confirm-danger-match">%{phrase_name}</code>'.html_safe % { phrase_name: @project.full_path } }
.form-group
= text_field_tag 'confirm_path_input', '', class: 'form-control js-legacy-confirm-danger-input'
.form-actions
%button.btn.gl-button.btn-default.gl-mr-4{ type: "button", "data-dismiss": "modal" }
= _('Cancel')
= submit_tag _('Reduce project visibility'), class: "btn gl-button btn-danger js-legacy-confirm-danger-submit", disabled: true

View file

@ -2,6 +2,7 @@
- add_to_breadcrumbs _("Incidents"), project_incidents_path(@project)
- breadcrumb_title @issue.to_reference
- page_title "#{@issue.title} (#{@issue.to_reference})", _("Incidents")
- add_page_specific_style 'page_bundles/design_management'
- add_page_specific_style 'page_bundles/incidents'
- add_page_specific_style 'page_bundles/issues_show'

View file

@ -2,6 +2,7 @@
- add_to_breadcrumbs _("Issues"), project_issues_path(@project)
- breadcrumb_title @issue.to_reference
- page_title "#{@issue.title} (#{@issue.to_reference})", _("Issues")
- add_page_specific_style 'page_bundles/design_management'
- add_page_specific_style 'page_bundles/incidents'
- add_page_specific_style 'page_bundles/issues_show'
- add_page_specific_style 'page_bundles/work_items'

View file

@ -8,6 +8,7 @@
- page_card_attributes @merge_request.card_attributes
- suggest_changes_help_path = help_page_path('user/project/merge_requests/reviews/suggestions.md')
- mr_action = j(params[:tab].presence || 'show')
- add_page_specific_style 'page_bundles/design_management'
- add_page_specific_style 'page_bundles/merge_requests'
- add_page_specific_style 'page_bundles/pipelines'
- add_page_specific_style 'page_bundles/reports'

View file

@ -269,6 +269,7 @@ module Gitlab
config.assets.precompile << "page_bundles/clusters.css"
config.assets.precompile << "page_bundles/cycle_analytics.css"
config.assets.precompile << "page_bundles/dashboard_projects.css"
config.assets.precompile << "page_bundles/design_management.css"
config.assets.precompile << "page_bundles/dev_ops_reports.css"
config.assets.precompile << "page_bundles/editor.css"
config.assets.precompile << "page_bundles/environments.css"

View file

@ -476,7 +476,13 @@ data before running `pg_basebackup`.
WARNING:
Each Geo **secondary** site must have its own unique replication slot name.
Using the same slot name between two secondaries breaks PostgreSQL replication.
Using the same slot name between two secondaries breaks PostgreSQL replication.
NOTE:
Replication slot names must only contain lowercase letters, numbers, and the underscore character.
When prompted, enter the _plaintext_ password you set up for the `gitlab_replicator`
user in the first step.
```shell
gitlab-ctl replicate-geo-database \
@ -485,12 +491,6 @@ data before running `pg_basebackup`.
--sslmode=verify-ca
```
NOTE:
Replication slot names must only contain lowercase letters, numbers, and the underscore character.
When prompted, enter the _plaintext_ password you set up for the `gitlab_replicator`
user in the first step.
NOTE:
If you have generated custom PostgreSQL certificates, you will want to use
`--sslmode=verify-full` (or omit the `sslmode` line entirely), to benefit from the extra

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Container Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Container Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Container Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Container Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1605,7 +1605,7 @@ If successful, returns [`201`](index.md#status-codes) and the following response
Example request:
```shell
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/saml_group_links"
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --header "Content-Type: application/json" --data '{ "saml_group_name": "<your_saml_group_name`>", "access_level": <chosen_access_level> }' --url "https://gitlab.example.com/api/v4/groups/1/saml_group_links"
```
Example response:

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,7 +1,7 @@
---
stage: Package
group: Package
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.example/handbook/product/ux/technical-writing/#assignments
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---
# npm API **(FREE)**

View file

@ -1,7 +1,7 @@
---
stage: Package
group: Package
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about..example/handbook/product/ux/technical-writing/#assignments
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---
# NuGet API **(FREE)**

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Container Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
comments: false
description: 'Container Registry metadata database'

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -23,7 +23,7 @@ While any events could trigger an Audit Event, not all events should. In general
- Are tracking information for product feature adoption.
- Are covered in the direction page's discussion on [what is not planned](https://about.gitlab.com/direction/manage/compliance/audit-events/#what-is-not-planned-right-now).
If you have any questions, please reach out to `@gitlab-org/manage/compliance` to see if an Audit Event, or some other approach, may be best for your event.
If you have any questions, please reach out to `@gitlab-org/govern/compliance` to see if an Audit Event, or some other approach, may be best for your event.
## Audit Event Schemas
@ -120,7 +120,7 @@ end
Because every audit event is persisted to the database, consider the amount of data we expect to generate, and the rate of generation, for new
audit events. For new audit events that will produce a lot of data in the database, consider adding a
[streaming-only audit event](#event-streaming) instead. If you have questions about this, feel free to ping
`@gitlab-org/manage/compliance/backend` in an issue or merge request.
`@gitlab-org/govern/compliance/backend` in an issue or merge request.
## Audit Event instrumentation flows

View file

@ -71,7 +71,7 @@ main pieces of the desired UI and UX of a registry page. The most important comp
secondary content, right primary and secondary content, right action, and details slots.
- `metadata-item`: represents one piece of metadata, with an icon or a link. Used primarily in the
title area.
- `persisted-dropdown-selection`: represents a dropdown menu that stores the user selection in the
- `persisted-dropdown-selection`: represents a menu that stores the user selection in the
`localStorage`.
- `registry-search`: implements `gl-filtered-search` with a sorting section on the right.
- `title-area`: implements the top title area of the registry. Includes: a main title, an avatar, a

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Container Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,16 +1,18 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---
# Package Registry Development
# Package and container registry documentation
Development and Architectural documentation for the package registry
The documentation for package and container registry development is split into two groups.
## Package registry development
Development and architectural documentation for the package registry:
- [Debian repository structure](debian_repository.md)
- [Dependency proxy structure](dependency_proxy.md)
- [Cleanup policies](cleanup_policies.md)
- [Developing a new format](new_format_development.md)
- [Settings](settings.md)
- [Structure / Schema](structure.md)
@ -26,3 +28,11 @@ Development and Architectural documentation for the package registry
- [NuGet](../../api/packages/nuget.md)
- [PyPI](../../api/packages/pypi.md)
- [Ruby Gems](../../api/packages/rubygems.md)
## Container registry development
Development and architectural documentation for the container registry
- [Dependency proxy structure](dependency_proxy.md)
- [Settings](settings.md)
- [Structure / Schema](structure.md)

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -81,7 +81,7 @@ The following example shows `data-track-*` attributes assigned to a button:
| Attribute | Required | Description |
|:----------------------|:---------|:------------|
| `data-track-action` | true | Action the user is taking. Clicks must be prepended with `click` and activations must be prepended with `activate`. For example, focusing a form field is `activate_form_input` and clicking a button is `click_button`. Replaces `data-track-event`, which was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/290962) in GitLab 13.11. |
| `data-track-label` | false | The specific element or object to act on. This can be: the label of the element, for example, a tab labeled 'Create from template' for `create_from_template`; a unique identifier if no text is available, for example, `groups_dropdown_close` for closing the Groups dropdown in the top bar; or the name or title attribute of a record being created. |
| `data-track-label` | false | The specific element or object to act on. This can be: the label of the element, for example, a tab labeled 'Create from template' for `create_from_template`; a unique identifier if no text is available, for example, `groups_dropdown_close` for closing the Groups dropdown list in the top bar; or the name or title attribute of a record being created. |
| `data-track-property` | false | Any additional property of the element, or object being acted on. |
| `data-track-value` | false | Describes a numeric value (decimal) directly related to the event. This could be the value of an input. For example, `10` when clicking `internal` visibility. If omitted, this is the element's `value` property or `undefined`. For checkboxes, the default value is the element's checked attribute or `0` when unchecked. The value is parsed as numeric before sending the event. |
| `data-track-extra` | false | A key-value pair object passed as a valid JSON string. This attribute is added to the `extra` property in our [`gitlab_standard`](schemas.md#gitlab_standard) schema. |
@ -415,7 +415,7 @@ Use the following arguments:
|------------|---------------------------|---------------|-----------------------------------------------------------------------------------------------------------------------------------|
| `category` | String | | Area or aspect of the application. For example, `HealthCheckController` or `Lfs::FileTransformer`. |
| `action` | String | | The action being taken. For example, a controller action such as `create`, or an Active Record callback. |
| `label` | String | `nil` | The specific element or object to act on. This can be one of the following: the label of the element, for example, a tab labeled 'Create from template' for `create_from_template`; a unique identifier if no text is available, for example, `groups_dropdown_close` for closing the Groups dropdown in the top bar; or the name or title attribute of a record being created. |
| `label` | String | `nil` | The specific element or object to act on. This can be one of the following: the label of the element, for example, a tab labeled 'Create from template' for `create_from_template`; a unique identifier if no text is available, for example, `groups_dropdown_close` for closing the Groups dropdown list in the top bar; or the name or title attribute of a record being created. |
| `property` | String | `nil` | Any additional property of the element, or object being acted on. |
| `value` | Numeric | `nil` | Describes a numeric value (decimal) directly related to the event. This could be the value of an input. For example, `10` when clicking `internal` visibility. |
| `context` | Array\[SelfDescribingJSON\] | `nil` | An array of custom contexts to send with this event. Most events should not have any custom contexts. |

View file

@ -91,7 +91,7 @@ Each click event provides attributes that describe the event.
| --------- | ------- | -------- | ----------- |
| category | text | true | The page or backend section of the application. Unless infeasible, use the Rails page attribute by default in the frontend, and namespace + class name on the backend, for example, `Notes::CreateService`. |
| action | text | true | The action the user takes, or aspect that's being instrumented. The first word must describe the action or aspect. For example, clicks must be `click`, activations must be `activate`, creations must be `create`. Use underscores to describe what was acted on. For example, activating a form field is `activate_form_input`, an interface action like clicking on a dropdown list is `click_dropdown`, a behavior like creating a project record from the backend is `create_project`. |
| label | text | false | The specific element or object to act on. This can be one of the following: the label of the element, for example, a tab labeled 'Create from template' for `create_from_template`; a unique identifier if no text is available, for example, `groups_dropdown_close` for closing the Groups dropdown in the top bar; or the name or title attribute of a record being created. For Service Ping metrics adapted to Snowplow events, this should be the full metric [key path](../service_ping/metrics_dictionary.md#metric-key_path) taken from its definition file. |
| label | text | false | The specific element or object to act on. This can be one of the following: the label of the element, for example, a tab labeled 'Create from template' for `create_from_template`; a unique identifier if no text is available, for example, `groups_dropdown_close` for closing the Groups dropdown list in the top bar; or the name or title attribute of a record being created. For Service Ping metrics adapted to Snowplow events, this should be the full metric [key path](../service_ping/metrics_dictionary.md#metric-key_path) taken from its definition file. |
| property | text | false | Any additional property of the element, or object being acted on. For Service Ping metrics adapted to Snowplow events, this should be additional information or context that can help analyze the event. For example, in the case of `usage_activity_by_stage_monthly.create.merge_requests_users`, there are four different possible merge request actions: "create", "merge", "comment", and "close". Each of these would be a possible property value. |
| value | decimal | false | Describes a numeric value (decimal) directly related to the event. This could be the value of an input. For example, `10` when clicking `internal` visibility. |

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
type: reference
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Container Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Container Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Container Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Container Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Container Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Container Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Configure
group: Configure
stage: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Configure
group: Configure
stage: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -1,6 +1,6 @@
---
stage: Package
group: Package
group: Package Registry
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---

View file

@ -11634,9 +11634,6 @@ msgstr ""
msgid "Current Project"
msgstr ""
msgid "Current forks will keep their visibility level."
msgstr ""
msgid "Current node must be the primary node or you will be locking yourself out"
msgstr ""
@ -28284,9 +28281,6 @@ msgstr ""
msgid "Once removed, the fork relationship cannot be restored. This project will no longer be able to receive or send merge requests to the source project or other forks."
msgstr ""
msgid "Once you confirm and press \"Reduce project visibility\":"
msgstr ""
msgid "One more item"
msgid_plural "%d more items"
msgstr[0] ""
@ -33389,9 +33383,6 @@ msgstr ""
msgid "Reduce risk and triage fewer vulnerabilities with security training"
msgstr ""
msgid "Reduce this projects visibility?"
msgstr ""
msgid "Reference"
msgstr ""
@ -42168,9 +42159,6 @@ msgstr ""
msgid "To complete registration, we need additional details from you."
msgstr ""
msgid "To confirm, type %{phrase_code}"
msgstr ""
msgid "To connect GitHub repositories, you can use a %{personal_access_token_link}. When you create your Personal Access Token, you will need to select the %{code_open}repo%{code_close} scope, so we can display a list of your public and private repositories which are available to connect."
msgstr ""
@ -46933,6 +46921,9 @@ msgstr ""
msgid "Your account uses dedicated credentials for the \"%{group_name}\" group and can only be updated through SSO."
msgstr ""
msgid "Your action has been rejected because the namespace storage limit has been reached. For more information, visit %{doc_url}."
msgstr ""
msgid "Your action succeeded."
msgstr ""

View file

@ -3,7 +3,7 @@
require 'airborne'
module QA
RSpec.describe 'Package', :reliable, only: { subdomain: %i[staging staging-canary pre] } do
RSpec.describe 'Package', :reliable, only: { subdomain: %i[staging staging-canary pre] }, product_group: :container_registry do
include Support::API
include Support::Helpers::MaskToken

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
RSpec.describe 'GitLab Metrics', :aggregate_failures, :orchestrated, :metrics do
RSpec.describe 'GitLab Metrics', :aggregate_failures, :orchestrated, :metrics, product_group: :observability do
let(:web_uri) { URI.parse(Runtime::Scenario.gitlab_address) }
let(:endpoint) do
"#{web_uri.scheme}://#{web_uri.host}:#{port}#{path}"

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
RSpec.describe 'Package', :orchestrated, :skip_live_env do
RSpec.describe 'Package', :orchestrated, :skip_live_env, product_group: :container_registry do
describe 'Self-managed Container Registry' do
include Support::Helpers::MaskToken

View file

@ -2,7 +2,7 @@
module QA
RSpec.describe 'Package' do
describe 'Container Registry', only: { subdomain: %i[staging staging-canary pre] } do
describe 'Container Registry', only: { subdomain: %i[staging staging-canary pre] }, product_group: :container_registry do
let(:project) do
Resource::Project.fabricate_via_api! do |project|
project.name = 'project-with-registry'

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
RSpec.describe 'Package' do
RSpec.describe 'Package', product_group: :container_registry do
describe 'Container Registry Online Garbage Collection', :registry_gc, only: { subdomain: %i[pre] } do
let(:group) { Resource::Group.fabricate_via_api! }

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
RSpec.describe 'Package', :orchestrated, :registry, only: { pipeline: :main } do
RSpec.describe 'Package', :orchestrated, :registry, only: { pipeline: :main }, product_group: :container_registry do
describe 'Dependency Proxy' do
using RSpec::Parameterized::TableSyntax
include Support::Helpers::MaskToken

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
RSpec.describe 'Package', :orchestrated, :packages do
RSpec.describe 'Package', :orchestrated, :packages, product_group: :package_registry do
describe 'Terraform Module Registry' do
include Runtime::Fixtures

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
RSpec.describe 'Package', :orchestrated, :packages, :object_storage do
RSpec.describe 'Package', :orchestrated, :packages, :object_storage, product_group: :package_registry do
describe 'Composer Repository' do
include Runtime::Fixtures

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
RSpec.describe 'Package', :orchestrated, :packages, :object_storage, quarantine: {
RSpec.describe 'Package', :orchestrated, :packages, :object_storage, product_group: :package_registry, quarantine: {
only: { job: 'object_storage' },
issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/335981',
type: :bug

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
RSpec.describe 'Package', :orchestrated, :packages, :object_storage, :reliable do
RSpec.describe 'Package', :orchestrated, :packages, :object_storage, :reliable, product_group: :package_registry do
describe 'Generic Repository' do
include Runtime::Fixtures

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
RSpec.describe 'Package', :orchestrated, :packages, :object_storage do
RSpec.describe 'Package', :orchestrated, :packages, :object_storage, product_group: :package_registry do
describe 'Helm Registry' do
using RSpec::Parameterized::TableSyntax
include Runtime::Fixtures

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
RSpec.describe 'Package', :orchestrated, :packages, :object_storage, :reliable do
RSpec.describe 'Package', :orchestrated, :packages, :object_storage, :reliable, product_group: :package_registry do
describe 'Maven group level endpoint' do
include Runtime::Fixtures
include_context 'packages registry qa scenario'

View file

@ -6,7 +6,7 @@ module QA
name: 'maven_central_request_forwarding',
scope: :global
} do
describe 'Maven project level endpoint' do
describe 'Maven project level endpoint', product_group: :package_registry do
include Runtime::Fixtures
let(:group_id) { 'com.gitlab.qa' }

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
RSpec.describe 'Package', :orchestrated, :packages, :object_storage do
RSpec.describe 'Package', :orchestrated, :packages, :object_storage, product_group: :package_registry do
describe 'Maven Repository with Gradle' do
using RSpec::Parameterized::TableSyntax
include Runtime::Fixtures

View file

@ -2,7 +2,7 @@
module QA
RSpec.describe 'Package' do
describe 'Package Registry', :orchestrated, :reliable, :packages, :object_storage do
describe 'Package Registry', :orchestrated, :reliable, :packages, :object_storage, product_group: :package_registry do
describe 'npm instance level endpoint' do
using RSpec::Parameterized::TableSyntax
include Runtime::Fixtures

View file

@ -2,7 +2,7 @@
module QA
RSpec.describe 'Package' do
describe 'Package Registry', :orchestrated, :reliable, :packages, :object_storage do
describe 'Package Registry', :orchestrated, :reliable, :packages, :object_storage, product_group: :package_registry do
describe 'npm project level endpoint' do
using RSpec::Parameterized::TableSyntax
include Runtime::Fixtures

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
RSpec.describe 'Package', :orchestrated, :packages, :object_storage, :reliable do
RSpec.describe 'Package', :orchestrated, :packages, :object_storage, :reliable, product_group: :package_registry do
describe 'NuGet group level endpoint' do
using RSpec::Parameterized::TableSyntax
include Runtime::Fixtures

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
RSpec.describe 'Package', :orchestrated, :packages, :object_storage do
RSpec.describe 'Package', :orchestrated, :packages, :object_storage, product_group: :package_registry do
describe 'NuGet project level endpoint' do
include Support::Helpers::MaskToken

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
RSpec.describe 'Package', :orchestrated, :packages, :object_storage do
RSpec.describe 'Package', :orchestrated, :packages, :object_storage, product_group: :package_registry do
describe 'PyPI Repository' do
include Runtime::Fixtures
include Support::Helpers::MaskToken

View file

@ -3,7 +3,7 @@
module QA
RSpec.describe 'Package', :orchestrated, :packages, :object_storage,
feature_flag: { name: 'rubygem_packages', scope: :project } do
describe 'RubyGems Repository' do
describe 'RubyGems Repository', product_group: :package_registry do
include Runtime::Fixtures
let(:project) do

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
RSpec.describe 'Release' do
RSpec.describe 'Release', product_group: :release do
describe 'Deploy key creation' do
it 'user adds a deploy key', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/348023' do
Flow::Login.sign_in

View file

@ -3,7 +3,7 @@
require 'digest/sha1'
module QA
RSpec.describe 'Release', :runner do
RSpec.describe 'Release', :runner, product_group: :release do
describe 'Git clone using a deploy key' do
let(:runner_name) { "qa-runner-#{SecureRandom.hex(4)}" }
let(:repository_location) { project.repository_ssh_location }

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
RSpec.describe 'Release' do
RSpec.describe 'Release', product_group: :release do
describe 'Deploy token creation' do
it 'user adds a deploy token', testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/348028' do
Flow::Login.sign_in

View file

@ -2,7 +2,7 @@
module QA
RSpec.describe 'Configure' do
describe 'AutoDevOps Templates', only: { subdomain: %i[staging staging-canary] } do
describe 'AutoDevOps Templates', only: { subdomain: %i[staging staging-canary] }, product_group: :configure do
using RSpec::Parameterized::TableSyntax
# specify jobs to be disabled in the pipeline.

View file

@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
RSpec.describe 'Configure', only: { subdomain: %i[staging staging-canary] } do
RSpec.describe 'Configure', only: { subdomain: %i[staging staging-canary] }, product_group: :configure do
describe 'Auto DevOps with a Kubernetes Agent' do
let!(:app_project) do
Resource::Project.fabricate_via_api! do |project|
@ -98,7 +98,7 @@ module QA
content: <<~YAML
ci_access:
projects:
- id: #{project.path_with_namespace}
- id: #{project.path_with_namespace}
YAML
}
]

View file

@ -9,15 +9,12 @@ module QA
PRE_PROD_ADDRESS = 'https://pre.gitlab.com'
SENTRY_ENVIRONMENTS = {
staging: 'https://sentry.gitlab.net/gitlab/staginggitlabcom/?environment=gstg',
staging_canary: 'https://sentry.gitlab.net/gitlab/staginggitlabcom/?environment=gstg-cny',
staging_ref: 'https://sentry.gitlab.net/gitlab/staging-ref/?environment=gstg-ref',
pre: 'https://sentry.gitlab.net/gitlab/pregitlabcom/?environment=pre',
canary: 'https://sentry.gitlab.net/gitlab/gitlabcom/?environment=gprd',
production: 'https://sentry.gitlab.net/gitlab/gitlabcom/?environment=gprd-cny'
staging_ref: 'https://sentry.gitlab.net/gitlab/staging-ref/?environment=all',
pre: 'https://sentry.gitlab.net/gitlab/pregitlabcom/?environment=all',
production: 'https://sentry.gitlab.net/gitlab/gitlabcom/?environment=gprd'
}.freeze
KIBANA_ENVIRONMENTS = {
staging: 'https://nonprod-log.gitlab.net/',
staging_canary: 'https://nonprod-log.gitlab.net/',
canary: 'https://log.gprd.gitlab.net/',
production: 'https://log.gprd.gitlab.net/'
}.freeze
@ -30,7 +27,7 @@ module QA
errors = ["Correlation Id: #{correlation_id}"]
errors << "Sentry Url: #{sentry_uri}&query=correlation_id%3A%22#{correlation_id}%22" if sentry_uri
errors << "Kibana Url: #{kibana_uri}app/discover#/?_a=(query:(language:kuery,query:'json.correlation_id%20:%20#{correlation_id}'))&_g=(time:(from:now-24h%2Fh,to:now))" if kibana_uri
errors << "Kibana Url: #{kibana_uri}app/discover#/?_a=(query:(language:kuery,query:'json.correlation_id%20:%20#{correlation_id}'))&_g=(time:(from:now-24h,to:now))" if kibana_uri
errors.join("\n")
end
@ -53,11 +50,11 @@ module QA
case address
when STAGING_ADDRESS
canary? ? :staging_canary : :staging
:staging
when STAGING_REF_ADDRESS
:staging_ref
when PRODUCTION_ADDRESS
canary? ? :canary : :production
:production
when PRE_PROD_ADDRESS
:pre
else
@ -68,19 +65,6 @@ module QA
def self.logging_environment?
!logging_environment.nil?
end
def self.cookies
browser_cookies = Capybara.current_session.driver.browser.manage.all_cookies
# rubocop:disable Rails/IndexBy
browser_cookies.each_with_object({}) do |cookie, memo|
memo[cookie[:name]] = cookie
end
# rubocop:enable Rails/IndexBy
end
def self.canary?
cookies.dig('gitlab_canary', :value) == 'true'
end
end
end
end

Some files were not shown because too many files have changed in this diff Show more