The ability to contribute conversationally is offered throughout GitLab.
You can leave a comment in the following places:
- merge requests
- commit diffs
You could also reply to the notification email in order to reply to a comment, provided that Reply by email is configured by your GitLab admin. This also supports Markdown and quick actions as if replied from the web.
Apart from the standard comments, you also have the option to create a comment in the form of a resolvable or threaded discussion.
- The main feature was introduced in GitLab 8.11.
- Resolvable discussions can be added only to merge request diffs.
Discussion resolution helps keep track of progress during planning or code review. Resolving comments prevents you from forgetting to address feedback and lets you hide discussions that are no longer relevant.
Comments and discussions can be resolved by anyone with at least Developer access to the project or the author of the merge request.
Commit discussions in the context of a merge request
Introduced in GitLab 10.3.
For reviewers with commit-based workflow, it may be useful to add discussions to specific commit diffs in the context of a merge request. These discussions will persist through a commit ID change when:
- force-pushing after a rebase
- amending a commit
To create a commit diff discussion:
Navigate to the merge request Commits tab. A list of commits that constitute the merge request will be shown.
Navigate to a specific commit, click on the Changes tab (where you will only be presented diffs from the selected commit), and leave a comment.
Any discussions created this way will be shown in the merge request's Discussions tab and are resolvable.
Discussions created this way will only appear in the original merge request and not when navigating to that commit under your project's Repository > Commits page.
TIP: Tip: When a link of a commit reference is found in a discussion inside a merge request, it will be automatically converted to a link in the context of the current merge request.
Jumping between unresolved discussions
When a merge request has a large number of comments it can be difficult to track what remains unresolved. You can jump between unresolved discussions with the Jump button next to the Reply field on a discussion.
You can also jump to the first unresolved discussion from the button next to the resolved discussions tracker.
Marking a comment or discussion as resolved
You can mark a discussion as resolved by clicking the Resolve discussion button at the bottom of the discussion.
Alternatively, you can mark each comment as resolved individually.
Move all unresolved discussions in a merge request to an issue
Introduced in GitLab 9.1
To continue all open discussions from a merge request in a new issue, click the Resolve all discussions in new issue button.
Alternatively, when your project only accepts merge requests when all discussions are resolved, there will be an open an issue to resolve them later link in the merge request widget.
This will prepare an issue with its content referring to the merge request and the unresolved discussions.
Hitting Submit issue will cause all discussions to be marked as resolved and add a note referring to the newly created issue.
You can now proceed to merge the merge request from the UI.
Moving a single discussion to a new issue
Introduced in GitLab 9.1
To create a new issue for a single discussion, you can use the Resolve this discussion in a new issue button.
This will direct you to a new issue prefilled with the content of the discussion, similar to the issues created for delegating multiple discussions at once. Saving the issue will mark the discussion as resolved and add a note to the merge request discussion referencing the new issue.
Only allow merge requests to be merged if all discussions are resolved
Introduced in GitLab 8.14.
You can prevent merge requests from being merged until all discussions are resolved.
Navigate to your project's settings page, select the Only allow merge requests to be merged if all discussions are resolved check box and hit Save for the changes to take effect.
From now on, you will not be able to merge from the UI until all discussions are resolved.
Automatically resolve merge request diff discussions when they become outdated
Introduced in GitLab 10.0.
You can automatically resolve merge request diff discussions on lines modified with a new push.
Navigate to your project's settings page, select the Automatically resolve merge request diffs discussions on lines changed with a push check box and hit Save for the changes to take effect.
From now on, any discussions on a diff will be resolved by default if a push makes that diff section outdated. Discussions on lines that don't change and top-level resolvable discussions are not automatically resolved.
You can add comments and discussion threads to a particular commit under your project's Repository > Commits.
CAUTION: Attention: Discussions created this way will be lost if the commit ID changes after a force push.
Introduced in GitLab 9.1.
While resolvable discussions are only available to merge request diffs, discussions can also be added without a diff. You can start a specific discussion which will look like a thread, on issues, commits, snippets, and merge requests.
To start a threaded discussion, click on the Comment button toggle dropdown, select Start discussion and click Start discussion when you're ready to post the comment.
This will post a comment with a single thread to allow you to discuss specific comments in greater detail.
Introduced in GitLab 10.1.
Sometimes a discussion is revolved around an image. With image discussions, you can easily target a specific coordinate of an image and start a discussion around it. Image discussions are available in merge requests and commit detail views.
To start an image discussion, 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 discussion.
After you click on the image, a comment form will be displayed that would be the start of your discussion. Once you save your comment, you will see a new badge displayed on top of your image. This badge represents your discussion.
Note: This discussion badge is typically associated with a number that is only used as a visual reference for each discussion. In the merge request discussion tab, this badge will be indicated with a comment icon since each discussion will render a new image section.
Image discussions 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 discussion point badges.
Image discussions also work well with resolvable discussions. Resolved discussions on diffs (not on the merge request discussion tab) will appear collapsed on page load and will have a corresponding badge counter to match the counter on the image.
Introduced in GitLab 10.1.
For large projects with many contributors, it may be useful to stop discussions in issues or merge requests in these scenarios:
- The project maintainer has already resolved the discussion 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 discussion are trolling, abusive, or otherwise being unproductive.
In these cases, a user with Maintainer permissions or higher in the project can lock (and unlock) an issue or a merge request, using the "Lock" section in the sidebar:
System notes indicate locking and unlocking.
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.
|Team member||Non-team member|
Additionally locked issues can not be reopened.
Merge Request Reviews [PREMIUM]
Introduced in GitLab 11.4.
When looking at a Merge Request diff, you are able to start a review. This allows you to create comments inside a Merge Request that are only visible to you until published, in order to allow you to submit them all as a single action.
Starting a review
In order to start a review, simply write a comment on a diff as normal under the Changes tab in an MR and click on the Start a review button.
Once a review is started, you will see any comments that are part of this review marked
All comments that are part of a review show two buttons:
- Submit review: Submits all comments that are part of the review, making them visible to other users.
- Add comment now: Submits the specific comment as a regular comment instead of as part of the review.
You can use quick actions inside review comments. The comment will show the actions that will be performed once published.
To add more comments to a review, start writing a comment as normal and click the Add to review button.
This will add the comment to the review.
Review comments can also resolve/unresolve resolvable discussions. When replying to a comment, you will see a checkbox that you can click in order to resolve or unresolve the discussion once published.
If a particular pending comment will resolve or unresolve the discussion, this will be shown on the pending comment itself.
Submitting a review
If you have any comments that have not been submitted, you will see a bar at the bottom of the screen with two buttons:
- Discard: Discards all comments that have not been submitted.
- Finish review: Opens a list of comments ready to be submitted for review. Clicking Submit review will publish all comments. Any quick actions submitted are performed at this time.
Alternatively, every pending comment has a button to finish the entire review.
Submitting the review will send a single email to every notifiable user of the merge request with all the comments associated to it.
Replying to this email will, consequentially, create a new comment on the associated merge request.
The review email is currently hidden behind the
batch_review_notification feature flag,
and can be enabled by contacting your GitLab instance administrator and having them
Feature.enable(:batch_review_notification) using the
Introduced in GitLab 11.5.
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 discussions for merge requests and issues.
From a merge request's Discussion tab, or from an 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:
- 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.
Once you select one of the filters in a given issue or MR, GitLab will save your preference, so that it will persist when you visit the same page again from any device you're logged into.
Introduced in GitLab 11.6.
As a reviewer, you're able to suggest code changes with a simple markdown syntax in Merge Request Diff discussions. Then, the Merge Request author (or other users with appropriate permission) is able to apply these suggestions with a click, which will generate a commit in the Merge Request authored by the user that applied them.
Choose a line of code to be changed, add a new comment, then click on the Insert suggestion icon in the toolbar:
Note: The suggestion will only affect the commented line. Multi-line suggestions are currently not supported. Will be introduced by #53310.
In the comment, add your suggestion to the pre-populated code block:
The suggestions in the comment can be applied by the merge request author directly from the merge request:
Note: Discussions are not automatically resolved. Will be introduced by #54405.
Once the author applies a suggestion, it will be marked with the Applied label,
and GitLab will create a new commit with the message
Apply suggestion to <file-name>
and push the suggested change directly into the codebase in the merge request's branch.
Developer permission is required to do so.
Note: Custom commit messages will be introduced by #54404.