summaryrefslogtreecommitdiff
path: root/doc/user/discussions/index.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/user/discussions/index.md')
-rw-r--r--doc/user/discussions/index.md409
1 files changed, 180 insertions, 229 deletions
diff --git a/doc/user/discussions/index.md b/doc/user/discussions/index.md
index cf57afb8324..825f9be6ba6 100644
--- a/doc/user/discussions/index.md
+++ b/doc/user/discussions/index.md
@@ -5,343 +5,294 @@ info: "To determine the technical writer assigned to the Stage/Group associated
type: reference, howto
---
-# Threads **(FREE)**
+# Comments and threads **(FREE)**
GitLab encourages communication through comments, threads, and
[code suggestions](../project/merge_requests/reviews/suggestions.md).
-For example, you can create a comment in the following places:
+There are two types of comments:
-- Issues
-- Epics
-- Merge requests
-- Snippets
-- Commits
-- Commit diffs
+- A standard comment.
+- A comment in a thread, which has to be resolved.
-There are standard comments, and you also have the option to create a comment
-in the form of a thread. A comment can also be [turned into a thread](#start-a-thread-by-replying-to-a-standard-comment)
-when it receives a reply.
+In a comment, you can enter [Markdown](../markdown.md) and use [quick actions](../project/quick_actions.md).
-The comment area supports [Markdown](../markdown.md) and [quick actions](../project/quick_actions.md).
-You can [suggest code changes](../project/merge_requests/reviews/suggestions.md) in your comment,
-which the user can accept through the user interface. You can edit your own
-comment at any time, and anyone with the [Maintainer role](../permissions.md) or
-higher can also edit a comment made by someone else.
-
-You can also reply to a comment notification email to reply to the comment if
-[Reply by email](../../administration/reply_by_email.md) is configured for your GitLab instance. Replying to a standard comment
-creates another standard comment. Replying to a threaded comment creates a reply in the thread. Email replies support
-[Markdown](../markdown.md) and [quick actions](../project/quick_actions.md), just as if you replied from the web.
+You can [suggest code changes](../project/merge_requests/reviews/suggestions.md) in your commit diff comment,
+which the user can accept through the user interface.
-NOTE:
-There is a limit of 5,000 comments for every object, for example: issue, epic, and merge request.
+## Places you can add comments
-## Resolvable comments and threads
+You can create comments in places like:
-> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/5022) in GitLab 8.11.
-> - Resolvable threads can be added only to merge request diffs.
-> - Resolving comments individually was [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/28750) in GitLab 13.6.
-
-Thread resolution helps keep track of progress during planning or code review.
-
-Every thread in merge requests, commits, commit diffs, and
-snippets is initially displayed as unresolved. They can then be individually resolved by anyone
-with at least Developer access to the project or by the author of the change being reviewed.
-If the thread has been resolved and a non-member un-resolves their own response,
-this also unresolves the discussion thread.
-If the non-member then resolves this same response, this resolves the discussion thread.
-
-The need to resolve threads prevents you from forgetting to address feedback and lets you
-hide threads that are no longer relevant.
-
-!["A thread between two people on a piece of code"](img/thread_view.png)
-
-### Commit threads in the context of a merge request
-
-For reviewers with commit-based workflow, it may be useful to add threads to
-specific commit diffs in the context of a merge request. These threads
-persist through a commit ID change when:
-
-- force-pushing after a rebase
-- amending a commit
+- Commit diffs
+- Commits
+- Designs
+- Epics
+- Issues
+- Merge requests
+- Snippets
-To create a commit diff thread:
+Each object can have as many as 5,000 comments.
-1. Navigate to the merge request **Commits** tab. A list of commits that
- constitute the merge request are shown.
+## Add a comment to a merge request diff
- ![Merge request commits tab](img/merge_request_commits_tab.png)
+You can add comments to a merge request diff. These comments
+persist, even when you:
-1. Navigate to a specific commit, select the **Changes** tab (where you
- are only be presented diffs from the selected commit), and leave a comment.
+- Force-push after a rebase.
+- Amend a commit.
- ![Commit diff discussion in merge request context](img/commit_comment_mr_context.png)
+To add a commit diff comment:
-1. Any threads created this way are shown in the merge request's
- **Discussions** tab and are resolvable.
+1. To select a specific commit, on the merge request, select the **Commits** tab, select the commit
+ message. To view the latest commit, select the **Changes** tab.
+1. By the line you want to comment on, hover over the line number and select **{comment}**.
+ You can select multiple lines by dragging the **{comment}** icon.
+1. Type your comment and select **Start a review** or **Add comment now**.
- ![Merge request Discussions tab](img/commit_comment_mr_discussions_tab.png)
+The comment is displayed on the merge request's **Discussions** tab.
-Threads created this way only appear in the original merge request
-and not when navigating to that commit under your project's
-**Repository > Commits** page.
+The comment is not displayed on your project's **Repository > Commits** page.
NOTE:
-When a link of a commit reference is found in a thread inside a merge
-request, it is automatically converted to a link in the context of the
-current merge request.
-
-### Marking a comment or thread as resolved
+When your comment contains a reference to a commit included in the merge request,
+it's automatically converted to a link in the context of the current merge request.
+For example, `28719b171a056960dfdc0012b625d0b47b123196` becomes
+`https://gitlab.example.com/example-group/example-project/-/merge_requests/12345/diffs?commit_id=28719b171a056960dfdc0012b625d0b47b123196`.
-You can mark a thread as resolved by selecting the **Resolve thread**
-button at the bottom of the thread.
+## Add a comment to a commit
-!["Resolve thread" button](img/resolve_thread_button_v13_3.png)
+You can add comments and threads to a particular commit.
-Alternatively, you can mark each comment as resolved individually.
+1. On the top bar, select **Menu > Projects** and find your project.
+1. On the left sidebar, select **Repository > Commits**.
+1. Below the commits, in the **Comment** field, enter a comment.
+1. Select **Comment** or select the down arrow (**{chevron-down}**) to select **Start thread**.
-!["Resolve comment" button](img/resolve_comment_button.png)
-
-### Move all unresolved threads in a merge request to an issue
+WARNING:
+Threads created this way are lost if the commit ID changes after a
+force push.
-To continue all open threads from a merge request in a new issue, select
-**Resolve all threads in new issue**.
+## Add a comment to an image
-![Open new issue for all unresolved threads](img/btn_new_issue_for_all_threads.png)
+In merge requests and commit detail views, you can add a comment to an image.
+This comment can also be a thread.
-Alternatively, when your project only accepts merge requests [when all threads
-are resolved](#only-allow-merge-requests-to-be-merged-if-all-threads-are-resolved),
-an **open an issue to resolve them later** link displays in the merge
-request widget.
+1. Hover your mouse over the image.
+1. Select the location where you want to comment.
-![Link in merge request widget](img/resolve_thread_open_issue_v13_9.png)
+An icon is displayed on the image and a comment field is displayed.
-This prepares an issue with its content referring to the merge request and
-the unresolved threads.
+![Start image thread](img/start_image_discussion.gif)
-![Issue mentioning threads in a merge request](img/preview_issue_for_threads.png)
+## Reply to a comment by sending email
-Hitting **Create issue** causes all threads to be marked as resolved and
-add a note referring to the newly created issue.
+If you have ["reply by email"](../../administration/reply_by_email.md) configured,
+you can reply to comments by sending an email.
-![Mark threads as resolved notice](img/resolve_thread_issue_notice.png)
+- When you reply to a standard comment, another standard comment is created.
+- When you reply to a threaded comment, it creates a reply in the thread.
-You can now proceed to merge the merge request from the UI.
+You can use [Markdown](../markdown.md) and [quick actions](../project/quick_actions.md) in your email replies.
-### Moving a single thread to a new issue
+## Who can edit comments
-To create a new issue for a single thread, you can use the **Resolve this
-thread in a new issue** button.
+You can edit your own comment at any time.
-![Create issue for thread](img/new_issue_for_thread.png)
+Anyone with the [Maintainer role](../permissions.md) or
+higher can also edit a comment made by someone else.
-This directs you to a new issue prefilled with the content of the
-thread, similar to the issues created for delegating multiple
-threads at once. Saving the issue marks the thread as resolved and
-add a note to the merge request thread referencing the new issue.
+## Prevent comments by locking an issue
-![New issue for a single thread](img/preview_issue_for_thread.png)
+You can prevent public comments in an issue or merge request.
+When you do, only project members can add and edit comments.
-### Only allow merge requests to be merged if all threads are resolved
+Prerequisite:
-You can prevent merge requests from being merged until all threads are
-resolved.
+- In merge requests, you must have at least the Developer role.
+- In issues, you must have at least the Reporter role.
-Navigate to your project's settings page, select the
-**Only allow merge requests to be merged if all threads are resolved** check
-box and hit **Save** for the changes to take effect.
+1. On the right sidebar, next to **Lock issue** or **Lock merge request**, select **Edit**.
+1. On the confirmation dialog, select **Lock**.
-![Only allow merge if all the threads are resolved settings](img/only_allow_merge_if_all_threads_are_resolved.png)
+Notes are added to the page details.
-From now on, you can't merge from the UI until all threads
-are resolved.
+If an issue or merge request is locked and closed, you cannot reopen it.
-![Only allow merge if all the threads are resolved message](img/resolve_thread_open_issue_v13_9.png)
+## Mark a comment as confidential
-### Automatically resolve merge request diff threads when they become outdated
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/207473) in GitLab 13.9.
+> - [Deployed behind a feature flag](../feature_flags.md), disabled by default.
+> - Disabled on GitLab.com.
+> - Not recommended for production use.
+> - To use in GitLab self-managed instances, ask a GitLab administrator to enable it. **(FREE SELF)**
-You can automatically resolve merge request diff threads on lines modified
-with a new push.
+WARNING:
+This feature might not be available to you. Check the **version history** note above for details.
-Navigate to your project's settings page, select the **Automatically resolve
-merge request diffs threads on lines changed with a push** check box and hit
-**Save** for the changes to take effect.
+You can make a comment confidential, so that it is visible only to project members
+who have at least the Reporter role.
-![Automatically resolve merge request diff threads when they become outdated](img/automatically_resolve_outdated_discussions.png)
+1. Below the comment, select the **Make this comment confidential** checkbox.
+1. Select **Comment**.
-From now on, any threads on a diff are resolved by default if a push
-makes that diff section outdated. Threads on lines that don't change and
-top-level resolvable threads are not automatically resolved.
+![Confidential comments](img/confidential_comments_v13_9.png)
-## Commit threads
+## Show only comments
-You can add comments and threads to a particular commit under your
-project's **Repository > Commits**.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/26723) in GitLab 11.5.
-WARNING:
-Threads created this way are lost if the commit ID changes after a
-force push.
+For issues and merge requests with many comments, you can filter the page to show comments only.
-## Threaded discussions
+1. Open a merge request's **Discussion** tab, or epic or issue's **Overview** tab.
+1. On the right side of the page, select from the filter:
+ - **Show all activity**: Display all user comments and system notes
+ (issue updates, mentions from other issues, changes to the description, and so on).
+ - **Show comments only**: Display only user comments.
+ - **Show history only**: Display only activity notes.
-While resolvable threads are only available to merge request diffs,
-threads can also be added without a diff. You can start a specific
-thread which looks like a thread, on issues, commits, snippets, and
-merge requests.
+![Notes filters dropdown options](img/index_notes_filters.png)
-To start a threaded discussion, select the **Comment** button toggle dropdown,
-select **Start thread**, and then select **Start thread** when you're ready to
-post the comment.
+GitLab saves your preference, so it persists when you visit the same page again
+from any device you're logged into.
-![Comment type toggle](img/comment_type_toggle.gif)
+## Assign an issue to the commenting user
-This posts a comment with a single thread to allow you to discuss specific
-comments in greater detail.
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/191455) in GitLab 13.1.
-![Thread comment](img/discussion_comment.png)
+You can assign an issue to a user who made a comment.
-## Image threads
+1. In the comment, select the **More Actions** menu.
+1. Select **Assign to commenting user**.
-Sometimes a thread is revolved around an image. With image threads,
-you can easily target a specific coordinate of an image and start a thread
-around it. Image threads are available in merge requests and commit detail views.
+![Assign to commenting user](img/quickly_assign_commenter_v13_1.png)
-To start an image thread, hover your mouse over the image. Your mouse pointer
-should convert into an icon, indicating that the image is available for commenting.
-Simply click anywhere on the image to create a new thread.
+Select the button again to unassign the commenter.
-![Start image thread](img/start_image_discussion.gif)
+## Create a thread by replying to a standard comment
-After you select the image, a comment form is displayed that would be the start
-of your thread. After you save your comment, a new badge is displayed on
-top of your image. This badge represents your thread.
+> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/30299) in GitLab 11.9.
-NOTE:
-This thread badge is typically associated with a number that is only used as a visual
-reference for each thread. In the merge request thread tab,
-this badge is indicated with a comment icon, because each thread renders a new
-image section.
+When you reply to a standard comment, you create a thread.
-Image threads also work on diffs that replace an existing image. In this diff view
-mode, you can toggle the different view modes and still see the thread point badges.
+Prerequisites:
-| 2-up | Swipe | Onion Skin |
-|:-----------:|:----------:|:----------:|
-| ![2-up view](img/two_up_view.png) | ![swipe view](img/swipe_view.png) | ![onion skin view](img/onion_skin_view.png) |
+- You must have at least the [Guest role](../permissions.md#project-members-permissions).
+- You must be in an issue, merge request, or epic. Commits and snippets threads are not supported.
-Image threads also work well with resolvable threads. Resolved threads
-on diffs (not on the merge request discussion tab) appear collapsed on page
-load and have a corresponding badge counter to match the counter on the image.
+To create a thread by replying to a comment:
-![Image resolved thread](img/image_resolved_discussion.png)
+1. On the top right of the comment, select **{comment}** (**Reply to comment**).
-## Lock discussions
+ ![Reply to comment button](img/reply_to_comment_button.png)
-For large projects with many contributors, it may be useful to stop threads
-in issues or merge requests in these scenarios:
+ The reply area is displayed.
-- The project maintainer has already resolved the thread and it is not helpful
- for continued feedback.
-- The project maintainer has already directed new conversation
- to newer issues or merge requests.
-- The people participating in the thread are trolling, abusive, or otherwise
- being unproductive.
+1. Type your reply.
+1. Select **Comment** or **Add comment now** (depending on where in the UI you are replying).
-In these cases, a user with Developer permissions or higher in the project can lock (and unlock)
-an issue or a merge request, using the "Lock" section in the sidebar. For issues,
-a user with Reporter permissions can lock (and unlock).
+The top comment is converted to a thread.
-| Unlock | Lock |
-| :-----------: | :----------: |
-| ![Turn off discussion lock](img/turn_off_lock.png) | ![Turn on discussion lock](img/turn_on_lock.png) |
+## Create a thread without replying to a comment
-System notes indicate locking and unlocking.
+You can create a thread without replying to a standard comment.
-![Discussion lock system notes](img/discussion_lock_system_notes.png)
+Prerequisites:
-In a locked issue or merge request, only team members can add new comments and
-edit existing comments. Non-team members are restricted from adding or editing comments.
+- You must have at least the [Guest role](../permissions.md#project-members-permissions).
+- You must be in an issue, merge request, commit, or snippet.
-| Team member | Non-team member |
-| :-----------: | :----------: |
-| ![Comment form member](img/lock_form_member.png) | ![Comment form non-member](img/lock_form_non_member.png) |
+To create a thread:
-Additionally, locked issues and merge requests can't be reopened.
+1. Type a comment.
+1. Below the comment, to the right of the **Comment** button, select the down arrow (**{chevron-down}**).
+1. From the list, select **Start thread**.
+1. Select **Start thread** again.
-## Confidential Comments
+A threaded comment is created.
-> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/207473) in GitLab 13.9.
-> - [Deployed behind a feature flag](../feature_flags.md), disabled by default.
-> - Disabled on GitLab.com.
-> - Not recommended for production use.
-> - To use in GitLab self-managed instances, ask a GitLab administrator to enable it. **(FREE SELF)**
+![Thread comment](img/discussion_comment.png)
-WARNING:
-This feature might not be available to you. Check the **version history** note above for details.
+## Resolve a thread
-When creating a comment, you can make it visible only to the project members (users with Reporter and higher permissions).
+> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/5022) in GitLab 8.11.
+> - Resolvable threads can be added only to merge request diffs.
+> - Resolving comments individually was [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/28750) in GitLab 13.6.
-To create a confidential comment, select the **Make this comment confidential** check box before you submit it.
+You can resolve a thread when you want to finish a conversation.
-![Confidential comments](img/confidential_comments_v13_9.png)
+Prerequisites:
-## Filtering notes
+- You must have at least the [Developer role](../permissions.md#project-members-permissions)
+ or be the author of the change being reviewed.
+- You must be in an issue, merge request, commit, or snippet.
-> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/26723) in GitLab 11.5.
+To resolve a thread:
-For issues with many comments like activity notes and user comments, sometimes
-finding useful information can be hard. There is a way to filter comments from single notes and threads for merge requests and issues.
+1. Go to the thread.
+1. Do one of the following:
+ - In the top right of the original comment, select the **Resolve thread** (**{check-circle}**) icon.
+ - Below the last reply, in the **Reply** field, select **Resolve thread**.
+ - Below the last reply, in the **Reply** field, enter text, select the **Resolve thread** checkbox, and select **Add comment now**.
-From a merge request's **Discussion** tab, or from an epic/issue overview, find the filter's dropdown menu on the right side of the page, from which you can choose one of the following options:
+At the top of the page, the number of unresolved threads is updated.
-- **Show all activity**: displays all user comments and system notes
- (issue updates, mentions from other issues, changes to the description, etc).
-- **Show comments only**: only displays user comments in the list.
-- **Show history only**: only displays activity notes.
+![Count of unresolved threads](img/unresolved_threads_v14_1.png)
-![Notes filters dropdown options](img/index_notes_filters.png)
+### Move all unresolved threads in a merge request to an issue
-After you select one of the filters in a given issue or merge request, GitLab saves
-your preference, so that it persists when you visit the same page again
-from any device you're logged into.
+If you have multiple unresolved threads in a merge request, you can
+create an issue to resolve them separately.
-## Start a thread by replying to a standard comment
+- In the merge request, at the top of the page, select **Resolve all threads in new issue**.
-> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/30299) in GitLab 11.9
+ ![Open new issue for all unresolved threads](img/btn_new_issue_for_all_threads.png)
-To reply to a standard (non-thread) comment, you can use the **Reply to comment** button.
+All threads are marked as resolved and a link is added from the merge request to
+the newly created issue.
-![Reply to comment button](img/reply_to_comment_button.png)
+### Move one unresolved thread in a merge request to an issue
-The **Reply to comment** button is only displayed if you have permissions to reply to an existing thread, or start a thread from a standard comment.
+If you have one specific unresolved thread in a merge request, you can
+create an issue to resolve it separately.
-Selecting the **Reply to comment** button brings the reply area into focus and you can type your reply.
+- In the merge request, under the last reply to the thread, next to the
+ **Resolve thread** button, select **Resolve this thread in a new issue**.
-![Reply to comment feature](img/reply_to_comment.gif)
+ ![Create issue for thread](img/new_issue_for_thread.png)
-Replying to a non-thread comment converts the non-thread comment to a
-thread after the reply is submitted. This conversion is considered an edit
-to the original comment, so a note about when it was last edited appears underneath it.
+The thread is marked as resolved and a link is added from the merge request to
+the newly created issue.
-This feature exists only for issues, merge requests, and epics. Commits, snippets, and merge request diff threads are
-not supported yet.
+### Prevent merge unless all threads are resolved
-## Assign an issue to the commenting user
+You can prevent merge requests from being merged until all threads are
+resolved.
-> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/191455) in GitLab 13.1.
+1. On the top bar, select **Menu > Projects** and find your project.
+1. On the left sidebar, select **Settings > General**.
+1. Expand **Merge requests**.
+1. Under **Merge checks**, select the **All discussions must be resolved** checkbox.
+1. Select **Save changes**.
-You can assign an issue to a user who made a comment.
+### Automatically resolve threads in a merge request when they become outdated
-In the comment, select the **More Actions** menu, and then select **Assign to commenting user**.
+You can set merge requests to automatically resolve threads when lines are modified
+with a new push.
-Select the button again to unassign the commenter.
+1. On the top bar, select **Menu > Projects** and find your project.
+1. On the left sidebar, select **Settings > General**.
+1. Expand **Merge requests**.
+1. Under **Merge options**, select the
+ **Automatically resolve merge request diff discussions when they become outdated** checkbox.
+1. Select **Save changes**.
-![Assign to commenting user](img/quickly_assign_commenter_v13_1.png)
+Threads are now resolved if a push makes a diff section outdated.
+Threads on lines that don't change and top-level resolvable threads are not resolved.
-## Enable or disable Confidential Comments **(FREE SELF)**
+## Enable or disable confidential comments **(FREE SELF)**
-Confidential Comments is under development and not ready for production use. It is
+Confidential comments are under development and not ready for production use. The feature is
deployed behind a feature flag that is **disabled by default**.
[GitLab administrators with access to the GitLab Rails console](../../administration/feature_flags.md)
can enable it.