Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
0d537d4128
commit
3a045e1e08
|
|
@ -2,26 +2,6 @@
|
|||
# Cop supports --autocorrect.
|
||||
Layout/FirstHashElementIndentation:
|
||||
Exclude:
|
||||
- 'ee/spec/services/projects/disable_deploy_key_service_spec.rb'
|
||||
- 'ee/spec/services/projects/enable_deploy_key_service_spec.rb'
|
||||
- 'ee/spec/services/projects/group_links/create_service_spec.rb'
|
||||
- 'ee/spec/services/projects/group_links/destroy_service_spec.rb'
|
||||
- 'ee/spec/services/projects/transfer_service_spec.rb'
|
||||
- 'ee/spec/services/security/security_orchestration_policies/create_pipeline_service_spec.rb'
|
||||
- 'ee/spec/services/security/token_revocation_service_spec.rb'
|
||||
- 'ee/spec/services/security/track_scan_service_spec.rb'
|
||||
- 'ee/spec/services/timebox_report_service_spec.rb'
|
||||
- 'lib/banzai/filter/playable_link_filter.rb'
|
||||
- 'lib/gitlab/application_rate_limiter.rb'
|
||||
- 'lib/gitlab/asciidoc.rb'
|
||||
- 'lib/gitlab/asciidoc/include_processor.rb'
|
||||
- 'lib/gitlab/auth/otp/strategies/forti_token_cloud.rb'
|
||||
- 'lib/gitlab/ci/config/entry/processable.rb'
|
||||
- 'lib/gitlab/database/migrations/observers/query_details.rb'
|
||||
- 'lib/gitlab/database/migrations/observers/transaction_duration.rb'
|
||||
- 'lib/gitlab/hook_data/release_builder.rb'
|
||||
- 'lib/gitlab/quick_actions/issuable_actions.rb'
|
||||
- 'qa/qa/resource/snippet.rb'
|
||||
- 'spec/controllers/concerns/issuable_collections_spec.rb'
|
||||
- 'spec/controllers/groups/group_members_controller_spec.rb'
|
||||
- 'spec/controllers/import/manifest_controller_spec.rb'
|
||||
|
|
|
|||
|
|
@ -1817,7 +1817,6 @@ Layout/LineLength:
|
|||
- 'ee/spec/support/shared_examples/services/vulnerabilities/calls_vulnerability_statistics_utility_services_in_order.rb'
|
||||
- 'ee/spec/tasks/geo_rake_spec.rb'
|
||||
- 'ee/spec/validators/json_schema_validator_spec.rb'
|
||||
- 'ee/spec/views/admin/application_settings/_elasticsearch_form.html.haml_spec.rb'
|
||||
- 'ee/spec/views/admin/application_settings/general.html.haml_spec.rb'
|
||||
- 'ee/spec/views/admin/dashboard/index.html.haml_spec.rb'
|
||||
- 'ee/spec/views/groups/security/discover/show.html.haml_spec.rb'
|
||||
|
|
|
|||
|
|
@ -137,7 +137,6 @@ RSpec/BeEq:
|
|||
- 'ee/spec/lib/gitlab/database/desired_sharding_key_spec.rb'
|
||||
- 'ee/spec/lib/gitlab/duo/chat/react_executor_spec.rb'
|
||||
- 'ee/spec/lib/gitlab/duo_workflow/client_spec.rb'
|
||||
- 'ee/spec/lib/gitlab/elastic/client_spec.rb'
|
||||
- 'ee/spec/lib/gitlab/elastic/document_reference_spec.rb'
|
||||
- 'ee/spec/lib/gitlab/elastic/elasticsearch_enabled_cache_spec.rb'
|
||||
- 'ee/spec/lib/gitlab/exclusive_lease_spec.rb'
|
||||
|
|
|
|||
|
|
@ -775,7 +775,6 @@ RSpec/ContextWording:
|
|||
- 'ee/spec/support/shared_examples/services/search_service_shared_examples.rb'
|
||||
- 'ee/spec/support/shared_examples/services/update_issuable_health_status_shared_examples.rb'
|
||||
- 'ee/spec/tasks/gitlab/license_rake_spec.rb'
|
||||
- 'ee/spec/views/admin/application_settings/_elasticsearch_form.html.haml_spec.rb'
|
||||
- 'ee/spec/views/groups/edit.html.haml_spec.rb'
|
||||
- 'ee/spec/views/layouts/header/_read_only_banner.html.haml_spec.rb'
|
||||
- 'ee/spec/views/profiles/preferences/show.html.haml_spec.rb'
|
||||
|
|
|
|||
|
|
@ -174,7 +174,6 @@ RSpec/ReceiveMessages:
|
|||
- 'ee/spec/support/shared_examples/models/concerns/verifiable_replicator_shared_examples.rb'
|
||||
- 'ee/spec/support/shared_examples/services/audit_events/streaming/headers_operations_shared_examples.rb'
|
||||
- 'ee/spec/support/shared_examples/services/base_sync_service_shared_examples.rb'
|
||||
- 'ee/spec/views/admin/application_settings/_elasticsearch_form.html.haml_spec.rb'
|
||||
- 'ee/spec/views/admin/dashboard/index.html.haml_spec.rb'
|
||||
- 'ee/spec/views/devise/registrations/new.html.haml_spec.rb'
|
||||
- 'ee/spec/views/devise/sessions/new.html.haml_spec.rb'
|
||||
|
|
|
|||
|
|
@ -29,7 +29,6 @@ RSpec/ReturnFromStub:
|
|||
- 'ee/spec/support/shared_examples/services/base_sync_service_shared_examples.rb'
|
||||
- 'ee/spec/support/shared_examples/services/geo_event_store_shared_examples.rb'
|
||||
- 'ee/spec/support/shared_examples/services/merge_merge_requests_shared_examples.rb'
|
||||
- 'ee/spec/views/admin/application_settings/_elasticsearch_form.html.haml_spec.rb'
|
||||
- 'ee/spec/views/admin/application_settings/_git_abuse_rate_limit.html.haml_spec.rb'
|
||||
- 'ee/spec/views/admin/groups/_form.html.haml_spec.rb'
|
||||
- 'ee/spec/views/shared/_mirror_update_button.html.haml_spec.rb'
|
||||
|
|
|
|||
|
|
@ -65,7 +65,6 @@ RSpec/VerifiedDoubleReference:
|
|||
- 'ee/spec/support/shared_examples/lib/ai/context/dependencies/config_files/config_file_shared_examples.rb'
|
||||
- 'ee/spec/support/shared_examples/lib/gitlab/llm/anthropic/client_shared_examples.rb'
|
||||
- 'ee/spec/tasks/gitlab/license_rake_spec.rb'
|
||||
- 'ee/spec/views/admin/application_settings/_elasticsearch_form.html.haml_spec.rb'
|
||||
- 'ee/spec/views/groups/settings/_enforce_ssh_certificates.html.haml_spec.rb'
|
||||
- 'ee/spec/workers/analytics/devops_adoption/create_snapshot_worker_spec.rb'
|
||||
- 'ee/spec/workers/analytics/value_stream_dashboard/count_worker_spec.rb'
|
||||
|
|
|
|||
|
|
@ -52,7 +52,6 @@ RSpec/VerifiedDoubles:
|
|||
- 'ee/spec/lib/gitlab/code_owners/groups_loader_spec.rb'
|
||||
- 'ee/spec/lib/gitlab/code_owners/users_loader_spec.rb'
|
||||
- 'ee/spec/lib/gitlab/custom_file_templates_spec.rb'
|
||||
- 'ee/spec/lib/gitlab/elastic/client_spec.rb'
|
||||
- 'ee/spec/lib/gitlab/expiring_subscription_message_spec.rb'
|
||||
- 'ee/spec/lib/gitlab/geo/git_ssh_proxy_spec.rb'
|
||||
- 'ee/spec/lib/gitlab/geo/log_cursor/lease_spec.rb'
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import IssueMilestone from '~/issuable/components/issue_milestone.vue';
|
|||
import {
|
||||
LINKED_CATEGORIES_MAP,
|
||||
STATE_CLOSED,
|
||||
WORK_ITEM_TYPE_VALUE_EPIC,
|
||||
WORK_ITEM_TYPE_NAME_EPIC,
|
||||
} from '~/work_items/constants';
|
||||
import WorkItemRelationshipIcons from '~/work_items/components/shared/work_item_relationship_icons.vue';
|
||||
import { ListType } from '../constants';
|
||||
|
|
@ -180,7 +180,7 @@ export default {
|
|||
return !this.disabled && this.list.listType !== ListType.closed;
|
||||
},
|
||||
workItemType() {
|
||||
return this.isEpicBoard ? WORK_ITEM_TYPE_VALUE_EPIC : this.item.type;
|
||||
return this.isEpicBoard ? WORK_ITEM_TYPE_NAME_EPIC : this.item.type;
|
||||
},
|
||||
workItemDrawerEnabled() {
|
||||
if (gon.current_user_use_work_items_view) return true;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import { __ } from '~/locale';
|
||||
import {
|
||||
WORK_ITEM_TYPE_VALUE_KEY_RESULT,
|
||||
WORK_ITEM_TYPE_VALUE_OBJECTIVE,
|
||||
WORK_ITEM_TYPE_VALUE_TASK,
|
||||
WORK_ITEM_TYPE_NAME_KEY_RESULT,
|
||||
WORK_ITEM_TYPE_NAME_OBJECTIVE,
|
||||
WORK_ITEM_TYPE_NAME_TASK,
|
||||
} from '~/work_items/constants';
|
||||
|
||||
export const STATUS_ALL = 'all';
|
||||
|
|
@ -47,9 +47,9 @@ export const issuableTypeText = {
|
|||
[TYPE_ALERT]: __('alert'),
|
||||
[TYPE_INCIDENT]: __('incident'),
|
||||
[TYPE_TEST_CASE]: __('test case'),
|
||||
[WORK_ITEM_TYPE_VALUE_KEY_RESULT]: __('key result'),
|
||||
[WORK_ITEM_TYPE_VALUE_OBJECTIVE]: __('objective'),
|
||||
[WORK_ITEM_TYPE_VALUE_TASK]: __('task'),
|
||||
[WORK_ITEM_TYPE_NAME_KEY_RESULT]: __('key result'),
|
||||
[WORK_ITEM_TYPE_NAME_OBJECTIVE]: __('objective'),
|
||||
[WORK_ITEM_TYPE_NAME_TASK]: __('task'),
|
||||
};
|
||||
|
||||
const SHIFT_KEY = 16;
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import {
|
|||
sprintfWorkItem,
|
||||
I18N_WORK_ITEM_ERROR_CREATING,
|
||||
I18N_WORK_ITEM_ERROR_DELETING,
|
||||
WORK_ITEM_TYPE_VALUE_TASK,
|
||||
WORK_ITEM_TYPE_NAME_TASK,
|
||||
} from '~/work_items/constants';
|
||||
import { renderGFM } from '~/behaviors/markdown/render_gfm';
|
||||
import eventHub from '../event_hub';
|
||||
|
|
@ -121,7 +121,7 @@ export default {
|
|||
},
|
||||
computed: {
|
||||
taskWorkItemTypeId() {
|
||||
return this.workItemTypes.find((type) => type.name === WORK_ITEM_TYPE_VALUE_TASK)?.id;
|
||||
return this.workItemTypes.find((type) => type.name === WORK_ITEM_TYPE_NAME_TASK)?.id;
|
||||
},
|
||||
issueGid() {
|
||||
return this.issueId ? convertToGraphQLId(TYPENAME_WORK_ITEM, this.issueId) : null;
|
||||
|
|
@ -382,7 +382,7 @@ export default {
|
|||
},
|
||||
showAlert(message, error) {
|
||||
createAlert({
|
||||
message: sprintfWorkItem(message, WORK_ITEM_TYPE_VALUE_TASK),
|
||||
message: sprintfWorkItem(message, WORK_ITEM_TYPE_NAME_TASK),
|
||||
error,
|
||||
captureError: true,
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
<script>
|
||||
import { GlDisclosureDropdown, GlDisclosureDropdownItem, GlTooltipDirective } from '@gitlab/ui';
|
||||
import { TYPE_INCIDENT, TYPE_ISSUE } from '~/issues/constants';
|
||||
import { WORK_ITEM_TYPE_VALUE_EPIC, WORK_ITEM_TYPE_VALUE_ISSUE } from '~/work_items/constants';
|
||||
import { WORK_ITEM_TYPE_NAME_EPIC, WORK_ITEM_TYPE_NAME_ISSUE } from '~/work_items/constants';
|
||||
import eventHub from '../event_hub';
|
||||
|
||||
const allowedTypes = [
|
||||
TYPE_INCIDENT,
|
||||
TYPE_ISSUE,
|
||||
WORK_ITEM_TYPE_VALUE_EPIC,
|
||||
WORK_ITEM_TYPE_VALUE_ISSUE,
|
||||
WORK_ITEM_TYPE_NAME_EPIC,
|
||||
WORK_ITEM_TYPE_NAME_ISSUE,
|
||||
];
|
||||
|
||||
export default {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
id: gitlab/pages
|
||||
title: Get started with GitLab Pages
|
||||
description: "Use GitLab Pages to deploy your static website. Follow these steps to create the configuration file, .gitlab-ci.yml, and start a pipeline to deploy the site."
|
||||
description: 'Use GitLab Pages to deploy your static website. Follow these steps to create the configuration file, .gitlab-ci.yml, and start a pipeline to deploy the site.'
|
||||
steps:
|
||||
- inputs:
|
||||
- label: Select your build image
|
||||
|
|
@ -10,42 +10,43 @@ steps:
|
|||
widget: text
|
||||
target: $BUILD_IMAGE
|
||||
required: true
|
||||
pattern: "(?:[a-z]+/)?([a-z]+)(?::[0-9]+)?"
|
||||
pattern: '(?:[a-z]+/)?([a-z]+)(?::[0-9]+)?'
|
||||
invalid-feedback: Please enter a valid docker image
|
||||
- widget: checklist
|
||||
items:
|
||||
- text: The application files are in the `public` folder
|
||||
help: GitLab Pages publishes files in the public folder only. If needed, change your jobs to send output to this folder.
|
||||
- label: Choose a directory to publish
|
||||
monospace: true
|
||||
required: true
|
||||
widget: text
|
||||
default: public
|
||||
description: 'Enter a project directory to publish. The default is "public".'
|
||||
target: $DIRECTORY
|
||||
template:
|
||||
# The Docker image that will be used to build your app
|
||||
image: $BUILD_IMAGE
|
||||
- inputs:
|
||||
- label: Installation Steps
|
||||
monospace: true
|
||||
description: "Enter steps to set up a local build environment, like installing dependencies."
|
||||
placeholder: npm ci
|
||||
widget: list
|
||||
target: $INSTALLATION_STEPS
|
||||
template:
|
||||
# Functions that should be executed before the build script is run
|
||||
before_script: $INSTALLATION_STEPS
|
||||
- inputs:
|
||||
- label: Build Steps
|
||||
monospace: true
|
||||
description: "Enter steps to build a production version of your application."
|
||||
widget: list
|
||||
target: $BUILD_STEPS
|
||||
template:
|
||||
|
||||
pages:
|
||||
script: $BUILD_STEPS
|
||||
|
||||
artifacts:
|
||||
paths:
|
||||
# The folder that contains the files to be exposed at the Page URL
|
||||
- public
|
||||
|
||||
create-pages:
|
||||
pages:
|
||||
# The folder that contains the files to be exposed at the Page URL
|
||||
publish: $DIRECTORY
|
||||
rules:
|
||||
# This ensures that only pushes to the default branch will trigger
|
||||
# a pages deploy
|
||||
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
|
||||
- inputs:
|
||||
- label: Installation Steps
|
||||
monospace: true
|
||||
description: 'Enter steps to set up a local build environment, like installing dependencies.'
|
||||
placeholder: npm ci
|
||||
widget: list
|
||||
target: $INSTALLATION_STEPS
|
||||
template:
|
||||
create-pages:
|
||||
# Functions that should be executed before the build script is run
|
||||
before_script: $INSTALLATION_STEPS
|
||||
- inputs:
|
||||
- label: Build Steps
|
||||
monospace: true
|
||||
description: 'Enter steps to build a production version of your application.'
|
||||
widget: list
|
||||
target: $BUILD_STEPS
|
||||
template:
|
||||
create-pages:
|
||||
script: $BUILD_STEPS
|
||||
|
|
|
|||
|
|
@ -1,28 +1,19 @@
|
|||
<script>
|
||||
import Vue from 'vue';
|
||||
import { GlDisclosureDropdownGroup, GlDisclosureDropdownItem, GlToast } from '@gitlab/ui';
|
||||
import { GlDisclosureDropdownGroup, GlDisclosureDropdownItem } from '@gitlab/ui';
|
||||
import { __ } from '~/locale';
|
||||
import Shortcuts from '~/behaviors/shortcuts/shortcuts';
|
||||
import {
|
||||
keysFor,
|
||||
PROJECT_FILES_GO_TO_PERMALINK,
|
||||
START_SEARCH_PROJECT_FILE,
|
||||
} from '~/behaviors/shortcuts/keybindings';
|
||||
import { Mousetrap } from '~/lib/mousetrap';
|
||||
import { keysFor, START_SEARCH_PROJECT_FILE } from '~/behaviors/shortcuts/keybindings';
|
||||
import { shouldDisableShortcuts } from '~/behaviors/shortcuts/shortcuts_toggle';
|
||||
import { getBaseURL, relativePathToAbsolute } from '~/lib/utils/url_utility';
|
||||
import { InternalEvents } from '~/tracking';
|
||||
import { FIND_FILE_BUTTON_CLICK } from '~/tracking/constants';
|
||||
import { lineState } from '~/blob/state';
|
||||
import { getPageParamValue, getPageSearchString } from '~/blob/utils';
|
||||
import { showBlameButton } from '~/repository/utils/storage_info_utils';
|
||||
|
||||
Vue.use(GlToast);
|
||||
import PermalinkDropdownItem from '~/repository/components/header_area/permalink_dropdown_item.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
GlDisclosureDropdownGroup,
|
||||
GlDisclosureDropdownItem,
|
||||
PermalinkDropdownItem,
|
||||
},
|
||||
inject: ['blobInfo'],
|
||||
props: {
|
||||
|
|
@ -35,21 +26,9 @@ export default {
|
|||
findFileShortcutKey() {
|
||||
return keysFor(START_SEARCH_PROJECT_FILE)[0];
|
||||
},
|
||||
permalinkShortcutKey() {
|
||||
return keysFor(PROJECT_FILES_GO_TO_PERMALINK)[0];
|
||||
},
|
||||
shortcutsDisabled() {
|
||||
return shouldDisableShortcuts();
|
||||
},
|
||||
absolutePermalinkPath() {
|
||||
const baseAbsolutePath = relativePathToAbsolute(this.permalinkPath, getBaseURL());
|
||||
if (lineState.currentLineNumber) {
|
||||
const page = getPageParamValue(lineState.currentLineNumber);
|
||||
const searchString = getPageSearchString(baseAbsolutePath, page);
|
||||
return `${baseAbsolutePath}${searchString}#L${lineState.currentLineNumber}`;
|
||||
}
|
||||
return baseAbsolutePath;
|
||||
},
|
||||
blameItem() {
|
||||
return {
|
||||
text: __('Blame'),
|
||||
|
|
@ -63,25 +42,11 @@ export default {
|
|||
return showBlameButton(this.blobInfo);
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
Mousetrap.bind(keysFor(PROJECT_FILES_GO_TO_PERMALINK), this.triggerCopyPermalink);
|
||||
},
|
||||
beforeDestroy() {
|
||||
Mousetrap.unbind(keysFor(PROJECT_FILES_GO_TO_PERMALINK));
|
||||
},
|
||||
methods: {
|
||||
handleFindFile() {
|
||||
InternalEvents.trackEvent(FIND_FILE_BUTTON_CLICK);
|
||||
Shortcuts.focusSearchFile();
|
||||
},
|
||||
triggerCopyPermalink() {
|
||||
const buttonElement = this.$refs.copyPermalinkButton.$el;
|
||||
buttonElement.click();
|
||||
this.onCopyPermalink();
|
||||
},
|
||||
onCopyPermalink() {
|
||||
this.$toast.show(__('Permalink copied to clipboard.'));
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
@ -109,22 +74,6 @@ export default {
|
|||
class="js-blob-blame-link sm:gl-hidden"
|
||||
data-testid="blame-dropdown-item"
|
||||
/>
|
||||
<gl-disclosure-dropdown-item
|
||||
ref="copyPermalinkButton"
|
||||
:aria-keyshortcuts="permalinkShortcutKey"
|
||||
data-testid="permalink"
|
||||
:data-clipboard-text="absolutePermalinkPath"
|
||||
data-clipboard-handle-tooltip="false"
|
||||
@action="onCopyPermalink"
|
||||
>
|
||||
<template #list-item>
|
||||
<span class="gl-flex gl-items-center gl-justify-between">
|
||||
<span>{{ __('Copy permalink') }}</span>
|
||||
<kbd v-if="permalinkShortcutKey && !shortcutsDisabled" class="flat">{{
|
||||
permalinkShortcutKey
|
||||
}}</kbd>
|
||||
</span>
|
||||
</template>
|
||||
</gl-disclosure-dropdown-item>
|
||||
<permalink-dropdown-item :permalink-path="permalinkPath" />
|
||||
</gl-disclosure-dropdown-group>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,78 @@
|
|||
<script>
|
||||
import Vue from 'vue';
|
||||
import { GlDisclosureDropdownItem, GlToast } from '@gitlab/ui';
|
||||
import { __ } from '~/locale';
|
||||
import { keysFor, PROJECT_FILES_GO_TO_PERMALINK } from '~/behaviors/shortcuts/keybindings';
|
||||
import { Mousetrap } from '~/lib/mousetrap';
|
||||
import { shouldDisableShortcuts } from '~/behaviors/shortcuts/shortcuts_toggle';
|
||||
import { getBaseURL, relativePathToAbsolute } from '~/lib/utils/url_utility';
|
||||
import { lineState } from '~/blob/state';
|
||||
import { getPageParamValue, getPageSearchString } from '~/blob/utils';
|
||||
|
||||
Vue.use(GlToast);
|
||||
|
||||
export default {
|
||||
components: {
|
||||
GlDisclosureDropdownItem,
|
||||
},
|
||||
props: {
|
||||
permalinkPath: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
permalinkShortcutKey() {
|
||||
return keysFor(PROJECT_FILES_GO_TO_PERMALINK)[0];
|
||||
},
|
||||
shortcutsDisabled() {
|
||||
return shouldDisableShortcuts();
|
||||
},
|
||||
absolutePermalinkPath() {
|
||||
const baseAbsolutePath = relativePathToAbsolute(this.permalinkPath, getBaseURL());
|
||||
if (lineState.currentLineNumber) {
|
||||
const page = getPageParamValue(lineState.currentLineNumber);
|
||||
const searchString = getPageSearchString(baseAbsolutePath, page);
|
||||
return `${baseAbsolutePath}${searchString}#L${lineState.currentLineNumber}`;
|
||||
}
|
||||
return baseAbsolutePath;
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
Mousetrap.bind(keysFor(PROJECT_FILES_GO_TO_PERMALINK), this.triggerCopyPermalink);
|
||||
},
|
||||
beforeDestroy() {
|
||||
Mousetrap.unbind(keysFor(PROJECT_FILES_GO_TO_PERMALINK));
|
||||
},
|
||||
methods: {
|
||||
triggerCopyPermalink() {
|
||||
const buttonElement = this.$refs.copyPermalinkButton.$el;
|
||||
buttonElement.click();
|
||||
this.onCopyPermalink();
|
||||
},
|
||||
onCopyPermalink() {
|
||||
this.$toast.show(__('Permalink copied to clipboard.'));
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<gl-disclosure-dropdown-item
|
||||
ref="copyPermalinkButton"
|
||||
:aria-keyshortcuts="permalinkShortcutKey"
|
||||
data-testid="permalink"
|
||||
:data-clipboard-text="absolutePermalinkPath"
|
||||
data-clipboard-handle-tooltip="false"
|
||||
@action="onCopyPermalink"
|
||||
>
|
||||
<template #list-item>
|
||||
<span class="gl-flex gl-items-center gl-justify-between">
|
||||
<span>{{ __('Copy permalink') }}</span>
|
||||
<kbd v-if="permalinkShortcutKey && !shortcutsDisabled" class="flat">{{
|
||||
permalinkShortcutKey
|
||||
}}</kbd>
|
||||
</span>
|
||||
</template>
|
||||
</gl-disclosure-dropdown-item>
|
||||
</template>
|
||||
|
|
@ -82,6 +82,9 @@ export default {
|
|||
codeTheme() {
|
||||
return gon?.user_color_scheme || CODE_THEME_DEFAULT;
|
||||
},
|
||||
showSecondLine() {
|
||||
return !this.query.project_id && this.projectPath;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
trackClipboardClick() {
|
||||
|
|
@ -95,40 +98,46 @@ export default {
|
|||
};
|
||||
</script>
|
||||
<template>
|
||||
<div class="gl-flex gl-items-center gl-leading-1">
|
||||
<file-icon :file-name="filePath" :size="16" aria-hidden="true" css-classes="gl-mr-3" />
|
||||
<div>
|
||||
<div class="gl-flex gl-items-center gl-leading-1">
|
||||
<file-icon :file-name="filePath" :size="16" aria-hidden="true" css-classes="gl-mr-3" />
|
||||
|
||||
<gl-link
|
||||
:href="fileUrl"
|
||||
:title="$options.i18n.fileLink"
|
||||
:class="codeTheme"
|
||||
@click="trackHeaderClick"
|
||||
>
|
||||
<template v-if="projectPath">
|
||||
<strong class="project-path-content" data-testid="project-path-content"
|
||||
>{{ projectPath }}:
|
||||
</strong>
|
||||
</template>
|
||||
|
||||
<strong
|
||||
v-safe-html="highlightedFilePath"
|
||||
class="file-name-content"
|
||||
data-testid="file-name-content"
|
||||
></strong>
|
||||
</gl-link>
|
||||
<clipboard-button
|
||||
:text="filePath"
|
||||
:gfm="gfmCopyText"
|
||||
:title="__('Copy file path')"
|
||||
category="tertiary"
|
||||
css-class="gl-mr-2"
|
||||
@click="trackClipboardClick"
|
||||
/>
|
||||
<gl-label
|
||||
v-if="isHeaderOnly"
|
||||
:background-color="$options.DEFAULT_HEADER_LABEL_COLOR"
|
||||
:title="$options.i18n.isHeaderOnly"
|
||||
class="gl-self-center"
|
||||
/>
|
||||
<gl-link
|
||||
:href="fileUrl"
|
||||
:title="$options.i18n.fileLink"
|
||||
class="gl-font-bold !gl-text-link"
|
||||
:class="codeTheme"
|
||||
@click="trackHeaderClick"
|
||||
>
|
||||
<strong
|
||||
v-safe-html="highlightedFilePath"
|
||||
class="file-name-content"
|
||||
data-testid="file-name-content"
|
||||
></strong>
|
||||
</gl-link>
|
||||
<clipboard-button
|
||||
:text="filePath"
|
||||
:gfm="gfmCopyText"
|
||||
:title="__('Copy file path')"
|
||||
size="small"
|
||||
category="tertiary"
|
||||
css-class="gl-mr-2"
|
||||
@click="trackClipboardClick"
|
||||
/>
|
||||
<gl-label
|
||||
v-if="isHeaderOnly"
|
||||
:background-color="$options.DEFAULT_HEADER_LABEL_COLOR"
|
||||
:title="$options.i18n.isHeaderOnly"
|
||||
class="gl-self-center"
|
||||
/>
|
||||
</div>
|
||||
<div v-if="showSecondLine">
|
||||
<gl-link
|
||||
:href="projectPath"
|
||||
class="gl-text-sm !gl-text-subtle"
|
||||
data-testid="project-path-content"
|
||||
>{{ projectPath }}
|
||||
</gl-link>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ export const TARGET_TYPES = [
|
|||
// eslint-disable-next-line @gitlab/require-i18n-strings
|
||||
id: 'Issue',
|
||||
value: TODO_TARGET_TYPE_ISSUE,
|
||||
title: s__('Todos|Issue or Epic'),
|
||||
title: s__('Todos|Issue'),
|
||||
},
|
||||
{
|
||||
id: 'MergeRequest',
|
||||
|
|
|
|||
|
|
@ -79,11 +79,11 @@ export const TOKEN_TITLE_MY_REACTION = __('My reaction');
|
|||
export const TOKEN_TITLE_ORGANIZATION = s__('Crm|Organization');
|
||||
export const TOKEN_TITLE_RELEASE = __('Release');
|
||||
export const TOKEN_TITLE_REVIEWER = s__('SearchToken|Reviewer');
|
||||
export const TOKEN_TITLE_SOURCE_BRANCH = __('Source Branch');
|
||||
export const TOKEN_TITLE_SOURCE_BRANCH = __('Source branch');
|
||||
export const TOKEN_TITLE_STATUS = __('Status');
|
||||
export const TOKEN_TITLE_JOBS_RUNNER_TYPE = s__('Job|Runner type');
|
||||
export const TOKEN_TITLE_JOBS_SOURCE = s__('Job|Source');
|
||||
export const TOKEN_TITLE_TARGET_BRANCH = __('Target Branch');
|
||||
export const TOKEN_TITLE_TARGET_BRANCH = __('Target branch');
|
||||
export const TOKEN_TITLE_TYPE = __('Type');
|
||||
export const TOKEN_TITLE_UPDATED = __('Updated');
|
||||
export const TOKEN_TITLE_VERSION = __('Version');
|
||||
|
|
|
|||
|
|
@ -23,8 +23,8 @@ import {
|
|||
STATE_OPEN,
|
||||
STATE_CLOSED,
|
||||
LINKED_CATEGORIES_MAP,
|
||||
WORK_ITEM_TYPE_VALUE_INCIDENT,
|
||||
WORK_ITEM_TYPE_VALUE_ISSUE,
|
||||
WORK_ITEM_TYPE_NAME_INCIDENT,
|
||||
WORK_ITEM_TYPE_NAME_ISSUE,
|
||||
WORK_ITEM_TYPE_ENUM_INCIDENT,
|
||||
WORK_ITEM_TYPE_ENUM_ISSUE,
|
||||
} from '~/work_items/constants';
|
||||
|
|
@ -122,14 +122,14 @@ export default {
|
|||
},
|
||||
isIncident() {
|
||||
return (
|
||||
this.issuable.workItemType?.name === WORK_ITEM_TYPE_VALUE_INCIDENT ||
|
||||
this.issuable.workItemType?.name === WORK_ITEM_TYPE_NAME_INCIDENT ||
|
||||
this.issuable?.type === WORK_ITEM_TYPE_ENUM_INCIDENT
|
||||
);
|
||||
},
|
||||
isServiceDeskIssue() {
|
||||
return (
|
||||
(this.issuable?.type === WORK_ITEM_TYPE_ENUM_ISSUE ||
|
||||
this.issuable.workItemType?.name === WORK_ITEM_TYPE_VALUE_ISSUE) &&
|
||||
this.issuable.workItemType?.name === WORK_ITEM_TYPE_NAME_ISSUE) &&
|
||||
this.issuable?.author?.username === SUPPORT_BOT_USERNAME
|
||||
);
|
||||
},
|
||||
|
|
|
|||
|
|
@ -54,8 +54,8 @@ import {
|
|||
WORK_ITEM_TYPE_NAME_LOWERCASE_MAP,
|
||||
WORK_ITEM_TYPE_NAME_MAP,
|
||||
WORK_ITEM_TYPE_VALUE_MAP,
|
||||
WORK_ITEM_TYPE_VALUE_INCIDENT,
|
||||
WORK_ITEM_TYPE_VALUE_EPIC,
|
||||
WORK_ITEM_TYPE_NAME_INCIDENT,
|
||||
WORK_ITEM_TYPE_NAME_EPIC,
|
||||
} from '../constants';
|
||||
import createWorkItemMutation from '../graphql/create_work_item.mutation.graphql';
|
||||
import namespaceWorkItemTypesQuery from '../graphql/namespace_work_item_types.query.graphql';
|
||||
|
|
@ -342,7 +342,7 @@ export default {
|
|||
// detail view instead. Since the legacy view doesn't support setting a parent
|
||||
// we need to hide this attribute here until the migration has been finished.
|
||||
// https://gitlab.com/gitlab-org/gitlab/-/issues/502823
|
||||
if (this.selectedWorkItemTypeName === WORK_ITEM_TYPE_VALUE_INCIDENT) {
|
||||
if (this.selectedWorkItemTypeName === WORK_ITEM_TYPE_NAME_INCIDENT) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -504,7 +504,7 @@ export default {
|
|||
);
|
||||
},
|
||||
shouldDatesRollup() {
|
||||
return this.selectedWorkItemTypeName === WORK_ITEM_TYPE_VALUE_EPIC;
|
||||
return this.selectedWorkItemTypeName === WORK_ITEM_TYPE_NAME_EPIC;
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import { s__, __ } from '~/locale';
|
|||
import { capitalizeFirstCharacter } from '~/lib/utils/text_utility';
|
||||
import {
|
||||
STATE_OPEN,
|
||||
WORK_ITEM_TYPE_VALUE_TASK,
|
||||
WORK_ITEM_TYPE_NAME_TASK,
|
||||
WIDGET_TYPE_EMAIL_PARTICIPANTS,
|
||||
i18n,
|
||||
} from '~/work_items/constants';
|
||||
|
|
@ -206,7 +206,7 @@ export default {
|
|||
return this.isNoteInternal ? this.$options.i18n.addInternalNote : this.commentButtonText;
|
||||
},
|
||||
docsLinks() {
|
||||
return this.workItemType === WORK_ITEM_TYPE_VALUE_TASK
|
||||
return this.workItemType === WORK_ITEM_TYPE_NAME_TASK
|
||||
? {
|
||||
confidential_issues_docs_path: DOCS_WORK_ITEM_CONFIDENTIAL_TASKS_PATH,
|
||||
locked_discussion_docs_path: DOCS_WORK_ITEM_LOCKED_TASKS_PATH,
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import { GlLink, GlIcon } from '@gitlab/ui';
|
|||
import { __, sprintf } from '~/locale';
|
||||
import { helpPagePath } from '~/helpers/help_page_helper';
|
||||
import { issuableTypeText } from '~/issues/constants';
|
||||
import { WORK_ITEM_TYPE_VALUE_TASK } from '~/work_items/constants';
|
||||
import { WORK_ITEM_TYPE_NAME_TASK } from '~/work_items/constants';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
|
@ -14,7 +14,7 @@ export default {
|
|||
workItemType: {
|
||||
required: false,
|
||||
type: String,
|
||||
default: WORK_ITEM_TYPE_VALUE_TASK,
|
||||
default: WORK_ITEM_TYPE_NAME_TASK,
|
||||
},
|
||||
isProjectArchived: {
|
||||
required: false,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script>
|
||||
import { GlPopover, GlLoadingIcon, GlTooltipDirective, GlLink } from '@gitlab/ui';
|
||||
import { n__ } from '~/locale';
|
||||
import { WORK_ITEM_TYPE_VALUE_ISSUE, STATE_CLOSED } from '~/work_items/constants';
|
||||
import { WORK_ITEM_TYPE_NAME_ISSUE, STATE_CLOSED } from '~/work_items/constants';
|
||||
import WorkItemRelationshipPopoverMetadata from 'ee_else_ce/work_items/components/shared/work_item_relationship_popover_metadata.vue';
|
||||
import WorkItemTypeIcon from '../work_item_type_icon.vue';
|
||||
|
||||
|
|
@ -71,7 +71,7 @@ export default {
|
|||
.slice(0, defaultDisplayLimit);
|
||||
},
|
||||
moreItemsLink() {
|
||||
return `${this.workItemWebUrl}#${this.workItemType === WORK_ITEM_TYPE_VALUE_ISSUE ? 'related-issues' : 'linkeditems'}`;
|
||||
return `${this.workItemWebUrl}#${this.workItemType === WORK_ITEM_TYPE_NAME_ISSUE ? 'related-issues' : 'linkeditems'}`;
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -26,12 +26,12 @@ import WorkItemChangeTypeModal from 'ee_else_ce/work_items/components/work_item_
|
|||
import {
|
||||
sprintfWorkItem,
|
||||
BASE_ALLOWED_CREATE_TYPES,
|
||||
WORK_ITEM_TYPE_VALUE_KEY_RESULT,
|
||||
WORK_ITEM_TYPE_VALUE_OBJECTIVE,
|
||||
WORK_ITEM_TYPE_NAME_KEY_RESULT,
|
||||
WORK_ITEM_TYPE_NAME_OBJECTIVE,
|
||||
WORK_ITEM_TYPE_ENUM_EPIC,
|
||||
WORK_ITEM_TYPE_VALUE_EPIC,
|
||||
WORK_ITEM_TYPE_NAME_EPIC,
|
||||
WORK_ITEM_TYPE_VALUE_MAP,
|
||||
WORK_ITEM_TYPE_VALUE_ISSUE,
|
||||
WORK_ITEM_TYPE_NAME_ISSUE,
|
||||
} from '../constants';
|
||||
import updateWorkItemMutation from '../graphql/update_work_item.mutation.graphql';
|
||||
import updateWorkItemNotificationsMutation from '../graphql/update_work_item_notifications.mutation.graphql';
|
||||
|
|
@ -256,7 +256,7 @@ export default {
|
|||
return data.workspace?.workItemTypes?.nodes;
|
||||
},
|
||||
skip() {
|
||||
return !this.canUpdateMetadata || this.workItemType !== WORK_ITEM_TYPE_VALUE_KEY_RESULT;
|
||||
return !this.canUpdateMetadata || this.workItemType !== WORK_ITEM_TYPE_NAME_KEY_RESULT;
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
@ -289,7 +289,7 @@ export default {
|
|||
};
|
||||
},
|
||||
newRelatedItemLabel() {
|
||||
return this.workItemType === WORK_ITEM_TYPE_VALUE_EPIC
|
||||
return this.workItemType === WORK_ITEM_TYPE_NAME_EPIC
|
||||
? sprintfWorkItem(s__('WorkItem|New related %{workItemType}'), this.workItemType)
|
||||
: s__('WorkItem|New related item');
|
||||
},
|
||||
|
|
@ -304,7 +304,7 @@ export default {
|
|||
return sprintfWorkItem(message, this.workItemType);
|
||||
},
|
||||
canPromoteToObjective() {
|
||||
return this.canUpdateMetadata && this.workItemType === WORK_ITEM_TYPE_VALUE_KEY_RESULT;
|
||||
return this.canUpdateMetadata && this.workItemType === WORK_ITEM_TYPE_NAME_KEY_RESULT;
|
||||
},
|
||||
confidentialItem() {
|
||||
return {
|
||||
|
|
@ -323,7 +323,7 @@ export default {
|
|||
return this.isDiscussionLocked ? __('Unlock discussion') : __('Lock discussion');
|
||||
},
|
||||
objectiveWorkItemTypeId() {
|
||||
return this.workItemTypes.find((type) => type.name === WORK_ITEM_TYPE_VALUE_OBJECTIVE).id;
|
||||
return this.workItemTypes.find((type) => type.name === WORK_ITEM_TYPE_NAME_OBJECTIVE).id;
|
||||
},
|
||||
showDropdownTooltip() {
|
||||
return !this.isDropdownVisible ? this.$options.i18n.moreActions : '';
|
||||
|
|
@ -344,7 +344,7 @@ export default {
|
|||
};
|
||||
},
|
||||
isEpic() {
|
||||
return this.workItemType === WORK_ITEM_TYPE_VALUE_EPIC;
|
||||
return this.workItemType === WORK_ITEM_TYPE_NAME_EPIC;
|
||||
},
|
||||
confidentialityToggledText() {
|
||||
return this.isConfidential
|
||||
|
|
@ -361,8 +361,8 @@ export default {
|
|||
|
||||
if (this.glFeatures.okrsMvc && this.hasOkrsFeature) {
|
||||
return BASE_ALLOWED_CREATE_TYPES.concat(
|
||||
WORK_ITEM_TYPE_VALUE_KEY_RESULT,
|
||||
WORK_ITEM_TYPE_VALUE_OBJECTIVE,
|
||||
WORK_ITEM_TYPE_NAME_KEY_RESULT,
|
||||
WORK_ITEM_TYPE_NAME_OBJECTIVE,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -372,7 +372,7 @@ export default {
|
|||
return WORK_ITEM_TYPE_VALUE_MAP[this.workItemType];
|
||||
},
|
||||
showMoveButton() {
|
||||
return this.workItemType === WORK_ITEM_TYPE_VALUE_ISSUE && this.canMove;
|
||||
return this.workItemType === WORK_ITEM_TYPE_NAME_ISSUE && this.canMove;
|
||||
},
|
||||
toggleSidebarLabel() {
|
||||
return this.showSidebar ? s__('WorkItem|Hide sidebar') : s__('WorkItem|Show sidebar');
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import {
|
|||
WIDGET_TYPE_WEIGHT,
|
||||
WIDGET_TYPE_COLOR,
|
||||
WIDGET_TYPE_CRM_CONTACTS,
|
||||
WORK_ITEM_TYPE_VALUE_EPIC,
|
||||
WORK_ITEM_TYPE_NAME_EPIC,
|
||||
WORK_ITEM_TYPE_VALUE_MAP,
|
||||
WIDGET_TYPE_CUSTOM_FIELDS,
|
||||
} from '../constants';
|
||||
|
|
@ -145,7 +145,7 @@ export default {
|
|||
return this.isWidgetPresent(WIDGET_TYPE_START_AND_DUE_DATE);
|
||||
},
|
||||
canWorkItemRollUp() {
|
||||
return this.workItemType === WORK_ITEM_TYPE_VALUE_EPIC;
|
||||
return this.workItemType === WORK_ITEM_TYPE_NAME_EPIC;
|
||||
},
|
||||
workItemWeight() {
|
||||
return this.isWidgetPresent(WIDGET_TYPE_WEIGHT);
|
||||
|
|
@ -166,10 +166,10 @@ export default {
|
|||
return this.isWidgetPresent(WIDGET_TYPE_MILESTONE);
|
||||
},
|
||||
showRolledupDates() {
|
||||
return this.workItemType === WORK_ITEM_TYPE_VALUE_EPIC;
|
||||
return this.workItemType === WORK_ITEM_TYPE_NAME_EPIC;
|
||||
},
|
||||
isParentEnabled() {
|
||||
return this.workItemType === WORK_ITEM_TYPE_VALUE_EPIC ? this.hasSubepicsFeature : true;
|
||||
return this.workItemType === WORK_ITEM_TYPE_NAME_EPIC ? this.hasSubepicsFeature : true;
|
||||
},
|
||||
workItemParent() {
|
||||
return this.isWidgetPresent(WIDGET_TYPE_HIERARCHY)?.parent;
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import {
|
|||
WIDGET_TYPE_HIERARCHY,
|
||||
ALLOWED_CONVERSION_TYPES,
|
||||
WORK_ITEM_TYPE_ENUM_EPIC,
|
||||
WORK_ITEM_TYPE_VALUE_EPIC,
|
||||
WORK_ITEM_TYPE_NAME_EPIC,
|
||||
sprintfWorkItem,
|
||||
WORK_ITEM_WIDGETS_NAME_MAP,
|
||||
WIDGET_TYPE_DESIGNS,
|
||||
|
|
@ -362,7 +362,7 @@ export default {
|
|||
'WorkItem|Parent item type %{parentWorkItemType} is not supported on %{workItemType}. Remove the parent item to change type.',
|
||||
),
|
||||
this.isSelectedWorkItemTypeEpic
|
||||
? WORK_ITEM_TYPE_VALUE_EPIC
|
||||
? WORK_ITEM_TYPE_NAME_EPIC
|
||||
: this.selectedWorkItemType.text,
|
||||
this.parentWorkItemType,
|
||||
);
|
||||
|
|
@ -379,7 +379,7 @@ export default {
|
|||
{
|
||||
workItemType: capitalizeFirstCharacter(
|
||||
this.isSelectedWorkItemTypeEpic
|
||||
? WORK_ITEM_TYPE_VALUE_EPIC.toLocaleLowerCase()
|
||||
? WORK_ITEM_TYPE_NAME_EPIC.toLocaleLowerCase()
|
||||
: this.selectedWorkItemType.text.toLocaleLowerCase(),
|
||||
),
|
||||
childItemType: this.allowedChildTypes?.[0]?.name?.toLocaleLowerCase(),
|
||||
|
|
@ -406,7 +406,7 @@ export default {
|
|||
'WorkItem|Some fields are not present in %{workItemType}. If you change type now, this information will be lost.',
|
||||
),
|
||||
this.isSelectedWorkItemTypeEpic
|
||||
? WORK_ITEM_TYPE_VALUE_EPIC
|
||||
? WORK_ITEM_TYPE_NAME_EPIC
|
||||
: this.selectedWorkItemType.text,
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import SafeHtml from '~/vue_shared/directives/safe_html';
|
|||
import {
|
||||
WORK_ITEM_TYPE_ENUM_ISSUE,
|
||||
WORK_ITEM_TYPE_ENUM_TASK,
|
||||
WORK_ITEM_TYPE_VALUE_EPIC,
|
||||
WORK_ITEM_TYPE_NAME_EPIC,
|
||||
} from '../constants';
|
||||
|
||||
const trackingMixin = InternalEvents.mixin();
|
||||
|
|
@ -90,7 +90,7 @@ export default {
|
|||
},
|
||||
computed: {
|
||||
childItemType() {
|
||||
return this.workItemType === WORK_ITEM_TYPE_VALUE_EPIC
|
||||
return this.workItemType === WORK_ITEM_TYPE_NAME_EPIC
|
||||
? WORK_ITEM_TYPE_ENUM_ISSUE
|
||||
: WORK_ITEM_TYPE_ENUM_TASK;
|
||||
},
|
||||
|
|
|
|||
|
|
@ -32,19 +32,19 @@ import {
|
|||
WIDGET_TYPE_DESCRIPTION,
|
||||
WIDGET_TYPE_AWARD_EMOJI,
|
||||
WIDGET_TYPE_HIERARCHY,
|
||||
WORK_ITEM_TYPE_VALUE_OBJECTIVE,
|
||||
WORK_ITEM_TYPE_NAME_OBJECTIVE,
|
||||
WIDGET_TYPE_NOTES,
|
||||
WIDGET_TYPE_LINKED_ITEMS,
|
||||
WIDGET_TYPE_DESIGNS,
|
||||
WORK_ITEM_REFERENCE_CHAR,
|
||||
WORK_ITEM_TYPE_VALUE_EPIC,
|
||||
WORK_ITEM_TYPE_NAME_EPIC,
|
||||
WIDGET_TYPE_WEIGHT,
|
||||
WIDGET_TYPE_DEVELOPMENT,
|
||||
STATE_OPEN,
|
||||
WIDGET_TYPE_ERROR_TRACKING,
|
||||
WIDGET_TYPE_ITERATION,
|
||||
WIDGET_TYPE_MILESTONE,
|
||||
WORK_ITEM_TYPE_VALUE_INCIDENT,
|
||||
WORK_ITEM_TYPE_NAME_INCIDENT,
|
||||
} from '../constants';
|
||||
|
||||
import workItemUpdatedSubscription from '../graphql/work_item_updated.subscription.graphql';
|
||||
|
|
@ -363,7 +363,7 @@ export default {
|
|||
hasParent() {
|
||||
const { workItemType, parentWorkItem, hasSubepicsFeature } = this;
|
||||
|
||||
if (workItemType === WORK_ITEM_TYPE_VALUE_EPIC) {
|
||||
if (workItemType === WORK_ITEM_TYPE_NAME_EPIC) {
|
||||
return Boolean(hasSubepicsFeature && parentWorkItem);
|
||||
}
|
||||
|
||||
|
|
@ -449,7 +449,7 @@ export default {
|
|||
return !this.isModal && !this.editMode && !this.isDrawer;
|
||||
},
|
||||
workItemLinkedItems() {
|
||||
return this.workItemType === WORK_ITEM_TYPE_VALUE_EPIC
|
||||
return this.workItemType === WORK_ITEM_TYPE_NAME_EPIC
|
||||
? this.findWidget(WIDGET_TYPE_LINKED_ITEMS) && this.hasLinkedItemsEpicsFeature
|
||||
: this.findWidget(WIDGET_TYPE_LINKED_ITEMS);
|
||||
},
|
||||
|
|
@ -629,7 +629,7 @@ export default {
|
|||
openContextualView({ event, modalWorkItem }) {
|
||||
if (
|
||||
!this.contextualViewEnabled ||
|
||||
modalWorkItem.workItemType?.name === WORK_ITEM_TYPE_VALUE_INCIDENT ||
|
||||
modalWorkItem.workItemType?.name === WORK_ITEM_TYPE_NAME_INCIDENT ||
|
||||
this.isDrawer
|
||||
) {
|
||||
return;
|
||||
|
|
@ -854,7 +854,7 @@ export default {
|
|||
});
|
||||
},
|
||||
},
|
||||
WORK_ITEM_TYPE_VALUE_OBJECTIVE,
|
||||
WORK_ITEM_TYPE_NAME_OBJECTIVE,
|
||||
WORKSPACE_PROJECT,
|
||||
noAccessSvg,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ import { helpPagePath } from '~/helpers/help_page_helper';
|
|||
import { s__ } from '~/locale';
|
||||
import HelpIcon from '~/vue_shared/components/help_icon/help_icon.vue';
|
||||
import {
|
||||
WORK_ITEM_TYPE_VALUE_EPIC,
|
||||
WORK_ITEM_TYPE_VALUE_OBJECTIVE,
|
||||
WORK_ITEM_TYPE_NAME_EPIC,
|
||||
WORK_ITEM_TYPE_NAME_OBJECTIVE,
|
||||
sprintfWorkItem,
|
||||
} from '../../constants';
|
||||
|
||||
|
|
@ -51,11 +51,11 @@ export default {
|
|||
},
|
||||
getPopoverLink(workItemType) {
|
||||
switch (workItemType) {
|
||||
case WORK_ITEM_TYPE_VALUE_EPIC:
|
||||
case WORK_ITEM_TYPE_NAME_EPIC:
|
||||
return helpPagePath('/user/group/epics/manage_epics', {
|
||||
anchor: 'multi-level-child-epics',
|
||||
});
|
||||
case WORK_ITEM_TYPE_VALUE_OBJECTIVE:
|
||||
case WORK_ITEM_TYPE_NAME_OBJECTIVE:
|
||||
return helpPagePath('/user/okrs', { anchor: 'child-objectives-and-key-results' });
|
||||
default:
|
||||
return '';
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import { s__ } from '~/locale';
|
|||
import { defaultSortableOptions, DRAG_DELAY } from '~/sortable/constants';
|
||||
import { sortableStart, sortableEnd } from '~/sortable/utils';
|
||||
|
||||
import { WORK_ITEM_TYPE_VALUE_OBJECTIVE, WORK_ITEM_TYPE_VALUE_EPIC } from '../../constants';
|
||||
import { WORK_ITEM_TYPE_NAME_OBJECTIVE, WORK_ITEM_TYPE_NAME_EPIC } from '../../constants';
|
||||
import { findHierarchyWidgetChildren, getItems, findHierarchyWidgets } from '../../utils';
|
||||
import {
|
||||
addHierarchyChild,
|
||||
|
|
@ -233,7 +233,7 @@ export default {
|
|||
});
|
||||
},
|
||||
prefetchWorkItem({ iid }) {
|
||||
if (this.workItemType !== WORK_ITEM_TYPE_VALUE_OBJECTIVE) {
|
||||
if (this.workItemType !== WORK_ITEM_TYPE_NAME_OBJECTIVE) {
|
||||
this.prefetch = setTimeout(
|
||||
() => this.addWorkItemQuery({ iid }),
|
||||
DEFAULT_DEBOUNCE_AND_THROTTLE_MS,
|
||||
|
|
@ -499,9 +499,7 @@ export default {
|
|||
|
||||
// Check if current item is an Epic
|
||||
if (
|
||||
[WORK_ITEM_TYPE_VALUE_EPIC, WORK_ITEM_TYPE_VALUE_OBJECTIVE].includes(
|
||||
item?.workItemType.name,
|
||||
)
|
||||
[WORK_ITEM_TYPE_NAME_EPIC, WORK_ITEM_TYPE_NAME_OBJECTIVE].includes(item?.workItemType.name)
|
||||
) {
|
||||
const { top, left } = originalEvent.target.getBoundingClientRect();
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
import { GlButton, GlTooltipDirective } from '@gitlab/ui';
|
||||
import { __, s__ } from '~/locale';
|
||||
import { createAlert } from '~/alert';
|
||||
import { STATE_OPEN, WORK_ITEM_TYPE_VALUE_TASK } from '../../constants';
|
||||
import { STATE_OPEN, WORK_ITEM_TYPE_NAME_TASK } from '../../constants';
|
||||
import { findHierarchyWidgets, getDefaultHierarchyChildrenCount, getItems } from '../../utils';
|
||||
import toggleHierarchyTreeChildMutation from '../../graphql/client/toggle_hierarchy_tree_child.mutation.graphql';
|
||||
import isExpandedHierarchyTreeChildQuery from '../../graphql/client/is_expanded_hierarchy_tree_child.query.graphql';
|
||||
|
|
@ -190,7 +190,7 @@ export default {
|
|||
return this.childItem.workItemType.name;
|
||||
},
|
||||
iconClass() {
|
||||
if (this.childItemType === WORK_ITEM_TYPE_VALUE_TASK) {
|
||||
if (this.childItemType === WORK_ITEM_TYPE_NAME_TASK) {
|
||||
return this.isItemOpen ? 'gl-fill-icon-success' : 'gl-fill-icon-info';
|
||||
}
|
||||
return '';
|
||||
|
|
@ -214,7 +214,7 @@ export default {
|
|||
};
|
||||
},
|
||||
shouldShowWeight() {
|
||||
return this.childItemType === WORK_ITEM_TYPE_VALUE_TASK ? this.showTaskWeight : true;
|
||||
return this.childItemType === WORK_ITEM_TYPE_NAME_TASK ? this.showTaskWeight : true;
|
||||
},
|
||||
allowedChildTypes() {
|
||||
return this.allowedChildrenByType?.[this.childItemType] || [];
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import {
|
|||
FORM_TYPES,
|
||||
WORK_ITEMS_TYPE_MAP,
|
||||
WORK_ITEM_TYPE_ENUM_TASK,
|
||||
WORK_ITEM_TYPE_VALUE_EPIC,
|
||||
WORK_ITEM_TYPE_NAME_EPIC,
|
||||
MAX_WORK_ITEMS,
|
||||
sprintfWorkItem,
|
||||
WIDGET_TYPE_MILESTONE,
|
||||
|
|
@ -126,7 +126,7 @@ export default {
|
|||
},
|
||||
computed: {
|
||||
workItemChildIsEpic() {
|
||||
return this.childrenTypeValue === WORK_ITEM_TYPE_VALUE_EPIC;
|
||||
return this.childrenTypeValue === WORK_ITEM_TYPE_NAME_EPIC;
|
||||
},
|
||||
workItemInput() {
|
||||
let workItemInput = {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import { findWidget } from '~/issues/list/utils';
|
|||
import {
|
||||
i18n,
|
||||
WIDGET_TYPE_WEIGHT,
|
||||
WORK_ITEM_TYPE_VALUE_EPIC,
|
||||
WORK_ITEM_TYPE_NAME_EPIC,
|
||||
WIDGET_TYPE_HEALTH_STATUS,
|
||||
} from '../../constants';
|
||||
|
||||
|
|
@ -96,7 +96,7 @@ export default {
|
|||
return Math.round((this.rolledUpCompletedWeight / this.rolledUpWeight) * 100);
|
||||
},
|
||||
weightTooltip() {
|
||||
return this.workItemType === WORK_ITEM_TYPE_VALUE_EPIC ? __('Issue weight') : __('Weight');
|
||||
return this.workItemType === WORK_ITEM_TYPE_NAME_EPIC ? __('Issue weight') : __('Weight');
|
||||
},
|
||||
rolledUpHealthStatus() {
|
||||
return this.workItemHealthStatus?.rolledUpHealthStatus;
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import {
|
|||
CHILD_ITEMS_ANCHOR,
|
||||
WORKITEM_TREE_SHOWLABELS_LOCALSTORAGEKEY,
|
||||
WORKITEM_TREE_SHOWCLOSED_LOCALSTORAGEKEY,
|
||||
WORK_ITEM_TYPE_VALUE_EPIC,
|
||||
WORK_ITEM_TYPE_NAME_EPIC,
|
||||
WIDGET_TYPE_HIERARCHY,
|
||||
INJECTION_LINK_CHILD_PREVENT_ROUTER_NAVIGATION,
|
||||
DETAIL_VIEW_QUERY_PARAM_NAME,
|
||||
|
|
@ -266,7 +266,7 @@ export default {
|
|||
return this.showRolledUpWeight && this.rolledUpWeight !== null;
|
||||
},
|
||||
showTaskWeight() {
|
||||
return this.workItemType !== WORK_ITEM_TYPE_VALUE_EPIC;
|
||||
return this.workItemType !== WORK_ITEM_TYPE_NAME_EPIC;
|
||||
},
|
||||
allowedChildrenByType() {
|
||||
return this.workItemTypes.reduce((acc, type) => {
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import {
|
|||
I18N_WORK_ITEM_ERROR_UPDATING,
|
||||
sprintfWorkItem,
|
||||
WORK_ITEM_TYPE_ENUM_EPIC,
|
||||
WORK_ITEM_TYPE_VALUE_ISSUE,
|
||||
WORK_ITEM_TYPE_NAME_ISSUE,
|
||||
WORK_ITEM_TYPE_VALUE_MAP,
|
||||
} from '../constants';
|
||||
import { isReference, findHierarchyWidgetDefinition, newWorkItemId } from '../utils';
|
||||
|
|
@ -93,7 +93,7 @@ export default {
|
|||
},
|
||||
computed: {
|
||||
isIssue() {
|
||||
return this.workItemType === WORK_ITEM_TYPE_VALUE_ISSUE;
|
||||
return this.workItemType === WORK_ITEM_TYPE_NAME_ISSUE;
|
||||
},
|
||||
isLoading() {
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import WorkItemLinkChildContents from '../shared/work_item_link_child_contents.v
|
|||
import removeLinkedItemsMutation from '../../graphql/remove_linked_items.mutation.graphql';
|
||||
import addLinkedItemsMutation from '../../graphql/add_linked_items.mutation.graphql';
|
||||
|
||||
import { RELATIONSHIP_TYPE_ENUM, WORK_ITEM_TYPE_VALUE_INCIDENT } from '../../constants';
|
||||
import { RELATIONSHIP_TYPE_ENUM, WORK_ITEM_TYPE_NAME_INCIDENT } from '../../constants';
|
||||
|
||||
export default {
|
||||
RELATIONSHIP_TYPE_ENUM,
|
||||
|
|
@ -189,7 +189,7 @@ export default {
|
|||
},
|
||||
handleLinkedItemClick(event, linkedItem) {
|
||||
// if the linkedItem is incident, redirect to the incident page
|
||||
if (linkedItem?.workItem?.workItemType?.name === WORK_ITEM_TYPE_VALUE_INCIDENT) {
|
||||
if (linkedItem?.workItem?.workItemType?.name === WORK_ITEM_TYPE_NAME_INCIDENT) {
|
||||
visitUrl(linkedItem.workItem.webUrl);
|
||||
} else {
|
||||
this.$emit('showModal', { event, child: linkedItem.workItem });
|
||||
|
|
|
|||
|
|
@ -44,15 +44,15 @@ export const WORK_ITEM_TYPE_ENUM_TASK = 'TASK';
|
|||
export const WORK_ITEM_TYPE_ENUM_TEST_CASE = 'TEST_CASE';
|
||||
export const WORK_ITEM_TYPE_ENUM_TICKET = 'TICKET';
|
||||
|
||||
export const WORK_ITEM_TYPE_VALUE_EPIC = 'Epic';
|
||||
export const WORK_ITEM_TYPE_VALUE_INCIDENT = 'Incident';
|
||||
export const WORK_ITEM_TYPE_VALUE_ISSUE = 'Issue';
|
||||
export const WORK_ITEM_TYPE_VALUE_KEY_RESULT = 'Key Result';
|
||||
export const WORK_ITEM_TYPE_VALUE_OBJECTIVE = 'Objective';
|
||||
export const WORK_ITEM_TYPE_VALUE_REQUIREMENTS = 'Requirement';
|
||||
export const WORK_ITEM_TYPE_VALUE_TASK = 'Task';
|
||||
export const WORK_ITEM_TYPE_VALUE_TEST_CASE = 'Test Case';
|
||||
export const WORK_ITEM_TYPE_VALUE_TICKET = 'Ticket';
|
||||
export const WORK_ITEM_TYPE_NAME_EPIC = 'Epic';
|
||||
export const WORK_ITEM_TYPE_NAME_INCIDENT = 'Incident';
|
||||
export const WORK_ITEM_TYPE_NAME_ISSUE = 'Issue';
|
||||
export const WORK_ITEM_TYPE_NAME_KEY_RESULT = 'Key Result';
|
||||
export const WORK_ITEM_TYPE_NAME_OBJECTIVE = 'Objective';
|
||||
export const WORK_ITEM_TYPE_NAME_REQUIREMENTS = 'Requirement';
|
||||
export const WORK_ITEM_TYPE_NAME_TASK = 'Task';
|
||||
export const WORK_ITEM_TYPE_NAME_TEST_CASE = 'Test Case';
|
||||
export const WORK_ITEM_TYPE_NAME_TICKET = 'Ticket';
|
||||
|
||||
export const SEARCH_DEBOUNCE = 500;
|
||||
|
||||
|
|
@ -92,57 +92,57 @@ export const WORK_ITEMS_TYPE_MAP = {
|
|||
[WORK_ITEM_TYPE_ENUM_INCIDENT]: {
|
||||
icon: `issue-type-incident`,
|
||||
name: s__('WorkItem|Incident'),
|
||||
value: WORK_ITEM_TYPE_VALUE_INCIDENT,
|
||||
value: WORK_ITEM_TYPE_NAME_INCIDENT,
|
||||
},
|
||||
[WORK_ITEM_TYPE_ENUM_ISSUE]: {
|
||||
icon: `issue-type-issue`,
|
||||
name: s__('WorkItem|Issue'),
|
||||
value: WORK_ITEM_TYPE_VALUE_ISSUE,
|
||||
value: WORK_ITEM_TYPE_NAME_ISSUE,
|
||||
routeParamName: 'issues',
|
||||
},
|
||||
[WORK_ITEM_TYPE_ENUM_TASK]: {
|
||||
icon: `issue-type-task`,
|
||||
name: s__('WorkItem|Task'),
|
||||
value: WORK_ITEM_TYPE_VALUE_TASK,
|
||||
value: WORK_ITEM_TYPE_NAME_TASK,
|
||||
},
|
||||
[WORK_ITEM_TYPE_ENUM_TEST_CASE]: {
|
||||
icon: `issue-type-test-case`,
|
||||
name: s__('WorkItem|Test case'),
|
||||
value: WORK_ITEM_TYPE_VALUE_TEST_CASE,
|
||||
value: WORK_ITEM_TYPE_NAME_TEST_CASE,
|
||||
},
|
||||
[WORK_ITEM_TYPE_ENUM_REQUIREMENTS]: {
|
||||
icon: `issue-type-requirements`,
|
||||
name: s__('WorkItem|Requirements'),
|
||||
value: WORK_ITEM_TYPE_VALUE_REQUIREMENTS,
|
||||
value: WORK_ITEM_TYPE_NAME_REQUIREMENTS,
|
||||
},
|
||||
[WORK_ITEM_TYPE_ENUM_OBJECTIVE]: {
|
||||
icon: `issue-type-objective`,
|
||||
name: s__('WorkItem|Objective'),
|
||||
value: WORK_ITEM_TYPE_VALUE_OBJECTIVE,
|
||||
value: WORK_ITEM_TYPE_NAME_OBJECTIVE,
|
||||
},
|
||||
[WORK_ITEM_TYPE_ENUM_KEY_RESULT]: {
|
||||
icon: `issue-type-keyresult`,
|
||||
name: s__('WorkItem|Key result'),
|
||||
value: WORK_ITEM_TYPE_VALUE_KEY_RESULT,
|
||||
value: WORK_ITEM_TYPE_NAME_KEY_RESULT,
|
||||
},
|
||||
[WORK_ITEM_TYPE_ENUM_EPIC]: {
|
||||
icon: `epic`,
|
||||
name: s__('WorkItem|Epic'),
|
||||
value: WORK_ITEM_TYPE_VALUE_EPIC,
|
||||
value: WORK_ITEM_TYPE_NAME_EPIC,
|
||||
routeParamName: 'epics',
|
||||
},
|
||||
};
|
||||
|
||||
export const WORK_ITEM_TYPE_VALUE_MAP = {
|
||||
[WORK_ITEM_TYPE_VALUE_EPIC]: WORK_ITEM_TYPE_ENUM_EPIC,
|
||||
[WORK_ITEM_TYPE_VALUE_INCIDENT]: WORK_ITEM_TYPE_ENUM_INCIDENT,
|
||||
[WORK_ITEM_TYPE_VALUE_ISSUE]: WORK_ITEM_TYPE_ENUM_ISSUE,
|
||||
[WORK_ITEM_TYPE_VALUE_KEY_RESULT]: WORK_ITEM_TYPE_ENUM_KEY_RESULT,
|
||||
[WORK_ITEM_TYPE_VALUE_OBJECTIVE]: WORK_ITEM_TYPE_ENUM_OBJECTIVE,
|
||||
[WORK_ITEM_TYPE_VALUE_REQUIREMENTS]: WORK_ITEM_TYPE_ENUM_REQUIREMENTS,
|
||||
[WORK_ITEM_TYPE_VALUE_TASK]: WORK_ITEM_TYPE_ENUM_TASK,
|
||||
[WORK_ITEM_TYPE_VALUE_TEST_CASE]: WORK_ITEM_TYPE_ENUM_TEST_CASE,
|
||||
[WORK_ITEM_TYPE_VALUE_TICKET]: WORK_ITEM_TYPE_ENUM_TICKET,
|
||||
[WORK_ITEM_TYPE_NAME_EPIC]: WORK_ITEM_TYPE_ENUM_EPIC,
|
||||
[WORK_ITEM_TYPE_NAME_INCIDENT]: WORK_ITEM_TYPE_ENUM_INCIDENT,
|
||||
[WORK_ITEM_TYPE_NAME_ISSUE]: WORK_ITEM_TYPE_ENUM_ISSUE,
|
||||
[WORK_ITEM_TYPE_NAME_KEY_RESULT]: WORK_ITEM_TYPE_ENUM_KEY_RESULT,
|
||||
[WORK_ITEM_TYPE_NAME_OBJECTIVE]: WORK_ITEM_TYPE_ENUM_OBJECTIVE,
|
||||
[WORK_ITEM_TYPE_NAME_REQUIREMENTS]: WORK_ITEM_TYPE_ENUM_REQUIREMENTS,
|
||||
[WORK_ITEM_TYPE_NAME_TASK]: WORK_ITEM_TYPE_ENUM_TASK,
|
||||
[WORK_ITEM_TYPE_NAME_TEST_CASE]: WORK_ITEM_TYPE_ENUM_TEST_CASE,
|
||||
[WORK_ITEM_TYPE_NAME_TICKET]: WORK_ITEM_TYPE_ENUM_TICKET,
|
||||
};
|
||||
|
||||
export const FORM_TYPES = {
|
||||
|
|
@ -223,9 +223,9 @@ export const LINKED_ITEM_TYPE_VALUE = {
|
|||
};
|
||||
|
||||
export const LINK_ITEM_FORM_HEADER_LABEL = {
|
||||
[WORK_ITEM_TYPE_VALUE_OBJECTIVE]: s__('WorkItem|The current objective'),
|
||||
[WORK_ITEM_TYPE_VALUE_KEY_RESULT]: s__('WorkItem|The current key result'),
|
||||
[WORK_ITEM_TYPE_VALUE_TASK]: s__('WorkItem|The current task'),
|
||||
[WORK_ITEM_TYPE_NAME_OBJECTIVE]: s__('WorkItem|The current objective'),
|
||||
[WORK_ITEM_TYPE_NAME_KEY_RESULT]: s__('WorkItem|The current key result'),
|
||||
[WORK_ITEM_TYPE_NAME_TASK]: s__('WorkItem|The current task'),
|
||||
};
|
||||
|
||||
export const LINKED_ITEMS_ANCHOR = 'linkeditems';
|
||||
|
|
@ -301,40 +301,40 @@ export const WORK_ITEM_CREATE_ENTITY_MODAL_TARGET_SOURCE = 'source';
|
|||
export const WORK_ITEM_CREATE_ENTITY_MODAL_TARGET_BRANCH = 'branch';
|
||||
|
||||
export const BASE_ALLOWED_CREATE_TYPES = [
|
||||
WORK_ITEM_TYPE_VALUE_INCIDENT,
|
||||
WORK_ITEM_TYPE_VALUE_ISSUE,
|
||||
WORK_ITEM_TYPE_VALUE_TASK,
|
||||
WORK_ITEM_TYPE_NAME_INCIDENT,
|
||||
WORK_ITEM_TYPE_NAME_ISSUE,
|
||||
WORK_ITEM_TYPE_NAME_TASK,
|
||||
];
|
||||
|
||||
export const ALLOWED_CONVERSION_TYPES = [
|
||||
WORK_ITEM_TYPE_VALUE_KEY_RESULT,
|
||||
WORK_ITEM_TYPE_VALUE_OBJECTIVE,
|
||||
WORK_ITEM_TYPE_VALUE_TASK,
|
||||
WORK_ITEM_TYPE_VALUE_ISSUE,
|
||||
WORK_ITEM_TYPE_NAME_KEY_RESULT,
|
||||
WORK_ITEM_TYPE_NAME_OBJECTIVE,
|
||||
WORK_ITEM_TYPE_NAME_TASK,
|
||||
WORK_ITEM_TYPE_NAME_ISSUE,
|
||||
];
|
||||
|
||||
export const WORK_ITEM_TYPE_NAME_MAP = {
|
||||
[WORK_ITEM_TYPE_VALUE_EPIC]: s__('WorkItem|Epic'),
|
||||
[WORK_ITEM_TYPE_VALUE_INCIDENT]: s__('WorkItem|Incident'),
|
||||
[WORK_ITEM_TYPE_VALUE_ISSUE]: s__('WorkItem|Issue'),
|
||||
[WORK_ITEM_TYPE_VALUE_KEY_RESULT]: s__('WorkItem|Key result'),
|
||||
[WORK_ITEM_TYPE_VALUE_OBJECTIVE]: s__('WorkItem|Objective'),
|
||||
[WORK_ITEM_TYPE_VALUE_REQUIREMENTS]: s__('WorkItem|Requirement'),
|
||||
[WORK_ITEM_TYPE_VALUE_TASK]: s__('WorkItem|Task'),
|
||||
[WORK_ITEM_TYPE_VALUE_TEST_CASE]: s__('WorkItem|Test case'),
|
||||
[WORK_ITEM_TYPE_VALUE_TICKET]: s__('WorkItem|Ticket'),
|
||||
[WORK_ITEM_TYPE_NAME_EPIC]: s__('WorkItem|Epic'),
|
||||
[WORK_ITEM_TYPE_NAME_INCIDENT]: s__('WorkItem|Incident'),
|
||||
[WORK_ITEM_TYPE_NAME_ISSUE]: s__('WorkItem|Issue'),
|
||||
[WORK_ITEM_TYPE_NAME_KEY_RESULT]: s__('WorkItem|Key result'),
|
||||
[WORK_ITEM_TYPE_NAME_OBJECTIVE]: s__('WorkItem|Objective'),
|
||||
[WORK_ITEM_TYPE_NAME_REQUIREMENTS]: s__('WorkItem|Requirement'),
|
||||
[WORK_ITEM_TYPE_NAME_TASK]: s__('WorkItem|Task'),
|
||||
[WORK_ITEM_TYPE_NAME_TEST_CASE]: s__('WorkItem|Test case'),
|
||||
[WORK_ITEM_TYPE_NAME_TICKET]: s__('WorkItem|Ticket'),
|
||||
};
|
||||
|
||||
export const WORK_ITEM_TYPE_NAME_LOWERCASE_MAP = {
|
||||
[WORK_ITEM_TYPE_VALUE_EPIC]: s__('WorkItem|epic'),
|
||||
[WORK_ITEM_TYPE_VALUE_INCIDENT]: s__('WorkItem|incident'),
|
||||
[WORK_ITEM_TYPE_VALUE_ISSUE]: s__('WorkItem|issue'),
|
||||
[WORK_ITEM_TYPE_VALUE_KEY_RESULT]: s__('WorkItem|key result'),
|
||||
[WORK_ITEM_TYPE_VALUE_OBJECTIVE]: s__('WorkItem|objective'),
|
||||
[WORK_ITEM_TYPE_VALUE_REQUIREMENTS]: s__('WorkItem|requirement'),
|
||||
[WORK_ITEM_TYPE_VALUE_TASK]: s__('WorkItem|task'),
|
||||
[WORK_ITEM_TYPE_VALUE_TEST_CASE]: s__('WorkItem|test case'),
|
||||
[WORK_ITEM_TYPE_VALUE_TICKET]: s__('WorkItem|ticket'),
|
||||
[WORK_ITEM_TYPE_NAME_EPIC]: s__('WorkItem|epic'),
|
||||
[WORK_ITEM_TYPE_NAME_INCIDENT]: s__('WorkItem|incident'),
|
||||
[WORK_ITEM_TYPE_NAME_ISSUE]: s__('WorkItem|issue'),
|
||||
[WORK_ITEM_TYPE_NAME_KEY_RESULT]: s__('WorkItem|key result'),
|
||||
[WORK_ITEM_TYPE_NAME_OBJECTIVE]: s__('WorkItem|objective'),
|
||||
[WORK_ITEM_TYPE_NAME_REQUIREMENTS]: s__('WorkItem|requirement'),
|
||||
[WORK_ITEM_TYPE_NAME_TASK]: s__('WorkItem|task'),
|
||||
[WORK_ITEM_TYPE_NAME_TEST_CASE]: s__('WorkItem|test case'),
|
||||
[WORK_ITEM_TYPE_NAME_TICKET]: s__('WorkItem|ticket'),
|
||||
};
|
||||
|
||||
export const WORK_ITEM_WIDGETS_NAME_MAP = {
|
||||
|
|
|
|||
|
|
@ -35,21 +35,30 @@ module Resolvers
|
|||
return unless runner.project_type?
|
||||
|
||||
BatchLoader::GraphQL.for(runner.id).batch do |runner_ids, loader|
|
||||
# rubocop: disable CodeReuse/ActiveRecord -- this runs on a limited number of records
|
||||
runner_id_to_owner_id =
|
||||
::Ci::Runner.project_type.id_in(runner_ids)
|
||||
.pluck(:id, :sharding_key_id)
|
||||
.to_h
|
||||
# rubocop: enable CodeReuse/ActiveRecord
|
||||
# rubocop:disable CodeReuse/ActiveRecord -- this query is too specific to generalize in model
|
||||
runner_and_projects_with_row_number =
|
||||
::Ci::RunnerProject
|
||||
.where(runner_id: runner_ids)
|
||||
.select('id, runner_id, project_id, ROW_NUMBER() OVER (PARTITION BY runner_id ORDER BY id ASC)')
|
||||
runner_and_owner_projects =
|
||||
::Ci::RunnerProject
|
||||
.select(:id, :runner_id, :project_id)
|
||||
.from("(#{runner_and_projects_with_row_number.to_sql}) temp WHERE row_number = 1")
|
||||
owner_project_id_by_runner_id =
|
||||
runner_and_owner_projects
|
||||
.group_by(&:runner_id)
|
||||
.transform_values { |runner_projects| runner_projects.first.project_id }
|
||||
project_ids = owner_project_id_by_runner_id.values.uniq
|
||||
|
||||
projects = apply_lookahead(Project.id_in(runner_id_to_owner_id.values.uniq))
|
||||
projects = apply_lookahead(Project.id_in(project_ids))
|
||||
Preloaders::ProjectPolicyPreloader.new(projects, current_user).execute
|
||||
projects_by_id = projects.index_by(&:id)
|
||||
|
||||
runner_ids.each do |runner_id|
|
||||
owner_project_id = runner_id_to_owner_id[runner_id]
|
||||
owner_project_id = owner_project_id_by_runner_id[runner_id]
|
||||
loader.call(runner_id, projects_by_id[owner_project_id])
|
||||
end
|
||||
# rubocop: enable CodeReuse/ActiveRecord
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
module Ci
|
||||
class Partition < Ci::ApplicationRecord
|
||||
MAX_PARTITION_SIZE = 100.gigabytes
|
||||
GSTG_PARTITION_SIZE = 4.gigabytes
|
||||
|
||||
INITIAL_PARTITION_VALUE = 100
|
||||
LATEST_PARTITION_VALUE = 102
|
||||
|
|
|
|||
|
|
@ -420,11 +420,11 @@ module Ci
|
|||
when 'instance_type'
|
||||
::User.find_by_id(creator_id)
|
||||
when 'group_type'
|
||||
::Group.find_by_id(sharding_key_id)
|
||||
runner_namespaces.first&.namespace
|
||||
when 'project_type'
|
||||
owner_project = ::Project.find_by_id(sharding_key_id)
|
||||
|
||||
owner_project || fallback_owner_project
|
||||
# If runner projects are not yet saved (e.g. when calculating `routable_token`), use in-memory collection
|
||||
candidates = persisted? ? runner_projects.order(:id) : runner_projects
|
||||
candidates.first&.project
|
||||
end
|
||||
end
|
||||
strong_memoize_attr :owner
|
||||
|
|
|
|||
|
|
@ -317,7 +317,7 @@ class ContainerRepository < ApplicationRecord
|
|||
|
||||
return false unless project.has_container_registry_protected_tag_rules?(
|
||||
action: 'delete',
|
||||
access_level: user.max_member_access_for_project(project.id)
|
||||
access_level: project.team.max_member_access(user.id)
|
||||
)
|
||||
|
||||
# This is an API call so we put it last
|
||||
|
|
|
|||
|
|
@ -152,7 +152,7 @@ module Auth
|
|||
# can return early here, but not any earlier.
|
||||
return patterns if user.can_admin_all_resources?
|
||||
|
||||
user_access_level = user.max_member_access_for_project(project.id)
|
||||
user_access_level = project.team.max_member_access(user.id)
|
||||
applicable_rules = rules.for_actions_and_access(actions_to_check, user_access_level, include_immutable: false)
|
||||
|
||||
applicable_rules.each do |rule|
|
||||
|
|
@ -386,10 +386,9 @@ module Auth
|
|||
next unless push_scope_container_registry_path.valid?
|
||||
|
||||
repository_project = push_scope_container_registry_path.repository_project
|
||||
current_user_project_authorization_access_level = current_user&.max_member_access_for_project(repository_project.id)
|
||||
|
||||
repository_project.container_registry_protection_rules.for_push_exists?(
|
||||
access_level: current_user_project_authorization_access_level,
|
||||
access_level: repository_project.team.max_member_access(current_user&.id),
|
||||
repository_path: push_scope_container_registry_path.to_s
|
||||
)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -25,7 +25,10 @@ module Ci
|
|||
end
|
||||
|
||||
def above_threshold?
|
||||
partition.above_threshold?(Ci::Partition::MAX_PARTITION_SIZE)
|
||||
threshold = Ci::Partition::MAX_PARTITION_SIZE
|
||||
threshold = Ci::Partition::GSTG_PARTITION_SIZE if Gitlab.staging?
|
||||
|
||||
partition.above_threshold?(threshold)
|
||||
end
|
||||
|
||||
def headroom_available?
|
||||
|
|
|
|||
|
|
@ -24,7 +24,10 @@ module Ci
|
|||
attr_reader :partition
|
||||
|
||||
def above_threshold?
|
||||
partition.above_threshold?(Ci::Partition::MAX_PARTITION_SIZE)
|
||||
threshold = Ci::Partition::MAX_PARTITION_SIZE
|
||||
threshold = Ci::Partition::GSTG_PARTITION_SIZE if Gitlab.staging?
|
||||
|
||||
partition.above_threshold?(threshold)
|
||||
end
|
||||
|
||||
def sync_available_partitions_statuses!
|
||||
|
|
|
|||
|
|
@ -40,10 +40,9 @@ module ContainerRegistry
|
|||
def check_rule_exists_for_user
|
||||
return false if current_user.can_admin_all_resources?
|
||||
|
||||
user_project_authorization_access_level = current_user.max_member_access_for_project(project.id)
|
||||
project.container_registry_protection_rules.for_action_exists?(
|
||||
action: params[:action],
|
||||
access_level: user_project_authorization_access_level,
|
||||
access_level: project.team.max_member_access(current_user.id),
|
||||
repository_path: params[:repository_path]
|
||||
)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -15,10 +15,8 @@ module Packages
|
|||
return ERROR_RESPONSE_UNAUTHORIZED unless current_user_can_destroy_package?
|
||||
return SUCCESS_RESPONSE_RULE_DOESNT_EXIST if current_user.can_admin_all_resources?
|
||||
|
||||
user_project_authorization_access_level = current_user.max_member_access_for_project(project.id)
|
||||
|
||||
response = project.package_protection_rules.for_delete_exists?(
|
||||
access_level: user_project_authorization_access_level,
|
||||
access_level: project.team.max_member_access(current_user.id),
|
||||
package_name: params[:package_name],
|
||||
package_type: params[:package_type]
|
||||
)
|
||||
|
|
|
|||
|
|
@ -33,10 +33,9 @@ module Packages
|
|||
def check_rule_exists_for_user
|
||||
return false if current_user.can_admin_all_resources?
|
||||
|
||||
user_project_authorization_access_level = current_user.max_member_access_for_project(project.id)
|
||||
project.package_protection_rules.for_action_exists?(
|
||||
action: :push,
|
||||
access_level: user_project_authorization_access_level,
|
||||
access_level: project.team.max_member_access(current_user.id),
|
||||
package_name: params[:package_name],
|
||||
package_type: params[:package_type]
|
||||
)
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ module Projects
|
|||
if current_user
|
||||
return if current_user.can_admin_all_resources?
|
||||
|
||||
user_access_level = current_user.max_member_access_for_project(project.id)
|
||||
user_access_level = project.team.max_member_access(current_user.id)
|
||||
tag_rules = tag_rules.for_delete_and_access(user_access_level)
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ module Projects
|
|||
if current_user
|
||||
return if current_user.can_admin_all_resources?
|
||||
|
||||
user_access_level = current_user.max_member_access_for_project(project.id)
|
||||
user_access_level = project.team.max_member_access(current_user.id)
|
||||
tag_rules = tag_rules.for_delete_and_access(user_access_level)
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -334,7 +334,7 @@ module Projects
|
|||
|
||||
return false unless project.has_container_registry_protected_tag_rules?(
|
||||
action: 'delete',
|
||||
access_level: current_user.max_member_access_for_project(project.id)
|
||||
access_level: project.team.max_member_access(current_user.id)
|
||||
)
|
||||
|
||||
return false unless project.has_container_registry_tags?
|
||||
|
|
|
|||
|
|
@ -10,4 +10,4 @@ milestone: '13.0'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
table_size: small
|
||||
table_size: medium
|
||||
|
|
|
|||
|
|
@ -8,6 +8,6 @@ description: Keeps approval merge request rules
|
|||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/8497
|
||||
milestone: '11.7'
|
||||
gitlab_schema: gitlab_main_cell
|
||||
table_size: small
|
||||
table_size: large
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
|
|
|
|||
|
|
@ -17,5 +17,5 @@ desired_sharding_key:
|
|||
table: approval_merge_request_rules
|
||||
sharding_key: project_id
|
||||
belongs_to: approval_merge_request_rule
|
||||
table_size: small
|
||||
table_size: medium
|
||||
desired_sharding_key_migration_job_name: BackfillApprovalMergeRequestRulesApprovedApproversProjectId
|
||||
|
|
|
|||
|
|
@ -17,5 +17,5 @@ desired_sharding_key:
|
|||
table: approval_merge_request_rules
|
||||
sharding_key: project_id
|
||||
belongs_to: approval_merge_request_rule
|
||||
table_size: small
|
||||
table_size: over_limit
|
||||
desired_sharding_key_migration_job_name: BackfillApprovalMergeRequestRulesUsersProjectId
|
||||
|
|
|
|||
|
|
@ -10,4 +10,4 @@ milestone: '7.12'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
table_size: small
|
||||
table_size: medium
|
||||
|
|
|
|||
|
|
@ -8,4 +8,4 @@ description: TODO
|
|||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/39652
|
||||
milestone: '13.4'
|
||||
gitlab_schema: gitlab_main_clusterwide
|
||||
table_size: small
|
||||
table_size: large
|
||||
|
|
|
|||
|
|
@ -17,5 +17,5 @@ desired_sharding_key:
|
|||
table: deployments
|
||||
sharding_key: project_id
|
||||
belongs_to: deployment
|
||||
table_size: small
|
||||
table_size: medium
|
||||
desired_sharding_key_migration_job_name: BackfillDeploymentMergeRequestsProjectId
|
||||
|
|
|
|||
|
|
@ -21,4 +21,4 @@ schema_inconsistencies:
|
|||
- type: missing_indexes
|
||||
object_name: index_deployments_on_user_id_and_status_and_created_at
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/157136
|
||||
table_size: small
|
||||
table_size: over_limit
|
||||
|
|
|
|||
|
|
@ -9,4 +9,4 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/17147
|
|||
milestone: '12.4'
|
||||
gitlab_schema: gitlab_main
|
||||
sharding_key_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/514600
|
||||
table_size: small
|
||||
table_size: over_limit
|
||||
|
|
|
|||
|
|
@ -9,4 +9,4 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/28113
|
|||
milestone: '13.0'
|
||||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/444222
|
||||
table_size: small
|
||||
table_size: medium
|
||||
|
|
|
|||
|
|
@ -8,6 +8,6 @@ description: Stores daily snapshots of DORA4 metrics per environment.
|
|||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/55473
|
||||
milestone: '13.10'
|
||||
gitlab_schema: gitlab_main_cell
|
||||
table_size: small
|
||||
table_size: medium
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
|
|
|
|||
|
|
@ -4,10 +4,10 @@ classes:
|
|||
- Ai::DuoWorkflows::Checkpoint
|
||||
feature_categories:
|
||||
- duo_workflow
|
||||
description:
|
||||
introduced_by_url:
|
||||
description:
|
||||
introduced_by_url:
|
||||
milestone: '17.2'
|
||||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
table_size: small
|
||||
table_size: medium
|
||||
|
|
|
|||
|
|
@ -11,4 +11,4 @@ milestone: '8.9'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
table_size: small
|
||||
table_size: medium
|
||||
|
|
|
|||
|
|
@ -19,4 +19,4 @@ sharding_key:
|
|||
project_id: projects
|
||||
group_id: namespaces
|
||||
personal_namespace_id: namespaces
|
||||
table_size: small
|
||||
table_size: over_limit
|
||||
|
|
|
|||
|
|
@ -10,4 +10,4 @@ milestone: '9.5'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
table_size: small
|
||||
table_size: medium
|
||||
|
|
|
|||
|
|
@ -10,4 +10,4 @@ milestone: '17.2'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
namespace_id: namespaces
|
||||
table_size: small
|
||||
table_size: medium
|
||||
|
|
|
|||
|
|
@ -10,4 +10,4 @@ milestone: '15.6'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
table_size: small
|
||||
table_size: medium
|
||||
|
|
|
|||
|
|
@ -17,5 +17,5 @@ desired_sharding_key:
|
|||
table: issues
|
||||
sharding_key: namespace_id
|
||||
belongs_to: issue
|
||||
table_size: small
|
||||
table_size: medium
|
||||
desired_sharding_key_migration_job_name: BackfillIssueMetricsNamespaceId
|
||||
|
|
|
|||
|
|
@ -17,5 +17,5 @@ desired_sharding_key:
|
|||
table: issues
|
||||
sharding_key: namespace_id
|
||||
belongs_to: issue
|
||||
table_size: small
|
||||
table_size: medium
|
||||
desired_sharding_key_migration_job_name: BackfillIssueUserMentionsNamespaceId
|
||||
|
|
|
|||
|
|
@ -11,4 +11,4 @@ milestone: "<6.0"
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
namespace_id: namespaces
|
||||
table_size: small
|
||||
table_size: over_limit
|
||||
|
|
|
|||
|
|
@ -12,4 +12,4 @@ description: SSH keys used by users or for deployments.
|
|||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/9ba1224867665844b117fa037e1465bb706b3685
|
||||
milestone: "<6.0"
|
||||
gitlab_schema: gitlab_main_clusterwide
|
||||
table_size: small
|
||||
table_size: medium
|
||||
|
|
|
|||
|
|
@ -10,4 +10,4 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/03654a6abf47c88
|
|||
milestone: '7.2'
|
||||
gitlab_schema: gitlab_main
|
||||
sharding_key_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/514599
|
||||
table_size: small
|
||||
table_size: medium
|
||||
|
|
|
|||
|
|
@ -9,4 +9,4 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/17
|
|||
milestone: '8.2'
|
||||
gitlab_schema: gitlab_main_cell_local
|
||||
sharding_key_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/490482
|
||||
table_size: small
|
||||
table_size: medium
|
||||
|
|
|
|||
|
|
@ -10,4 +10,4 @@ milestone: '8.2'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
table_size: small
|
||||
table_size: medium
|
||||
|
|
|
|||
|
|
@ -13,4 +13,4 @@ milestone: '7.4'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
member_namespace_id: namespaces
|
||||
table_size: small
|
||||
table_size: medium
|
||||
|
|
|
|||
|
|
@ -8,6 +8,6 @@ description: Store allocated assignees for merge requests
|
|||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/26496
|
||||
milestone: '11.10'
|
||||
gitlab_schema: gitlab_main_cell
|
||||
table_size: small
|
||||
table_size: medium
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
|
|
|
|||
|
|
@ -17,5 +17,5 @@ desired_sharding_key:
|
|||
table: merge_requests
|
||||
sharding_key: target_project_id
|
||||
belongs_to: merge_request
|
||||
table_size: small
|
||||
table_size: medium
|
||||
desired_sharding_key_migration_job_name: BackfillMergeRequestCleanupSchedulesProjectId
|
||||
|
|
|
|||
|
|
@ -17,4 +17,4 @@ desired_sharding_key:
|
|||
table: merge_request_diffs
|
||||
sharding_key: project_id
|
||||
belongs_to: merge_request_diff
|
||||
table_size: small
|
||||
table_size: over_limit
|
||||
|
|
|
|||
|
|
@ -17,4 +17,4 @@ desired_sharding_key:
|
|||
table: merge_request_diffs
|
||||
sharding_key: project_id
|
||||
belongs_to: merge_request_diff
|
||||
table_size: small
|
||||
table_size: over_limit
|
||||
|
|
|
|||
|
|
@ -11,4 +11,4 @@ milestone: '6.6'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
table_size: small
|
||||
table_size: over_limit
|
||||
|
|
|
|||
|
|
@ -11,4 +11,4 @@ milestone: '8.12'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
target_project_id: projects
|
||||
table_size: small
|
||||
table_size: over_limit
|
||||
|
|
|
|||
|
|
@ -8,6 +8,6 @@ description: Store allocated reviewers for merge requests
|
|||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/40358
|
||||
milestone: '13.4'
|
||||
gitlab_schema: gitlab_main_cell
|
||||
table_size: small
|
||||
table_size: medium
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
|
|
|
|||
|
|
@ -8,6 +8,6 @@ description: Store user mentions for merge requests
|
|||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/19009
|
||||
milestone: '12.6'
|
||||
gitlab_schema: gitlab_main_cell
|
||||
table_size: small
|
||||
table_size: medium
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
|
|
|
|||
|
|
@ -10,4 +10,4 @@ milestone: "<6.0"
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
target_project_id: projects
|
||||
table_size: small
|
||||
table_size: over_limit
|
||||
|
|
|
|||
|
|
@ -8,6 +8,6 @@ description: TODO
|
|||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74290
|
||||
milestone: '14.6'
|
||||
gitlab_schema: gitlab_main_cell
|
||||
table_size: small
|
||||
table_size: medium
|
||||
sharding_key:
|
||||
target_project_id: projects
|
||||
|
|
|
|||
|
|
@ -20,4 +20,4 @@ schema_inconsistencies:
|
|||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/135040
|
||||
sharding_key:
|
||||
organization_id: organizations
|
||||
table_size: small
|
||||
table_size: large
|
||||
|
|
|
|||
|
|
@ -9,4 +9,4 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/18
|
|||
milestone: '11.0'
|
||||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/444222
|
||||
table_size: small
|
||||
table_size: over_limit
|
||||
|
|
|
|||
|
|
@ -23,4 +23,4 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/9ba122486766584
|
|||
milestone: "<6.0"
|
||||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/444222
|
||||
table_size: small
|
||||
table_size: over_limit
|
||||
|
|
|
|||
|
|
@ -11,4 +11,4 @@ milestone: '7.7'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
organization_id: organizations
|
||||
table_size: small
|
||||
table_size: medium
|
||||
|
|
|
|||
|
|
@ -11,4 +11,4 @@ milestone: '7.7'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
organization_id: organizations
|
||||
table_size: small
|
||||
table_size: over_limit
|
||||
|
|
|
|||
|
|
@ -8,6 +8,6 @@ description: Join table between packages_packages and packages_dependencies
|
|||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/20549
|
||||
milestone: '12.6'
|
||||
gitlab_schema: gitlab_main_cell
|
||||
table_size: small
|
||||
table_size: medium
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
|
|
|
|||
|
|
@ -17,5 +17,5 @@ desired_sharding_key:
|
|||
table: packages_package_files
|
||||
sharding_key: project_id
|
||||
belongs_to: package_file
|
||||
table_size: small
|
||||
table_size: medium
|
||||
desired_sharding_key_migration_job_name: BackfillPackagesPackageFileBuildInfosProjectId
|
||||
|
|
|
|||
|
|
@ -10,4 +10,4 @@ milestone: '11.3'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
table_size: small
|
||||
table_size: over_limit
|
||||
|
|
|
|||
|
|
@ -24,4 +24,4 @@ milestone: '11.3'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
table_size: small
|
||||
table_size: medium
|
||||
|
|
|
|||
|
|
@ -10,4 +10,4 @@ milestone: '8.9'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
organization_id: organizations
|
||||
table_size: small
|
||||
table_size: large
|
||||
|
|
|
|||
|
|
@ -8,4 +8,4 @@ description: Tracks licenses under which a given package version has been publis
|
|||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102794
|
||||
milestone: '15.6'
|
||||
gitlab_schema: gitlab_pm
|
||||
table_size: small
|
||||
table_size: medium
|
||||
|
|
|
|||
|
|
@ -8,4 +8,4 @@ description: Tracks package versions served by public package registries.
|
|||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102794
|
||||
milestone: '15.6'
|
||||
gitlab_schema: gitlab_pm
|
||||
table_size: small
|
||||
table_size: medium
|
||||
|
|
|
|||
|
|
@ -11,4 +11,4 @@ milestone: '8.14'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
table_size: small
|
||||
table_size: over_limit
|
||||
|
|
|
|||
|
|
@ -10,4 +10,4 @@ milestone: '11.9'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
table_size: small
|
||||
table_size: medium
|
||||
|
|
|
|||
|
|
@ -11,4 +11,4 @@ milestone: '8.12'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
table_size: small
|
||||
table_size: medium
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue