diff options
Diffstat (limited to 'doc/user/project/issues/managing_issues.md')
-rw-r--r-- | doc/user/project/issues/managing_issues.md | 681 |
1 files changed, 458 insertions, 223 deletions
diff --git a/doc/user/project/issues/managing_issues.md b/doc/user/project/issues/managing_issues.md index 6b3d5d6563a..1a23902514a 100644 --- a/doc/user/project/issues/managing_issues.md +++ b/doc/user/project/issues/managing_issues.md @@ -4,293 +4,411 @@ group: Project Management info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments --- -# Managing issues **(FREE)** +# Manage issues **(FREE)** [GitLab Issues](index.md) are the fundamental medium for collaborating on ideas and planning work in GitLab. -Key actions for issues include: +## Create an issue -- [Creating issues](#create-a-new-issue) -- [Moving issues](#moving-issues) -- [Closing issues](#closing-issues) -- [Deleting issues](#deleting-issues) -- [Promoting issues](#promote-an-issue-to-an-epic) **(PREMIUM)** +When you create an issue, you are prompted to enter the fields of the issue. +If you know the values you want to assign to an issue, you can use +[quick actions](../quick_actions.md) to enter them. -## Create a new issue +You can create an issue in many ways in GitLab: -When you create a new issue, you are prompted to fill in the [data and fields of the issue](issue_data_and_actions.md), -as illustrated below. If you know the values you want to assign to an issue, you can use the -[Quick actions](../quick_actions.md) feature to input values. +- [From a project](#from-a-project) +- [From a group](#from-a-group) +- [From another issue](#from-another-issue) +- [From an issue board](#from-an-issue-board) +- [By sending an email](#by-sending-an-email) +- Using a URL with prefilled fields +- [Using Service Desk](#using-service-desk) -While creating an issue, you can associate it to an existing epic from current group by -selecting it using **Epic** dropdown. +### From a project -### Accessing the New Issue form +Prerequisites: -There are many ways to get to the New Issue form from a project's page: +- You must have at least the [Guest role](../../permissions.md) for the project. -- Navigate to your **Project's Dashboard** > **Issues** > **New Issue**: +To create an issue: - ![New issue from the issue list view](img/new_issue_from_tracker_list.png) +1. On the top bar, select **Menu > Projects** and find your project. +1. Either: -- From an **open issue** in your project, click the vertical ellipsis (**{ellipsis_v}**) button - to open a dropdown menu, and then click **New Issue** to create a new issue in the same project: + - On the left sidebar, select **Issues**, and then, in the top right corner, select **New issue**. + - On the top bar, select the plus sign (**{plus-square}**) and then, under **This project**, + select **New issue**. - ![New issue from an open issue](img/new_issue_from_open_issue_v13_6.png) +1. Complete the [fields](#fields-in-the-new-issue-form). +1. Select **Create issue**. -- From your **Project's Dashboard**, click the plus sign (**+**) to open a dropdown - menu with a few options. Select **New Issue** to create an issue in that project: +The newly created issue opens. - ![New issue from a project's dashboard](img/new_issue_from_projects_dashboard.png) +### From a group -- From an **issue board**, create a new issue by clicking on the plus sign (**+**) at the top of a list. - It opens a new issue for that project, pre-labeled with its respective list. +Issues belong to projects, but when you're in a group, you can access and create issues that belong +to the projects in the group. - ![From the issue board](img/new_issue_from_issue_board.png) +Prerequisites: -### Elements of the New Issue form +- You must have at least the [Guest role](../../permissions.md) for the project in the group. -> Ability to add the new issue to an epic [was introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/13847) in [GitLab Premium](https://about.gitlab.com/pricing/) 13.1. +To create an issue from a group: -![New issue from the issues list](img/new_issue_v13_1.png) +1. On the top bar, select **Menu > Groups** and find your group. +1. On the left sidebar, select **Issues**. +1. In the top right corner, select **Select project to create issue**. +1. Select the project you'd like to create an issue for. The button now reflects the selected + project. +1. Select **New issue in `<project name>`**. +1. Complete the [fields](#fields-in-the-new-issue-form). +1. Select **Create issue**. -When you're creating a new issue, these are the fields you can fill in: +The newly created issue opens. -- Title -- Description -- Checkbox to make the issue [confidential](confidential_issues.md) -- Assignee -- Weight -- [Epic](../../group/epics/index.md) -- Due date -- Milestone -- Labels +The project you selected most recently becomes the default for your next visit. +This can save you a lot of time and clicks, if you mostly create issues for the same project. -### New issue from the group-level issue tracker +### From another issue -To visit the issue tracker for all projects in your group: +> New issue becoming linked to the issue of origin [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68226) in GitLab 14.3. -1. Go to the group dashboard. -1. On the left sidebar, select **Issues**. -1. In the top-right, select the **Select project to create issue** button. -1. Select the project you'd like to create an issue for. The button now reflects the selected - project. -1. Select the button to create an issue in the selected project. +You can create a new issue from an existing one. The two issues can then be marked as related. -![Select project to create issue](img/select_project_from_group_level_issue_tracker_v13_11.png) +Prerequisites: -The project you selected most recently becomes the default for your next visit. -This should save you a lot of time and clicks, if you mostly create issues for the same project. +- You must have at least the [Guest role](../../permissions.md) for the project. -### New issue via Service Desk +To create an issue from another issue: -Enable [Service Desk](../service_desk.md) for your project and offer email support. -Now, when your customer sends a new email, a new issue can be created in -the appropriate project and followed up from there. +1. In an existing issue, select the vertical ellipsis (**{ellipsis_v}**). +1. Select **New issue**. +1. Complete the [fields](#fields-in-the-new-issue-form). + The new issue's description is prefilled with `Related to #123`, where `123` is the ID of the + issue of origin. If you keep this mention in the description, the two issues become + [linked](related_issues.md). +1. Select **Create issue**. -### New issue via email +The newly created issue opens. -A link to **Email a new issue to this project** is displayed at the bottom of a project's -**Issues List** page. The link is shown only if your GitLab instance has [incoming email](../../../administration/incoming_email.md) -configured and there is at least one issue in the issue list. +### From an issue board -![Bottom of a project issues page](img/new_issue_from_email.png) +You can create a new issue from an [issue board](../issue_board.md). -When you click this link, an email address is generated and displayed, which should be used -by **you only**, to create issues in this project. You can save this address as a -contact in your email client for quick access. +Prerequisites: -WARNING: -This is a private email address, generated just for you. **Keep it to yourself**, -as anyone who knows it can create issues or merge requests as if they -were you. If the address is compromised, or you want to regenerate it, -click **Email a new issue to this project**, followed by **reset it**. +- You must have at least the [Guest role](../../permissions.md) for the project. + +To create an issue from a project issue board: + +1. On the top bar, select **Menu > Projects** and find your project. +1. Select **Issues > Boards**. +1. At the top of a board list, select **New issue** (**{plus-square}**). +1. Enter the issue's title. +1. Select **Create issue**. + +To create an issue from a group issue board: + +1. On the top bar, select **Menu > Groups** and find your group. +1. Select **Issues > Boards**. +1. At the top of a board list, select **New issue** (**{plus-square}**). +1. Enter the issue's title. +1. Under **Projects**, select the project in the group that the issue should belong to. +1. Select **Create issue**. -Sending an email to this address creates a new issue associated with your account for -this project, where: +The issue is created and shows up in the board list. It shares the list's characteristic, so, for +example, if the list is scoped to a label `Frontend`, the new issue also has this label. -- The email subject becomes the issue title. -- The email body becomes the issue description. -- [Markdown](../../markdown.md) and [quick actions](../quick_actions.md) are supported. +### By sending an email -NOTE: -In GitLab 11.7, we updated the format of the generated email address. However the -older format is still supported, allowing existing aliases or contacts to continue working. +> Generated email address format changed in GitLab 11.7. +> The older format is still supported, so existing aliases and contacts still work. -### New issue via URL with prefilled fields +You can send an email to create an issue in a project on the project's +**Issues List** page. + +Prerequisites: + +- Your GitLab instance must have [incoming email](../../../administration/incoming_email.md) + configured. +- There must be at least one issue in the issue list. +- You must have at least the [Guest role](../../permissions.md) for the project. + +To email an issue to a project: + +1. On the top bar, select **Menu > Projects** and find your project. +1. Select **Issues**. +1. At the bottom of the page, select **Email a new issue to this project**. +1. To copy the email address, select **Copy** (**{copy-to-clipboard}**). +1. From your email client, send an email to this address. + The subject is used as the title of the new issue, and the email body becomes the description. + You can use [Markdown](../../markdown.md) and [quick actions](../quick_actions.md). + +A new issue is created, with your user as the author. +You can save this address as a contact in your email client to use it again. + +WARNING: +The email address you see is a private email address, generated just for you. +**Keep it to yourself**, because anyone who knows it can create issues or merge requests as if they +were you. + +To regenerate the email address: + +1. On the issues list, select **Email a new issue to this project**. +1. Select **reset this token**. + +### Using a URL with prefilled values To link directly to the new issue page with prefilled fields, use query string parameters in a URL. You can embed a URL in an external -HTML page to create issues with certain -fields prefilled. +HTML page to create issues with certain fields prefilled. + +| Field | URL parameter | Notes | +| -------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------- | +| Title | `issue[title]` | Must be [URL-encoded](../../../api/index.md#namespaced-path-encoding). | +| Issue type | `issue[issue_type]` | Either `incident` or `issue`. | +| Description template | `issuable_template` | Cannot be used at the same time as `issue[description]`. Must be [URL-encoded](../../../api/index.md#namespaced-path-encoding). | +| Description | `issue[description]` | Cannot be used at the same time as `issuable_template`. Must be [URL-encoded](../../../api/index.md#namespaced-path-encoding). | +| Confidential | `issue[confidential]` | If `true`, the issue is marked as confidential. | + +Adapt these examples to form your new issue URL with prefilled fields. +To create an issue in the GitLab project: + +- With a prefilled title and description: + + ```plaintext + https://gitlab.com/gitlab-org/gitlab/-/issues/new?issue[title]=Whoa%2C%20we%27re%20half-way%20there&issue[description]=Whoa%2C%20livin%27%20in%20a%20URL + ``` -| Field | URL Parameter Name | Notes | -|----------------------|-----------------------|-------------------------------------------------------| -| title | `issue[title]` | | -| description | `issue[description]` | Cannot be used at the same time as `issuable_template`. | -| description template | `issuable_template` | Cannot be used at the same time as `issue[description]`. | -| issue type | `issue[issue_type]` | Either `incident` or `issue`. | -| confidential | `issue[confidential]` | Parameter value must be `true` to set to confidential. | +- With a prefilled title and description template: -Follow these examples to form your new issue URL with prefilled fields. + ```plaintext + https://gitlab.com/gitlab-org/gitlab/-/issues/new?issue[title]=Validate%20new%20concept&issuable_template=Feature%20Proposal%20-%20basic + ``` -- For a new issue in the GitLab Community Edition project with a pre-filled title - and a pre-filled description, the URL would be `https://gitlab.com/gitlab-org/gitlab-foss/-/issues/new?issue[title]=Validate%20new%20concept&issue[description]=Research%20idea` -- For a new issue in the GitLab Community Edition project with a pre-filled title - and a pre-filled description template, the URL would be `https://gitlab.com/gitlab-org/gitlab-foss/-/issues/new?issue[title]=Validate%20new%20concept&issuable_template=Research%20proposal` -- For a new issue in the GitLab Community Edition project with a pre-filled title, - a pre-filled description, and the confidential flag set, the URL would be `https://gitlab.com/gitlab-org/gitlab-foss/-/issues/new?issue[title]=Validate%20new%20concept&issue[description]=Research%20idea&issue[confidential]=true` +- With a prefilled title, description, and marked as confidential: -## Bulk edit issues at the project level + ```plaintext + https://gitlab.com/gitlab-org/gitlab/-/issues/new?issue[title]=Validate%20new%20concept&issue[description]=Research%20idea&issue[confidential]=true + ``` -> - Assigning epic ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/210470) in GitLab 13.2. +### Using Service Desk + +To offer email support, enable [Service Desk](../service_desk.md) for your project. + +Now, when your customer sends a new email, a new issue can be created in +the appropriate project and followed up from there. + +### Fields in the new issue form + +> Adding the new issue to an epic [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/13847) in GitLab 13.1. + +When you're creating a new issue, you can complete the following fields: + +- Title +- Type: either issue (default) or incident +- [Description template](../description_templates.md): overwrites anything in the Description text box +- Description: you can use [Markdown](../../markdown.md) and [quick actions](../quick_actions.md) +- Checkbox to make the issue [confidential](confidential_issues.md) +- [Assignees](#assignee) +- [Weight](issue_weight.md) +- [Epic](../../group/epics/index.md) +- [Due date](due_dates.md) +- [Milestone](../milestones/index.md) +- [Labels](../labels.md) + +## Edit an issue + +You can edit an issue's title and description. + +Prerequisites: + +- You must have at least the [Reporter role](../../permissions.md) for the project. + +To edit an issue: + +1. To the right of the title, select **Edit title and description** (**{pencil}**). +1. Edit the available fields. +1. Select **Save changes**. + +### Bulk edit issues from a project + +> - Assigning epic [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/210470) in GitLab 13.2. > - Editing health status [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/218395) in GitLab 13.2. > - Editing iteration [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/196806) in GitLab 13.9. -Users with permission level of [Reporter or higher](../../permissions.md) can manage issues. +You can edit multiple issues at a time when you're in a project. + +Prerequisites: + +- You must have at least the [Reporter role](../../permissions.md) for the project. + +To edit multiple issues at the same time: + +1. On the top bar, select **Menu > Projects** and find your project. +1. On the left sidebar, select **Issues**. +1. Select **Edit issues**. A sidebar on the right of your screen appears. +1. Select the checkboxes next to each issue you want to edit. +1. From the sidebar, edit the available fields. +1. Select **Update all**. When bulk editing issues in a project, you can edit the following attributes: -- Status (open/closed) -- Assignee +- Status (open or closed) +- [Assignees](#assignee) - [Epic](../../group/epics/index.md) - [Milestone](../milestones/index.md) - [Labels](../labels.md) - [Health status](#health-status) -- Notification subscription +- [Notification](../../profile/notifications.md) subscription - [Iteration](../../group/iterations/index.md) -To update multiple project issues at the same time: - -1. In a project, go to **Issues > List**. -1. Click **Edit issues**. A sidebar on the right-hand side of your screen appears with editable fields. -1. Select the checkboxes next to each issue you want to edit. -1. Select the appropriate fields and their values from the sidebar. -1. Click **Update all**. - -## Bulk edit issues at the group level +### Bulk edit issues from a group > - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/7249) in GitLab 12.1. -> - Assigning epic ([introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/210470) in GitLab 13.2. +> - Assigning epic [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/210470) in GitLab 13.2. > - Editing health status [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/218395) in GitLab 13.2. > - Editing iteration [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/196806) in GitLab 13.9. -Users with permission level of [Reporter or higher](../../permissions.md) can manage issues. +You can edit multiple issues across multiple projects when you're in a group. + +Prerequisites: + +- You must have at least the [Reporter role](../../permissions.md) for a group. + +To edit multiple issues at the same time: + +1. On the top bar, select **Menu > Groups** and find your group. +1. On the left sidebar, select **Issues**. +1. Select **Edit issues**. A sidebar on the right of your screen appears. +1. Select the checkboxes next to each issue you want to edit. +1. From the sidebar, edit the available fields. +1. Select **Update all**. When bulk editing issues in a group, you can edit the following attributes: - [Epic](../../group/epics/index.md) - [Milestone](../milestones/index.md) +- [Iteration](../../group/iterations/index.md) - [Labels](../labels.md) - [Health status](#health-status) -- [Iteration](../../group/iterations/index.md) -To update multiple project issues at the same time: +## Move an issue -1. In a group, go to **Issues > List**. -1. Click **Edit issues**. A sidebar on the right-hand side of your screen appears with editable fields. -1. Select the checkboxes next to each issue you want to edit. -1. Select the appropriate fields and their values from the sidebar. -1. Click **Update all**. - -## Moving issues - -Moving an issue copies it to the target project, and closes it in the originating project. +When you move an issue, it's closed and copied to the target project. The original issue is not deleted. A system note, which indicates where it came from and went to, is added to both issues. -The "Move issue" button is at the bottom of the right-sidebar when viewing the issue. +Prerequisites: -![move issue - button](img/sidebar_move_issue.png) +- You must have at least the [Reporter role](../../permissions.md) for the project. -### Moving issues in bulk **(FREE SELF)** +To move an issue: -If you have advanced technical skills you can also bulk move all the issues from -one project to another in the rails console. The below script moves all issues -that are not in status **closed** from one project to another. +1. Go to the issue. +1. On the right sidebar, select **Move issue**. +1. Search for a project to move the issue to. +1. Select **Move**. -To access rails console run `sudo gitlab-rails console` on the GitLab server and run the below -script. Please be sure to change `project`, `admin_user`, and `target_project` to your values. -We do also recommend [creating a backup](../../../raketasks/backup_restore.md) before -attempting any changes in the console. +### Bulk move issues **(FREE SELF)** -```ruby -project = Project.find_by_full_path('full path of the project where issues are moved from') -issues = project.issues -admin_user = User.find_by_username('username of admin user') # make sure user has permissions to move the issues -target_project = Project.find_by_full_path('full path of target project where issues moved to') +You can move all open issues from one project to another. -issues.each do |issue| - if issue.state != "closed" && issue.moved_to.nil? - Issues::MoveService.new(project, admin_user).execute(issue, target_project) - else - puts "issue with id: #{issue.id} and title: #{issue.title} was not moved" - end -end; nil -``` +Prerequisites: + +- You must have at least the [Reporter role](../../permissions.md) for the project. + +To do it: + +1. Optional (but recommended). [Create a backup](../../../raketasks/backup_restore.md) before + attempting any changes in the console. +1. Open the [Rails console](../../../administration/operations/rails_console.md). +1. Run the following script. Make sure to change `project`, `admin_user`, and `target_project` to + your values. + + ```ruby + project = Project.find_by_full_path('full path of the project where issues are moved from') + issues = project.issues + admin_user = User.find_by_username('username of admin user') # make sure user has permissions to move the issues + target_project = Project.find_by_full_path('full path of target project where issues moved to') + + issues.each do |issue| + if issue.state != "closed" && issue.moved_to.nil? + Issues::MoveService.new(project, admin_user).execute(issue, target_project) + else + puts "issue with id: #{issue.id} and title: #{issue.title} was not moved" + end + end; nil + ``` + +1. To exit the Rails console, enter `quit`. -## Closing issues +## Close an issue -When you decide that an issue is resolved, or no longer needed, you can close the issue -using the close button: +When you decide that an issue is resolved or no longer needed, you can close it. +The issue is marked as closed but is not deleted. -![close issue - button](img/button_close_issue_v13_6.png) +Prerequisites: -You can also close an issue from the [issue boards](../issue_board.md) by dragging an issue card -from its list and dropping it into the **Closed** list. +- You must have at least the [Reporter role](../../permissions.md) for the project. -![close issue from the issue board](img/close_issue_from_board.gif) +To close an issue, you can do the following: + +- At the top of the issue, select **Close issue**. +- In an [issue board](../issue_board.md), drag an issue card from its list into the **Closed** list. + + ![close issue from the issue board](img/close_issue_from_board.gif) + +### Reopen a closed issue + +Prerequisites: + +- You must have at least the [Reporter role](../../permissions.md) for the project. + +To reopen a closed issue, at the top of the issue, select **Reopen issue**. +A reopened issue is no different from any other open issue. ### Closing issues automatically -When a commit or merge request resolves issues, the issues -can be closed automatically when the commit reaches the project's default branch. +You can close issues automatically by using certain words in the commit message or MR description. -If a commit message or merge request description contains text matching a [defined pattern](#default-closing-pattern), -all issues referenced in the matched text are closed. This happens when the commit -is pushed to a project's [**default** branch](../repository/branches/default.md), -or when a commit or merge request is merged into it. +If a commit message or merge request description contains text matching the [defined pattern](#default-closing-pattern), +all issues referenced in the matched text are closed when either: -For example, if `Closes #4, #6, Related to #5` is included in a Merge Request -description, issues `#4` and `#6` are closed automatically when the MR is merged, but not `#5`. -Using `Related to` flags `#5` as a [related issue](related_issues.md), -but is not closed automatically. +- The commit is pushed to a project's [**default** branch](../repository/branches/default.md). +- The commit or merge request is merged into the default branch. -![merge request closing issue when merged](img/merge_request_closes_issue_v13_11.png) +For example, if you include `Closes #4, #6, Related to #5` in a merge request +description: -If the issue is in a different repository than the MR, add the full URL for the issue(s): +- Issues `#4` and `#6` are closed automatically when the MR is merged. +- Issue `#5` is marked as a [related issue](related_issues.md), but it's not closed automatically. -```markdown -Closes #4, #6, and https://gitlab.com/<username>/<projectname>/issues/<xxx> -``` +Alternatively, when you [create a merge request from an issue](../merge_requests/getting_started.md#merge-requests-to-close-issues), +it inherits the issue's milestone and labels. For performance reasons, automatic issue closing is disabled for the very first push from an existing repository. #### Default closing pattern -When not specified, this default issue closing pattern is used: +To automatically close an issue, use the following keywords followed by the issue reference. -```shell -\b((?:[Cc]los(?:e[sd]?|ing)|\b[Ff]ix(?:e[sd]|ing)?|\b[Rr]esolv(?:e[sd]?|ing)|\b[Ii]mplement(?:s|ed|ing)?)(:?) +(?:(?:issues? +)?%{issue_ref}(?:(?: *,? +and +| *,? *)?)|([A-Z][A-Z0-9_]+-\d+))+) -``` - -This translates to the following keywords: +Available keywords: - Close, Closes, Closed, Closing, close, closes, closed, closing - Fix, Fixes, Fixed, Fixing, fix, fixes, fixed, fixing - Resolve, Resolves, Resolved, Resolving, resolve, resolves, resolved, resolving - Implement, Implements, Implemented, Implementing, implement, implements, implemented, implementing -Note that `%{issue_ref}` is a complex regular expression defined inside the GitLab -source code that can match references to: +Available issue reference formats: - A local issue (`#123`). - A cross-project issue (`group/project#123`). -- A link to an issue (`https://gitlab.example.com/group/project/issues/123`). +- The full URL of an issue (`https://gitlab.example.com/group/project/issues/123`). -For example the following commit message: +For example: ```plaintext Awesome commit message @@ -300,54 +418,93 @@ This commit is also related to #17 and fixes #18, #19 and https://gitlab.example.com/group/otherproject/issues/23. ``` -closes `#18`, `#19`, `#20`, and `#21` in the project this commit is pushed to, +The previous commit message closes `#18`, `#19`, `#20`, and `#21` in the project this commit is pushed to, as well as `#22` and `#23` in `group/otherproject`. `#17` is not closed as it does -not match the pattern. It works with multi-line commit messages as well as one-liners -when used from the command line with `git commit -m`. +not match the pattern. + +You can use the closing patterns in multi-line commit messages or one-liners +done from the command line with `git commit -m`. -#### Disabling automatic issue closing +The default issue closing pattern regex: + +```shell +\b((?:[Cc]los(?:e[sd]?|ing)|\b[Ff]ix(?:e[sd]|ing)?|\b[Rr]esolv(?:e[sd]?|ing)|\b[Ii]mplement(?:s|ed|ing)?)(:?) +(?:(?:issues? +)?%{issue_ref}(?:(?: *,? +and +| *,? *)?)|([A-Z][A-Z0-9_]+-\d+))+) +``` + +#### Disable automatic issue closing > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/19754) in GitLab 12.7. -The automatic issue closing feature can be disabled on a per-project basis -in the [project's repository settings](../settings/index.md). Referenced -issues are still displayed, but are not closed automatically. +You can disable the automatic issue closing feature on a per-project basis +in the [project's settings](../settings/index.md). + +Prerequisites: -![disable issue auto close - settings](img/disable_issue_auto_close.png) +- You must have at least the [Maintainer role](../../permissions.md) for the project. -The automatic issue closing is also disabled in a project if the project has the issue tracker +To disable automatic issue closing: + +1. On the top bar, select **Menu > Projects** and find your project. +1. On the left sidebar, select **Settings > Repository**. +1. Expand **Default branch**. +1. Select **Auto-close referenced issues on default branch**. +1. Select **Save changes**. + +Referenced issues are still displayed, but are not closed automatically. + +The automatic issue closing is disabled by default in a project if the project has the issue tracker disabled. If you want to enable automatic issue closing, make sure to [enable GitLab Issues](../settings/index.md#sharing-and-permissions). -This only applies to issues affected by new merge requests or commits. Already -closed issues remain as-is. +Changing this setting applies only to new merge requests or commits. Already +closed issues remain as they are. If issue tracking is enabled, disabling automatic issue closing only applies to merge requests -attempting to automatically close issues within the same project. +attempting to automatically close issues in the same project. Merge requests in other projects can still close another project's issues. -#### Customizing the issue closing pattern **(FREE SELF)** +#### Customize the issue closing pattern **(FREE SELF)** + +Prerequisites: -In order to change the default issue closing pattern, GitLab administrators must edit the +- You must have the [administrator access level](../../../administration/index.md) for your GitLab instance. + +To change the default issue closing pattern, edit the [`gitlab.rb` or `gitlab.yml` file](../../../administration/issue_closing_pattern.md) of your installation. ## Change the issue type -Users with the [Developer role](../../permissions.md) -can change an issue's type. To do this, edit the issue and select an issue type from the -**Issue type** selector menu: +Prerequisites: + +- You must be the issue author or have at least the [Reporter role](../../permissions.md) for the project. + +To change issue type: + +1. To the right of the title, select **Edit title and description** (**{pencil}**). +1. Edit the issue and select an issue type from the **Issue type** dropdown list: -- [Issue](index.md) -- [Incident](../../../operations/incident_management/index.md) + - Issue + - [Incident](../../../operations/incident_management/index.md) -![Change the issue type](img/issue_type_change_v13_12.png) +1. Select **Save changes**. -## Deleting issues +## Delete an issue -Users with the [Owner role](../../permissions.md) can delete an issue by -editing it and selecting **Delete issue**. +> Deleting from the vertical ellipsis menu [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/299933) in GitLab 14.6. -![delete issue - button](img/delete_issue_v13_11.png) +Prerequisites: + +- You must have the [Owner role](../../permissions.md) for a project. + +To delete an issue: + +1. In an issue, select the vertical ellipsis (**{ellipsis_v}**). +1. Select **Delete issue**. + +Alternatively: + +1. In an issue, select **Edit title and description** (**{pencil}**). +1. Select **Delete issue**. ## Promote an issue to an epic **(PREMIUM)** @@ -355,16 +512,16 @@ editing it and selecting **Delete issue**. > - Moved to GitLab Premium in 12.8. > - Promoting issues to epics via the UI [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/233974) in GitLab Premium 13.6. -You can promote an issue to an epic in the immediate parent group. +You can promote an issue to an [epic](../../group/epics/index.md) in the immediate parent group. To promote an issue to an epic: -1. In an issue, select the vertical ellipsis (**{ellipsis_v}**) button. +1. In an issue, select the vertical ellipsis (**{ellipsis_v}**). 1. Select **Promote to epic**. Alternatively, you can use the `/promote` [quick action](../quick_actions.md#issues-merge-requests-and-epics). -Read more about promoting an issue to an epic on the [Manage epics page](../../group/epics/manage_epics.md#promote-an-issue-to-an-epic). +Read more about [promoting an issues to epics](../../group/epics/manage_epics.md#promote-an-issue-to-an-epic). ## Add an issue to an iteration **(PREMIUM)** @@ -373,12 +530,41 @@ Read more about promoting an issue to an epic on the [Manage epics page](../../g To add an issue to an [iteration](../../group/iterations/index.md): -1. In an issue sidebar, click **Edit** next to **Iteration**. A dropdown appears. -1. Click an iteration you'd like to associate this issue with. +1. Go to the issue. +1. On the right sidebar, in the **Iteration** section, select **Edit**. +1. From the dropdown list, select the iteration to associate this issue with. +1. Select any area outside the dropdown list. + +Alternatively, you can use the `/iteration` [quick action](../quick_actions.md#issues-merge-requests-and-epics). + +## Copy issue reference + +To refer to an issue elsewhere in GitLab, you can use its full URL or a short reference, which looks like +`namespace/project-name#123`, where `namespace` is either a group or a username. + +To copy the issue reference to your clipboard: -You can also use the `/iteration` -[quick action](../quick_actions.md#issues-merge-requests-and-epics) -in a comment or description field. +1. Go to the issue. +1. On the right sidebar, next to **Reference**, select **Copy Reference** (**{copy-to-clipboard}**). + +You can now paste the reference into another description or comment. + +Read more about issue references in [GitLab-Flavored Markdown](../../markdown.md#gitlab-specific-references). + +## Copy issue email address + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/18816) in GitLab 13.8. + +You can create a comment in an issue by sending an email. +Sending an email to this address creates a comment that contains the email body. + +To learn more about creating comments by sending an email and the necessary configuration, see +[Reply to a comment by sending email](../../discussions/index.md#reply-to-a-comment-by-sending-email). + +To copy the issue's email address: + +1. Go to the issue. +1. On the right sidebar, next to **Issue email**, select **Copy Reference** (**{copy-to-clipboard}**). ## Real-time sidebar @@ -393,35 +579,84 @@ On GitLab.com, this feature is available. Assignees in the sidebar are updated in real time. +## Assignee + +An issue can be assigned to one or [more users](multiple_assignees_for_issues.md). + +The assignees can be changed as often as needed. The idea is that the assignees are +people responsible for an issue. +When an issue is assigned to someone, it appears in their assigned issues list. + +If a user is not a member of a project, an issue can only be assigned to them if they create it +themselves or another project member assigns them. + +To change the assignee on an issue: + +1. Go to your issue. +1. On the right sidebar, in the **Assignee** section, select **Edit**. +1. From the dropdown list, select the user to add as an assignee. +1. Select any area outside the dropdown list. + ## Similar issues -> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/22866) in GitLab 11.6. +To prevent duplication of issues on the same topic, GitLab searches for similar issues +when you create a new issue. -To prevent duplication of issues for the same topic, GitLab searches for similar issues -when new issues are being created. +Prerequisites: -As you type in the title field of the **New Issue** page, GitLab searches titles and descriptions -across all issues to in the current project. Only issues you have access to are returned. -Up to five similar issues, sorted by most recently updated, are displayed below the title box. -[GraphQL](../../../api/graphql/index.md) must be enabled to use this feature. +- [GraphQL](../../../api/graphql/index.md) must be enabled. -![Similar issues](img/similar_issues.png) +As you type in the title text box of the **New issue** page, GitLab searches titles and descriptions +across all issues in the current project. Only issues you have access to are returned. +Up to five similar issues, sorted by most recently updated, are displayed below the title text box. ## Health status **(ULTIMATE)** -> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/36427) in GitLab Ultimate 12.10. -> - Health status of closed issues [can't be edited](https://gitlab.com/gitlab-org/gitlab/-/issues/220867) in GitLab Ultimate 13.4 and later. -> - Issue health status visible in issue lists [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/45141) in GitLab Ultimate 13.6. +> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/36427) in GitLab 12.10. +> - Health status of closed issues [can't be edited](https://gitlab.com/gitlab-org/gitlab/-/issues/220867) in GitLab 13.4 and later. +> - Issue health status visible in issue lists [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/45141) in GitLab 13.6. > - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/213567) in GitLab 13.7. To help you track issue statuses, you can assign a status to each issue. -This marks issues as progressing as planned or needs attention to keep on schedule: +This status marks issues as progressing as planned or needing attention to keep on schedule. + +Prerequisites: + +- You must have at least the [Reporter role](../../permissions.md) for the project. + +To edit health status of an issue: + +1. Go to the issue. +1. On the right sidebar, in the **Health status** section, select **Edit**. +1. From the dropdown list, select the status to add to this issue: -- On track (green) -- Needs attention (amber) -- At risk (red) + - On track (green) + - Needs attention (amber) + - At risk (red) + +You can then see the issue's status in the issues list and the epic tree. After an issue is closed, its health status can't be edited and the **Edit** button becomes disabled until the issue is reopened. -You can then see issue statuses in the issues list and the epic tree. +## Publish an issue **(ULTIMATE)** + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/30906) in GitLab 13.1. + +If a status page application is associated with the project, you can use the `/publish` +[quick action](../quick_actions.md) to publish the issue. + +For more information, see [GitLab Status Page](../../../operations/incident_management/status_page.md). + +## Issue-related quick actions + +You can also use [quick actions](../quick_actions.md#issues-merge-requests-and-epics) to manage issues. + +Some actions don't have corresponding UI buttons yet. +You can do the following **only by using quick actions**: + +- [Add or remove a Zoom meeting](associate_zoom_meeting.md) (`/zoom` and `/remove_zoom`). +- [Publish an issue](#publish-an-issue) (`/publish`). +- Clone an issue to the same or another project (`/clone`). +- Close an issue and mark as a duplicate of another issue (`/duplicate`). +- Copy labels and milestone from another merge request in the project (`/copy_metadata`). |