Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
1926d423f0
commit
6287caa6fa
|
@ -6,14 +6,24 @@ module Types
|
|||
class DetailedStatusType < BaseObject
|
||||
graphql_name 'DetailedStatus'
|
||||
|
||||
field :group, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
|
||||
field :icon, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
|
||||
field :favicon, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
|
||||
field :details_path, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
|
||||
field :has_details, GraphQL::BOOLEAN_TYPE, null: false, method: :has_details? # rubocop:disable Graphql/Descriptions
|
||||
field :label, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
|
||||
field :text, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
|
||||
field :tooltip, GraphQL::STRING_TYPE, null: false, method: :status_tooltip # rubocop:disable Graphql/Descriptions
|
||||
field :group, GraphQL::STRING_TYPE, null: false,
|
||||
description: 'Group of the pipeline status'
|
||||
field :icon, GraphQL::STRING_TYPE, null: false,
|
||||
description: 'Icon of the pipeline status'
|
||||
field :favicon, GraphQL::STRING_TYPE, null: false,
|
||||
description: 'Favicon of the pipeline status'
|
||||
field :details_path, GraphQL::STRING_TYPE, null: false,
|
||||
description: 'Path of the details for the pipeline status'
|
||||
field :has_details, GraphQL::BOOLEAN_TYPE, null: false,
|
||||
description: 'Indicates if the pipeline status has further details',
|
||||
method: :has_details?
|
||||
field :label, GraphQL::STRING_TYPE, null: false,
|
||||
description: 'Label of the pipeline status'
|
||||
field :text, GraphQL::STRING_TYPE, null: false,
|
||||
description: 'Text of the pipeline status'
|
||||
field :tooltip, GraphQL::STRING_TYPE, null: false,
|
||||
description: 'Tooltip associated with the pipeline status',
|
||||
method: :status_tooltip
|
||||
end
|
||||
# rubocop: enable Graphql/AuthorizeTypes
|
||||
end
|
||||
|
|
|
@ -9,29 +9,34 @@ module Types
|
|||
|
||||
expose_permissions Types::PermissionTypes::Ci::Pipeline
|
||||
|
||||
field :id, GraphQL::ID_TYPE, null: false # rubocop:disable Graphql/Descriptions
|
||||
field :iid, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
|
||||
field :id, GraphQL::ID_TYPE, null: false,
|
||||
description: 'ID of the pipeline'
|
||||
field :iid, GraphQL::STRING_TYPE, null: false,
|
||||
description: 'Internal ID of the pipeline'
|
||||
|
||||
field :sha, GraphQL::STRING_TYPE, null: false # rubocop:disable Graphql/Descriptions
|
||||
field :before_sha, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions
|
||||
field :status, PipelineStatusEnum, null: false # rubocop:disable Graphql/Descriptions
|
||||
field :detailed_status, # rubocop:disable Graphql/Descriptions
|
||||
Types::Ci::DetailedStatusType,
|
||||
null: false,
|
||||
field :sha, GraphQL::STRING_TYPE, null: false,
|
||||
description: "SHA of the pipeline's commit"
|
||||
field :before_sha, GraphQL::STRING_TYPE, null: true,
|
||||
description: "Base SHA of the source branch"
|
||||
field :status, PipelineStatusEnum, null: false,
|
||||
description: "Status of the pipeline (#{::Ci::Pipeline.all_state_names.compact.join(', ').upcase})"
|
||||
field :detailed_status, Types::Ci::DetailedStatusType, null: false,
|
||||
description: 'Detailed status of the pipeline',
|
||||
resolve: -> (obj, _args, ctx) { obj.detailed_status(ctx[:current_user]) }
|
||||
field :duration,
|
||||
GraphQL::INT_TYPE,
|
||||
null: true,
|
||||
field :duration, GraphQL::INT_TYPE, null: true,
|
||||
description: "Duration of the pipeline in seconds"
|
||||
field :coverage,
|
||||
GraphQL::FLOAT_TYPE,
|
||||
null: true,
|
||||
field :coverage, GraphQL::FLOAT_TYPE, null: true,
|
||||
description: "Coverage percentage"
|
||||
field :created_at, Types::TimeType, null: false # rubocop:disable Graphql/Descriptions
|
||||
field :updated_at, Types::TimeType, null: false # rubocop:disable Graphql/Descriptions
|
||||
field :started_at, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions
|
||||
field :finished_at, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions
|
||||
field :committed_at, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions
|
||||
field :created_at, Types::TimeType, null: false,
|
||||
description: "Timestamp of the pipeline's creation"
|
||||
field :updated_at, Types::TimeType, null: false,
|
||||
description: "Timestamp of the pipeline's last activity"
|
||||
field :started_at, Types::TimeType, null: true,
|
||||
description: 'Timestamp when the pipeline was started'
|
||||
field :finished_at, Types::TimeType, null: true,
|
||||
description: "Timestamp of the pipeline's completion"
|
||||
field :committed_at, Types::TimeType, null: true,
|
||||
description: "Timestamp of the pipeline's commit"
|
||||
|
||||
# TODO: Add triggering user as a type
|
||||
end
|
||||
|
|
|
@ -5,14 +5,13 @@
|
|||
## Automatic housekeeping
|
||||
|
||||
GitLab automatically runs `git gc` and `git repack` on repositories
|
||||
after Git pushes. If needed you can change how often this happens, or
|
||||
to turn it off, go to **Admin area > Settings**
|
||||
(`/admin/application_settings`).
|
||||
after Git pushes. You can change how often this happens or turn it off in
|
||||
**Admin area > Settings > Repository** (`/admin/application_settings/repository`).
|
||||
|
||||
## Manual housekeeping
|
||||
|
||||
The housekeeping function will run a `repack` or `gc` depending on the
|
||||
"Automatic Git repository housekeeping" settings configured in **Admin area > Settings**
|
||||
The housekeeping function runs `repack` or `gc` depending on the
|
||||
**Housekeeping** settings configured in **Admin area > Settings > Repository**.
|
||||
|
||||
For example in the following scenario a `git repack -d` will be executed:
|
||||
|
||||
|
|
|
@ -5,8 +5,8 @@ InfluxDB support is scheduled to be removed in GitLab 13.0.
|
|||
You are advised to use [Prometheus](../prometheus/index.md) instead.
|
||||
|
||||
GitLab Performance Monitoring is disabled by default. To enable it and change any of its
|
||||
settings, navigate to the Admin area in **Settings > Metrics**
|
||||
(`/admin/application_settings`).
|
||||
settings, navigate to **Admin Area > Settings > Metrics and profiling**
|
||||
(`/admin/application_settings/metrics_and_profiling`).
|
||||
|
||||
The minimum required settings you need to set are the InfluxDB host and port.
|
||||
Make sure _Enable InfluxDB Metrics_ is checked and hit **Save** to save the
|
||||
|
|
|
@ -36,10 +36,9 @@ in `repocheck.log`:
|
|||
- `/var/log/gitlab/gitlab-rails` for Omnibus installations
|
||||
- `/home/git/gitlab/log` for installations from source
|
||||
|
||||
If for some reason the periodic repository check caused a lot of false
|
||||
alarms you can choose to clear *all* repository check states by
|
||||
clicking "Clear all repository checks" on the **Settings** page of the
|
||||
admin panel (`/admin/application_settings`).
|
||||
If the periodic repository check causes false alarms, you can clear all repository check states by
|
||||
navigating to **Admin area > Settings > Repository**
|
||||
(`/admin/application_settings/repository`) and clicking **Clear all repository checks**.
|
||||
|
||||
---
|
||||
[ce-3232]: https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/3232 "Auto git fsck"
|
||||
|
|
|
@ -957,13 +957,44 @@ type DestroySnippetPayload {
|
|||
}
|
||||
|
||||
type DetailedStatus {
|
||||
"""
|
||||
Path of the details for the pipeline status
|
||||
"""
|
||||
detailsPath: String!
|
||||
|
||||
"""
|
||||
Favicon of the pipeline status
|
||||
"""
|
||||
favicon: String!
|
||||
|
||||
"""
|
||||
Group of the pipeline status
|
||||
"""
|
||||
group: String!
|
||||
|
||||
"""
|
||||
Indicates if the pipeline status has further details
|
||||
"""
|
||||
hasDetails: Boolean!
|
||||
|
||||
"""
|
||||
Icon of the pipeline status
|
||||
"""
|
||||
icon: String!
|
||||
|
||||
"""
|
||||
Label of the pipeline status
|
||||
"""
|
||||
label: String!
|
||||
|
||||
"""
|
||||
Text of the pipeline status
|
||||
"""
|
||||
text: String!
|
||||
|
||||
"""
|
||||
Tooltip associated with the pipeline status
|
||||
"""
|
||||
tooltip: String!
|
||||
}
|
||||
|
||||
|
@ -1693,7 +1724,7 @@ type EpicIssue implements Noteable {
|
|||
designCollection: DesignCollection
|
||||
|
||||
"""
|
||||
Deprecated. Use `design_collection`.
|
||||
Deprecated. Use `design_collection`
|
||||
"""
|
||||
designs: DesignCollection @deprecated(reason: "use design_collection")
|
||||
|
||||
|
@ -2508,7 +2539,7 @@ type Issue implements Noteable {
|
|||
designCollection: DesignCollection
|
||||
|
||||
"""
|
||||
Deprecated. Use `design_collection`.
|
||||
Deprecated. Use `design_collection`
|
||||
"""
|
||||
designs: DesignCollection @deprecated(reason: "use design_collection")
|
||||
|
||||
|
@ -4312,26 +4343,69 @@ type PageInfo {
|
|||
}
|
||||
|
||||
type Pipeline {
|
||||
"""
|
||||
Base SHA of the source branch
|
||||
"""
|
||||
beforeSha: String
|
||||
|
||||
"""
|
||||
Timestamp of the pipeline's commit
|
||||
"""
|
||||
committedAt: Time
|
||||
|
||||
"""
|
||||
Coverage percentage
|
||||
"""
|
||||
coverage: Float
|
||||
|
||||
"""
|
||||
Timestamp of the pipeline's creation
|
||||
"""
|
||||
createdAt: Time!
|
||||
|
||||
"""
|
||||
Detailed status of the pipeline
|
||||
"""
|
||||
detailedStatus: DetailedStatus!
|
||||
|
||||
"""
|
||||
Duration of the pipeline in seconds
|
||||
"""
|
||||
duration: Int
|
||||
|
||||
"""
|
||||
Timestamp of the pipeline's completion
|
||||
"""
|
||||
finishedAt: Time
|
||||
|
||||
"""
|
||||
ID of the pipeline
|
||||
"""
|
||||
id: ID!
|
||||
|
||||
"""
|
||||
Internal ID of the pipeline
|
||||
"""
|
||||
iid: String!
|
||||
|
||||
"""
|
||||
SHA of the pipeline's commit
|
||||
"""
|
||||
sha: String!
|
||||
|
||||
"""
|
||||
Timestamp when the pipeline was started
|
||||
"""
|
||||
startedAt: Time
|
||||
|
||||
"""
|
||||
Status of the pipeline (CREATED, PREPARING, PENDING, RUNNING, FAILED, SUCCESS, CANCELED, SKIPPED, MANUAL, SCHEDULED)
|
||||
"""
|
||||
status: PipelineStatusEnum!
|
||||
|
||||
"""
|
||||
Timestamp of the pipeline's last activity
|
||||
"""
|
||||
updatedAt: Time!
|
||||
|
||||
"""
|
||||
|
|
|
@ -8148,7 +8148,7 @@
|
|||
},
|
||||
{
|
||||
"name": "designs",
|
||||
"description": "Deprecated. Use `design_collection`.",
|
||||
"description": "Deprecated. Use `design_collection`",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -9578,7 +9578,7 @@
|
|||
},
|
||||
{
|
||||
"name": "designs",
|
||||
"description": "Deprecated. Use `design_collection`.",
|
||||
"description": "Deprecated. Use `design_collection`",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -12029,7 +12029,7 @@
|
|||
"fields": [
|
||||
{
|
||||
"name": "beforeSha",
|
||||
"description": null,
|
||||
"description": "Base SHA of the source branch",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -12043,7 +12043,7 @@
|
|||
},
|
||||
{
|
||||
"name": "committedAt",
|
||||
"description": null,
|
||||
"description": "Timestamp of the pipeline's commit",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -12071,7 +12071,7 @@
|
|||
},
|
||||
{
|
||||
"name": "createdAt",
|
||||
"description": null,
|
||||
"description": "Timestamp of the pipeline's creation",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -12089,7 +12089,7 @@
|
|||
},
|
||||
{
|
||||
"name": "detailedStatus",
|
||||
"description": null,
|
||||
"description": "Detailed status of the pipeline",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -12121,7 +12121,7 @@
|
|||
},
|
||||
{
|
||||
"name": "finishedAt",
|
||||
"description": null,
|
||||
"description": "Timestamp of the pipeline's completion",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -12135,7 +12135,7 @@
|
|||
},
|
||||
{
|
||||
"name": "id",
|
||||
"description": null,
|
||||
"description": "ID of the pipeline",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -12153,7 +12153,7 @@
|
|||
},
|
||||
{
|
||||
"name": "iid",
|
||||
"description": null,
|
||||
"description": "Internal ID of the pipeline",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -12171,7 +12171,7 @@
|
|||
},
|
||||
{
|
||||
"name": "sha",
|
||||
"description": null,
|
||||
"description": "SHA of the pipeline's commit",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -12189,7 +12189,7 @@
|
|||
},
|
||||
{
|
||||
"name": "startedAt",
|
||||
"description": null,
|
||||
"description": "Timestamp when the pipeline was started",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -12203,7 +12203,7 @@
|
|||
},
|
||||
{
|
||||
"name": "status",
|
||||
"description": null,
|
||||
"description": "Status of the pipeline (CREATED, PREPARING, PENDING, RUNNING, FAILED, SUCCESS, CANCELED, SKIPPED, MANUAL, SCHEDULED)",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -12221,7 +12221,7 @@
|
|||
},
|
||||
{
|
||||
"name": "updatedAt",
|
||||
"description": null,
|
||||
"description": "Timestamp of the pipeline's last activity",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -12408,7 +12408,7 @@
|
|||
"fields": [
|
||||
{
|
||||
"name": "detailsPath",
|
||||
"description": null,
|
||||
"description": "Path of the details for the pipeline status",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -12426,7 +12426,7 @@
|
|||
},
|
||||
{
|
||||
"name": "favicon",
|
||||
"description": null,
|
||||
"description": "Favicon of the pipeline status",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -12444,7 +12444,7 @@
|
|||
},
|
||||
{
|
||||
"name": "group",
|
||||
"description": null,
|
||||
"description": "Group of the pipeline status",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -12462,7 +12462,7 @@
|
|||
},
|
||||
{
|
||||
"name": "hasDetails",
|
||||
"description": null,
|
||||
"description": "Indicates if the pipeline status has further details",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -12480,7 +12480,7 @@
|
|||
},
|
||||
{
|
||||
"name": "icon",
|
||||
"description": null,
|
||||
"description": "Icon of the pipeline status",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -12498,7 +12498,7 @@
|
|||
},
|
||||
{
|
||||
"name": "label",
|
||||
"description": null,
|
||||
"description": "Label of the pipeline status",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -12516,7 +12516,7 @@
|
|||
},
|
||||
{
|
||||
"name": "text",
|
||||
"description": null,
|
||||
"description": "Text of the pipeline status",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
@ -12534,7 +12534,7 @@
|
|||
},
|
||||
{
|
||||
"name": "tooltip",
|
||||
"description": null,
|
||||
"description": "Tooltip associated with the pipeline status",
|
||||
"args": [
|
||||
|
||||
],
|
||||
|
|
|
@ -165,14 +165,14 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
|
|||
|
||||
| Name | Type | Description |
|
||||
| --- | ---- | ---------- |
|
||||
| `group` | String! | |
|
||||
| `icon` | String! | |
|
||||
| `favicon` | String! | |
|
||||
| `detailsPath` | String! | |
|
||||
| `hasDetails` | Boolean! | |
|
||||
| `label` | String! | |
|
||||
| `text` | String! | |
|
||||
| `tooltip` | String! | |
|
||||
| `group` | String! | Group of the pipeline status |
|
||||
| `icon` | String! | Icon of the pipeline status |
|
||||
| `favicon` | String! | Favicon of the pipeline status |
|
||||
| `detailsPath` | String! | Path of the details for the pipeline status |
|
||||
| `hasDetails` | Boolean! | Indicates if the pipeline status has further details |
|
||||
| `label` | String! | Label of the pipeline status |
|
||||
| `text` | String! | Text of the pipeline status |
|
||||
| `tooltip` | String! | Tooltip associated with the pipeline status |
|
||||
|
||||
### DiffPosition
|
||||
|
||||
|
@ -283,7 +283,7 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
|
|||
| `taskCompletionStatus` | TaskCompletionStatus! | Task completion status of the issue |
|
||||
| `epic` | Epic | Epic to which this issue belongs |
|
||||
| `weight` | Int | Weight of the issue |
|
||||
| `designs` | DesignCollection | Deprecated. Use `design_collection`. |
|
||||
| `designs` | DesignCollection | Deprecated. Use `design_collection` |
|
||||
| `designCollection` | DesignCollection | Collection of design images associated with this issue |
|
||||
| `epicIssueId` | ID! | ID of the epic-issue relation |
|
||||
| `relationPath` | String | URI path of the epic-issue relation |
|
||||
|
@ -378,7 +378,7 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
|
|||
| `taskCompletionStatus` | TaskCompletionStatus! | Task completion status of the issue |
|
||||
| `epic` | Epic | Epic to which this issue belongs |
|
||||
| `weight` | Int | Weight of the issue |
|
||||
| `designs` | DesignCollection | Deprecated. Use `design_collection`. |
|
||||
| `designs` | DesignCollection | Deprecated. Use `design_collection` |
|
||||
| `designCollection` | DesignCollection | Collection of design images associated with this issue |
|
||||
|
||||
### IssuePermissions
|
||||
|
@ -631,19 +631,19 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
|
|||
| Name | Type | Description |
|
||||
| --- | ---- | ---------- |
|
||||
| `userPermissions` | PipelinePermissions! | Permissions for the current user on the resource |
|
||||
| `id` | ID! | |
|
||||
| `iid` | String! | |
|
||||
| `sha` | String! | |
|
||||
| `beforeSha` | String | |
|
||||
| `status` | PipelineStatusEnum! | |
|
||||
| `detailedStatus` | DetailedStatus! | |
|
||||
| `id` | ID! | ID of the pipeline |
|
||||
| `iid` | String! | Internal ID of the pipeline |
|
||||
| `sha` | String! | SHA of the pipeline's commit |
|
||||
| `beforeSha` | String | Base SHA of the source branch |
|
||||
| `status` | PipelineStatusEnum! | Status of the pipeline (CREATED, PREPARING, PENDING, RUNNING, FAILED, SUCCESS, CANCELED, SKIPPED, MANUAL, SCHEDULED) |
|
||||
| `detailedStatus` | DetailedStatus! | Detailed status of the pipeline |
|
||||
| `duration` | Int | Duration of the pipeline in seconds |
|
||||
| `coverage` | Float | Coverage percentage |
|
||||
| `createdAt` | Time! | |
|
||||
| `updatedAt` | Time! | |
|
||||
| `startedAt` | Time | |
|
||||
| `finishedAt` | Time | |
|
||||
| `committedAt` | Time | |
|
||||
| `createdAt` | Time! | Timestamp of the pipeline's creation |
|
||||
| `updatedAt` | Time! | Timestamp of the pipeline's last activity |
|
||||
| `startedAt` | Time | Timestamp when the pipeline was started |
|
||||
| `finishedAt` | Time | Timestamp of the pipeline's completion |
|
||||
| `committedAt` | Time | Timestamp of the pipeline's commit |
|
||||
|
||||
### PipelinePermissions
|
||||
|
||||
|
|
|
@ -71,6 +71,7 @@ description: 'Learn how to contribute to GitLab.'
|
|||
- [Auto DevOps development guide](auto_devops.md)
|
||||
- [Mass Inserting Models](mass_insert.md)
|
||||
- [Cycle Analytics development guide](cycle_analytics.md)
|
||||
- [Issue types vs first-class types](issue_types.md)
|
||||
|
||||
## Performance guides
|
||||
|
||||
|
@ -106,6 +107,7 @@ description: 'Learn how to contribute to GitLab.'
|
|||
### Debugging
|
||||
|
||||
- Tracing the source of an SQL query using query comments with [Marginalia](database_query_comments.md)
|
||||
- Tracing the source of an SQL query in Rails console using [Verbose Query Logs](https://guides.rubyonrails.org/debugging_rails_applications.html#verbose-query-logs)
|
||||
|
||||
### Best practices
|
||||
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
# Issue Types
|
||||
|
||||
Sometimes when a new resource type is added it's not clear if it should be only an
|
||||
"extension" of Issue (Issue Type) or if it should be a new first-class resource type
|
||||
(similar to Issue, Epic, Merge Request, Snippet).
|
||||
|
||||
The idea of Issue Types was first proposed in [this
|
||||
issue](https://gitlab.com/gitlab-org/gitlab/issues/8767) and its usage was
|
||||
discussed few times since then, for example in [incident
|
||||
management](https://gitlab.com/gitlab-org/gitlab-foss/issues/55532).
|
||||
|
||||
## What is an Issue Type
|
||||
|
||||
Issue Type is a resource type which extends the existing Issue type and can be
|
||||
used anywhere where Issue is used - for example when listing or searching
|
||||
issues or when linking objects of the type from Epics. It should use the same
|
||||
`issues` table, additional fields can be stored in a separate table.
|
||||
|
||||
## When an Issue Type should be used
|
||||
|
||||
- When the new type only adds new fields to the basic Issue type without
|
||||
removing existing fields (but it's OK if some fields from the basic Issue
|
||||
type are hidden in user interface/API).
|
||||
- When the new type can be used anywhere where the basic Issue type is used.
|
||||
|
||||
## When a first-class resource type should be used
|
||||
|
||||
- When a separate model and table is used for the new resource.
|
||||
- When some fields of the basic Issue type need to be removed - hiding in the UI
|
||||
is OK, but not complete removal.
|
||||
- When the new resource cannot be used instead of the basic Issue type,
|
||||
for example:
|
||||
|
||||
- You can't add it to an epic.
|
||||
- You can't close it from a commit or a merge request.
|
||||
- You can't mark it as related to another issue.
|
||||
|
||||
If an Issue type can not be used you can still define a first-class type and
|
||||
then include concerns such as `Issuable` or `Noteable` to reuse functionality
|
||||
which is common for all our issue-related resources. But you still need to
|
||||
define the interface for working with the new resource and update some other
|
||||
components to make them work with the new type.
|
||||
|
||||
Usage of the Issue type limits what fields, functionality, or both is available
|
||||
for the type. However, this functionality is provided by default.
|
Loading…
Reference in New Issue