需求
gitea 中当某个仓库需要开发组多人使用时,就不太适合直接推送,而是应该使用 pull request
来管理合并了。使用时需要如何配置,才能满足多人请求,单人审核的权限需求,以及选用哪种方法进行合并?
解决
分支
master
只能从release
合并过来。仓库设置 -> branch 开启分支推送保护,并且合并白名单设置只能指定的测试人员才能把release
中的某个提交合并到master
上去。develop
不能直接推送,必须从其他的个人分支合并过来。也是开启分支推送保护,并且合并白名单只能由管理员才能合并过来。
权限
leader
管理员的权限需求为:
- 不能删除仓库
- 管理仓库的方方面面
- 管理从其他分支到
develop
分支的合并
解决方法即为:
- 在组织中创建
team
, 命名为admin
, 设置为spec repo
和admin access
即可。 - 把允许管理的仓库添加给
admin team
. - 只要不是
own team
, 就不能删除仓库。 - 把
admin team
加入到develop
的合并白名单 - 把具体的
leader
加入到这个admin team
中去。
develop
开发人员的权限需求为:
- 可以推送除了
master
,develop
,release
以外的分支 - 只访问允许的仓库
解决方法为
- 在组织中创建
develop team
, 设置为spec repo
和write 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
分支。