How to set up a code review using Gitlab?

GitGitlabPull Request

Git Problem Overview


How does one set up a code review using Gitlab? I see it listed as a feature on the Gitlab website, but I can't seem to find instructions on how to set one up (For that matter, any link to a Gitlab user manual would be most appreciated).

Some of my searching has indicated that 'Merge Requests' are the way to go... but I'm finding them limiting. An issued merge request shows all of the commits between one branch and the other. I seem to only be able to view diffs generated for each individual commit. For example, let's say I have a file I want to review. It is a new file but I've submitted changes to it over 10 commits on a dev branch. If I issue a merge request for that dev branch from integration I see 10 commits each of which show the incremental changes made to the file... I want to review the entire thing. It is new!

Am I barking up the wrong tree here? Is there an actual code-review tool I can use in GitLab, or are merge requests the way to go, and if they are am I using them incorrectly? what's the best way to set up a proper code review here?

Git Solutions


Solution 1 - Git

Note: since GitLab 6.4, side-by-side diff view is available: see "pull request 5308".

(July 2013)There is no possibility yet to comment on each line though, only at the file level.
Daniel Sokolowski mentions in the comments that Per line comments are now supported (09/2014):

> Your team members can comment on the merge request in general or on specific lines with line comments.

That still can help for code review activity.

https://f.cloud.github.com/assets/4224518/1558702/e0fe633a-4fa3-11e3-9388-3f3e445cb6d4.png


6 years later, for GitLab 13.1 (June 2020):

> ## Merge Request Reviews moved to Core

> Originally introduced in GitLab 11.4 as a GitLab Premium feature, Merge Request Reviews allow merge request reviewers to: > > - submit multiple comments at once, > - cutting down on notification noise for the merge request author, and > - allowing for a more cohesive and streamlined review process.

https://about.gitlab.com/images/13_1/batch_comments.png

> Since its introduction, we’ve re-evaluated its place in our buyer-based pricing model and as part of 13.1 we’re excited to announce this feature has now moved to GitLab Core.

See Documentation and Issue


With GitLab 13.9 (February 2021), you also have:

> ## Request a follow-up review from a Reviewer > > Merge request authors receive feedback from reviewers. Often, this feedback needs to be re-reviewed to make sure all issues have been appropriately addressed. As the author of the contribution, you need to communicate the need for a follow-up to your reviewer. > > For reviewers who have already reviewed a merge request, you can now request a re-review. This request triggers a To-Do item and email notification to alert the user that you need a follow-up review of your contribution. > > https://about.gitlab.com/images/13_9/create_code_review-request-re-review.png -- Request a follow-up review from a Reviewer > > See Documentation and Issue.


With GitLab 13.11 (April 2021)

> ## Add standalone comments to merge request reviews > > When you’re reviewing changes, you may want to summarize your feedback, or comment on something unrelated to the specific changes. Reviews in GitLab only allowed commenting on the changes or replying to existing comments, which meant that other kinds of comments had to be made after submitting the review. > > As part of your review process, you can now submit a general comment along with your replies or change-specific comments. General comments make it simple to provide feedback to the author and use quick actions to update items across the merge request. > > Thanks to Lee Tickett for the contribution! > > https://about.gitlab.com/images/13_11/code-review-add-comment-mr-review.png -- Add standalone comments to merge request reviews > > See Documentation and Issue.

Solution 2 - Git

I've been doing code reviews in Gitlab for over two months with almost no friction. I've setup [rss2email][1] to send email notifications everytime a developer pushes new commits. Then I use Gitlab's comment feature for commits to make some comments about the pushed code.

Unfortunately, Gitlab does not allow comments on files itself, only in commits (just like Github, I guess). Whenever I find myself in a situation that I need to comment something that I've missed in a previous commit, I use the blame tool to find the commit that introduced/changed the code section to be commented.

It is far from perfect, but it is working good so far.

[1]: http://www.allthingsrss.com/rss2email/ "rss2email"

Solution 3 - Git

You can see submitted code in Merge Request for other repository or in current repository.
example http://demo.gitlab.com/diaspora/diaspora/commits/master

Then you can add comments to committed file changes (button Reply) or to the whole commit

example http://demo.gitlab.com/diaspora/diaspora/commit/42f47626890218a180870bc3f44ec57625b0779c

The resulting communication is code review. However, I personally recommend to do code review on one PC with face-to-face communication whenever possible, and use tools for recording results or when more formality is needed.

For a file revue that has a lot of commits, e.g. http://demo.gitlab.com/diaspora/diaspora/blame/master/README.md look at it using blame to understand who did what. However in this view there is no option to communicate and add comments. I would recommend just add changes as comments in this case.

Solution 4 - Git

Yes. Merge requests are how peer reviews are accomplished.

There should be a 'diff' tab that will show the changes of all the commits (mentioned here: http://youtu.be/DyAX8ws5OIc?t=3m2s).

The video also explains nicely how it can be used to peer review.

Solution 5 - Git

The normal use-case of code reviews is to review code on a branch before merging into master or similar. I have a situation where I've developed a project and want all the code to be reviewed by everyone on the team.

What I did was:

Checkout the first commit, make a change to it, commit and push
git co -b FIRST_COMMIT eb67f06c2b3222c0219214b176c41922bc454881
vi README.md
git add README.md
git ci -m "First commit modified so can get full diff against it"
git push --set-upstream origin FIRST-COMMIT
Checkout the last commit, make a change to it, commit and push
git co -b master
vi README.md
git add README.md
git ci -m "Last commit modified so can get full diff against it"
git push --set-upstream origin LAST-COMMIT
On GitLab / GitHub, create a pull request
  • It is one merging from LAST_COMMIT to FIRST_COMMIT

Works for me!

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questiondjc6535View Question on Stackoverflow
Solution 1 - GitVonCView Answer on Stackoverflow
Solution 2 - GitHerberth AmaralView Answer on Stackoverflow
Solution 3 - GitPaul VerestView Answer on Stackoverflow
Solution 4 - GitonionjakeView Answer on Stackoverflow
Solution 5 - GitHankCaView Answer on Stackoverflow