版本对比与合并请求

版本对比

进入项目后,点击 代码—>版本对比,进入版本对比页面。版本对比可对代码进行审查,系统会检测比较版本能否自动合并。

查看差异

可选择 2 个不同的分支、标签进行对比,查看差异即提交记录和文件改动。点击文件改动 TAB,即可查看所有代码行级改动,具体方法参考 查看提交详情图片也可输入 sha1 进行对比。

图片

合并状态提示

可自动合并

当源分支与目标分支对比后没有发现冲突,版本对比将展示它们之间的差异,并提示该分支可自动合并,可以创建合并请求并在线合并分支。
图片

不可自动合并

当源分支与目标分支对比后发现存在冲突,版本对比将展示它们之间的差异,并提示该分支不可自动合并,可以创建合并请求,但需解决冲突后继续在线合并分支。

图片

不可合并

当目标分支或源分支选择了 tag 或 sha1 时,版本对比将展示它们之间的差异,并提示该分支不可合并,不可创建合并请求。

无法进行对比

当源分支的提交不领先于目标分支时,版本对比不会展示它们之间的差异,也不可创建合并请求。

合并请求(Merge Request)

研发管理流程中,为了方便项目组不同开发者可以同时进行开发工作,并保证代码质量。管理者将 master 分支设置为保护分支,开发者均基于 master 分支进行开发。开发完毕后,开发者向 master 分支提交合并请求,通过代码评审和得到允许合并权限后,开发者将开发分支合并至 master 分支。

页面介绍

进入项目后,点击 代码—>合并请求,进入合并请求页面。页面上方显示搜索筛选和新建合并请求入口。合并请求列表显示合并请求的标题、源分支目标分支、发起者、发起时间、评论数,右侧还显示当前某合并请求已得到评审者允许合并。其中,合并请求的状态有两种,开启中和已关闭。当合并某个合并请求后,该合并请求状态变成已关闭。

图片

新建合并请求

创建合并请求,只支持分支与分支之间创建,请在左边填写目标分支,右边填写源分支。合并请求的目标分支默认为默认分支;当目标分支或源分支选择了 tag 或 sha1 时,或者源分支的提交不领先于目标分支时,不可创建合并请求。当系统显示为可合并时,才能创建合并请求。

开发者填写完合并请求的标题、描述(支持 Markdown 语法),添加该合并请求新增功能或 BUG 修复对应的任务或者相关的文件、合并请求、Wiki 等项目内资源,并选择分支管理员或任务相关的项目成员作为评审者做代码评审,点击新建即可创建合并请求。

代码评审者将会收到该合并请求创建的通知后,进行代码评审,评审通过点击允许合并按钮。当合并请求发起者收到分支管理员的允许合并通知后,即可合并该合并请求。

图片

 

代码评审(Code Review)

开发者可在新建合并请求时或合并请求合并前,更新标题和描述,添加其他项目成员为评审者,并关联项目内资源(如任务、文件、合并请求、Wiki)。

评审方式

评审者收到邀请评审通知,进入合并请求详情页面,并对代码进行评审。评审内容包括以下。

  1. 该合并请求的标题、描述及关联资源是否对代码改动作出充分说明,评审者可通过评论和发起者进行沟通确认
  2. 针对提交记录对应的文件改动,进行代码行级评审(评论),详情见 代码行级评审图片
允许合并/取消允许合并

当前合并请求通过评审后,评审者点击允许合并按钮,表明对发起者的代码质量认可。在合并请求合并前,评审者还可以取消某合并请求的允许合并操作。

图片

允许合并操作会产生 评审 +1 合并请求 动态。若是分支管理员点击允许合并按钮,还会额外产生 授权合并请求 动态。

图片

合并权限控制

当目标分支是保护分支时,合并请求发起者是保护分支管理员,他可以在无评审者允许的情况下自行合并合并请求。当合并请求发起者不是目标分支管理员时,他需要邀请分支管理员为评审者,并得到管理员允许合并后,才可合并合并请求。保护分支管理员可以合并当前该分支的所有合并请求。

当目标分支不是保护分支时,发起者不需得到任何项目成员的允许合并即可合并该合并请求。

分支权限控制详情见 在线分支管理

合并分支/合并合并请求

合并请求发起者在得到目标分支管理员的允许合并权限后,或者目标分支管理员,可在合并请求详情页点击【合并分支】-> 【确认合并】进行分支合并。至此,开发者提交的代码改动即可合并至目标分支。

删除源分支

合并分支时,勾选 删除源分支,可在合并分支时删除源分支。

图片

Fast-Forward 模式合并

MR 和 PR 在合并的时候默认会产生一个合并提交,但是如果在合并的时候勾选了『Fast-Forward 模式合并』,服务器会在合并的时候判断该 MR 或者 PR 是否符合『快进模式』合并,如果符合则会按照『快进模式』合并,不产生合并提交,如果是不符合『快进模式』合并的情况,则忽略该选项,依然以产生合并提交的方式合并。这个选项相当于 git merge 的 --ff参数。

图片

取消合并请求

合并请求发起者和保护分支管理员,点击合并请求详情页的取消按钮,即可取消合并请求。取消合并请求对源分支和目标分支无任何影响。

相关文章