我写了整个软件开发课程,直到最近我们一直在使用Bitbucket。我最近改写了使用GitLab的课程,这主要是因为GitLab用户名没有绑定到特定电子邮件,例如Bitbucket。我听说过好事。但是我已经遇到了问题。
首先是合并请求(其他托管服务称为“拉请求”)没有向批准者发送通知。我们刚刚上过一课,我教我的学生创建合并请求。我让他们将我添加为他们的项目的“记者”。然后,我让他们创建一个合并请求,并将我添加为“批准者”。
但是,我没有收到电子邮件通知我两个学生已经与我创建了合并请求,作为每个请求的批准者。我仔细检查了一下,并将我的全局通知设置为“参与”。
我在comment to a GitLab ticket中报告了此问题,但未收到任何回复。我什至提起new official GitLab bug report;终于有人看着它,并创建了another ticket for GitLab EE。到目前为止,还没有人真正找到问题所在。
因此,作为一种变通办法,我进入了GitLab的提名设置,并将每个学生资料库的通知级别设置为“监视”,以便(理论上)应该通知我所有活动。果然,当我的学生创建合并请求时,我收到通知。
不幸的是,即使通知级别为“监视”,当学生通过对分支做出新的承诺并将其推送到GitLab来更新合并请求时,我也没有得到通知。
我做错什么了吗?为什么即使在观看项目时,我也没有收到批准人的合并请求的通知?如果我无法使用这种简单的核心功能,那么我想我们会转到Github,因为他们引入了私有存储库。
答案 0 :(得分:1)
角色“ Reporter”不能接受/管理存储库中的合并请求。参见whole list of permissions,但基本上是:
客人:只读访问权限
记者:问题和评论
开发人员:将操作推送到存储库
维护者:管理员
我没有进行自我测试,但也许GitLab notifications在内部进行了检查。我的建议是根据您的Git工作流程protect the master branch或进行开发。理想情况下,仅维护者可以在代码检查后将其推送或合并到受保护的分支,因此应在回购中将此角色分配给已批准的事物,并希望能收到通知。全局通知应为“参与” ,并且该通知会传播到您的所有存储库中,以免被通知淹没(“监视”通知存储库中的所有活动)。开发人员应从master / develop创建功能或错误修正分支,并始终将其推送到该分支。
建议
我将研究一些Git工作流程:Github,GitLab或GitFlow是非常好的示例。您可以根据自己的需要调整工作流程。另一个必须要做的是在合并到受保护的分支之前配置GitLab CI/CD,以确保代码的健壮性和质量,并从一开始就教给学生良好的做法。
更新2
这在CE和EE中发生。将新提交推送到“合并请求”时,不会发送电子邮件。我使用“监视”,“自定义”,“参与”,“开发人员”,“维护人员”进行了测试,但没有发送电子邮件。实际上,“自定义”具有“推送合并请求”的特定选项。但是,即使不是很理想,如果您想使用它,也有解决方法。实际上,它还发送电子邮件内部提交之间的差异。在“设置/集成”中,有一个选项Emails on push
。您可以在那里配置要发送通知的电子邮件列表。参见下图。如果您希望在有人将新的提交推送到MR时收到通知,另一种解决方法是配置CI管道。如果管道失败或成功,您将收到一封电子邮件(这是我们正在做的事情)。让我们等到GitLab人员回答您的GitLab票证为止。如果对您来说这是一个行不通的问题,而对您来说都没有解决方法,那么我将转到 GitHub私有存储库。