需求

gitea 中当某个仓库需要开发组多人使用时,就不太适合直接推送,而是应该使用 pull request 来管理合并了。使用时需要如何配置,才能满足多人请求,单人审核的权限需求,以及选用哪种方法进行合并?

解决

分支

  • master 只能从 release 合并过来。仓库设置 -> branch 开启分支推送保护,并且合并白名单设置只能指定的测试人员才能把 release 中的某个提交合并到 master 上去。
  • develop 不能直接推送,必须从其他的个人分支合并过来。也是开启分支推送保护,并且合并白名单只能由管理员才能合并过来。

权限

leader

管理员的权限需求为:

  • 不能删除仓库
  • 管理仓库的方方面面
  • 管理从其他分支到 develop 分支的合并

解决方法即为:

  • 在组织中创建 team, 命名为 admin , 设置为 spec repoadmin access 即可。
  • 把允许管理的仓库添加给 admin team.
  • 只要不是 own team, 就不能删除仓库。
  • admin team 加入到 develop 的合并白名单
  • 把具体的 leader 加入到这个 admin team 中去。

develop

开发人员的权限需求为:

  • 可以推送除了 master, develop, release 以外的分支
  • 只访问允许的仓库

解决方法为

  • 在组织中创建 develop team, 设置为 spec repowrite access 即可。
  • 把允许访问的仓库添加给 develop team.
  • 把具体的开发人员加入到这个 develop team.

pull request

  • 开发人员把验证无误的 commit 通过 new pull request 提交,注意,需要合并到的分支和来源分支,不要弄错了。还有别忘了 WIP.
  • leader 验证相关的提交,无误后,取消 WIP, 然后允许合并,并写下自己的结论。

merge

pull request merge

默认的第一个 merge, 所有的 commit 都存在,并会专门生成一个 merge 记录。

rebase merge

所有的 commit 都存在,没有专门的 merge 记录。

rebase –no-ff

所有的 commit 都存在,生成一个专门的 merge 记录。

squash

压缩 commit, 在 develop 上面只有一个 merge 记录,这个记录里面会写明有哪些具体的 commit, 能够有效的减少提交的记录数,但是最大的问题是,后续的 pull request 会出来一大堆不同点,并且 git 图上面也会绕一大圈,估计只适合 master 分支,不太适合 develop 分支。

参考