如何使用Gitlab设置代码审查?


85

如何使用Gitlab设置代码审查?我在Gitlab网站上看到它被列为一项功能,但是我似乎找不到有关如何进行设置的说明(因此,对Gitlab用户手册的任何链接都将不胜感激)。

我的某些搜索表明,“合并请求”是可行的方法...但是我发现它们存在限制。发出的合并请求显示一个分支和另一个分支之间的所有提交。我似乎只能查看为每个单独的提交生成的差异。例如,假设我有一个要查看的文件。这是一个新文件,但我已经在dev分支上通过10次提交提交了更改。如果我通过集成对该dev分支发出合并请求,我会看到10次提交,每个提交都显示对该文件进行的增量更改...我想复查整个内容。它是新的!

我在这里树错树了吗?我可以在GitLab中使用一个实际的代码审查工具吗?还是合并请求才行?如果不正确,我是否使用不正确?在这里设置适当的代码审查的最佳方法是什么?


1
GitLab 6.4及其并排的diff视图可以帮助进行代码审查:请参阅下面的答案
VonC 2014年

使用GitLab 13.1(2020年6月),您现在有了合并请求评论。请参阅下面我编辑的答案
VonC

Answers:


24

注意:从GitLab 6.4开始,可以使用并排的diff视图:请参阅“拉取请求5308 ”。

(2013年7月)但是,仅在文件级别上,尚无可能在每一行上进行注释。
Daniel Sokolowski在评论中提到现在支持每行评论(09/2014):

您的团队成员可以对合并请求进行整体注释,也可以在特定的行上添加注释。

这仍然可以帮助进行代码审查活动。

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


6年后,对于GitLab 13.1(2020年6月)

合并请求评论移至核心

合并请求评论最初是在GitLab 11.4中作为GitLab Premium功能引入的,它允许合并请求审阅者执行以下操作:

  • 一次提交多个评论,
  • 减少合并请求作者的通知噪音,以及
  • 允许更紧密和简化的审核流程。

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

自推出以来,我们已经重新评估了它在基于买方的定价模型中的地位,作为13.1的一部分,我们很高兴地宣布此功能现已移至GitLab Core。

请参阅文档问题


现在支持每行注释:“您的团队成员可以对合并请求进行整体注释,也可以对特定行添加注释。” (about.gitlab.com/2014/09/29/gitlab-flow
丹尼尔Sokolowski

1
@DanielSokolowski太好了!我已将您的评论包含在答案中以提高知名度。
VonC 2014年

9

我已经在Gitlab中进行了两个月的代码审查,几乎没有摩擦。我已经设置rss2email以便在开发人员每次推送新提交时发送电子邮件通知。然后,我使用Gitlab的注释功能进行提交,以对推送的代码进行一些注释。

不幸的是,Gitlab不允许仅在提交中对文件本身进行注释(我想就像Github一样)。每当我发现自己需要注释上一次提交中遗漏的内容时,我都会使用blame工具查找引入/更改了要注释的代码部分的提交。

它远非完美,但到目前为止运行良好。


1
可以使用Gitlab通知代替rss2email来获得有关推送的通知。
vadipp 2015年

我有相同的问题/解决方法。我认为这将是一个不错的功能,您可以在diff或文件视图中的特定行添加正确注释的注释(我是指从Web界面浏览文件或diff,而不是怪罪)。
AlejandroVD

2

您可以在针对其他存储库的合并请求或当前存储库中看到已提交的代码。
范例http://demo.gitlab.com/diaspora/diaspora/commits/master

然后,您可以将注释添加到已提交的文件更改(按钮Reply)或整个提交中

范例http://demo.gitlab.com/diaspora/diaspora/commit/42f47626890218a180870bc3f44ec57625b0779c

由此产生的沟通是代码审查。但是,我个人建议在可能的情况下,在一台PC上通过面对面的通讯进行代码审查,并使用工具记录结果或在需要更多形式验证时使用。

对于具有大量提交的文件修订,例如http://demo.gitlab.com/diaspora/diaspora/blame/master/README.md, 请使用它blame来了解谁做了什么。但是,在此视图中,没有交流和添加评论的选项。在这种情况下,我建议仅添加更改作为注释。


7
对于您答案中的第一个,第二个和最后一个链接,我得到404。
Bryan Oakley

1
就像在首页demo.gitlab.com上说的“ IS SANDBOX –每小时重置一次”,因此所有示例都被清除了。例如,这不是一个好的工具。
Uriah Blatherwick 2014年

是的,请重新考虑使用适当的示例进行设置。您的答案似乎是可靠的建议。
数据

0

是。合并请求是完成同行评审的方式。

应该有一个“差异”选项卡,其中将显示所有提交的更改(此处提到:http: //youtu.be/DyAX8ws5OIc?t=3m2s)。

该视频还很好地说明了如何将其用于同行评审。


0

代码检查的正常用例是在合并到主代码或类似代码之前,在分支上检查代码。我遇到的情况是我已经开发了一个项目,并且希望团队中的每个人都审查所有代码。

我所做的是:

签出第一个提交,对其进行更改,然后提交并推送

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

签出最后一次提交,对其进行更改,然后提交并推送

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

在GitLab / GitHub上,创建拉取请求

  • 这是从LAST_COMMIT到FIRST_COMMIT的合并

为我工作!


这是否会在存储库中留下两个“垃圾”分支,而在master分支中没有跟踪注释?如果注释需要更改代码,您是否将它们合并到母版中?
user2084572

是的,将有易于删除的FIRST_COMMIT和LAST_COMMIT分支(git br --delete --force origin FIRST_COMMIT LAST_COMMIT; git br --delete --force FIRST_COMMIT LAST_COMMIT)。您可以使用master的其他分支来包含对该分支的更改,或者手动创建单独的问题。如果反馈过多,请稍后创建一个或多个分支(例如,每个问题一个)。
HankCa '19
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.