开发流程

以下开发流程以 fleet-dashboard 为例。

一、前往 GitLab Fork 项目主仓库至个人命名空间。完成后请将个人命名空间下面的项目分支权限全部设置为非保护分支。

二、克隆项目至本地。
git clone git@gitlab-rd.niucache.com:xiaozheng.zhang/fleet-dashboard.git

三、增加远程仓库 remote 地址
git remote -v
多人协作开发规范 - 图1
git remote add upstream git@gitlab-rd.niucache.com:open/fleet-dashboard.git
git remote -v
多人协作开发规范 - 图2
# 实际结果
#origin git@gitlab-rd.niucache.com:xiaozheng.zhang/fleet-dashboard.git (fetch)
#origin git@gitlab-rd.niucache.com:xiaozheng.zhang/fleet-dashboard.git (push)
#upstream git@gitlab-rd.niucache.com:open/fleet-dashboard.git (fetch)
#upstream git@gitlab-rd.niucache.com:open/fleet-dashboard.git (push)

四、开发新功能
# 保证本地 master 与 upstream/master 一致
git checkout master
git fetch upstream && git reset —hard upstream/master
git checkout -b feature-XXX
git push —set-upstream origin feature-XXX // 把分支提交到自己到仓库

开发测试流程
# 保证本地 release 与 upstream/release 一致
# 合并代码 && 解决冲突 && 提交代码
# 完成后前往 GitLab 提交合并申请至 upstream/release
git add .
git commit -m ‘feature-XXX’
git checkout release
git fetch upstream && git reset —hard upstream/release
git merge feature-XXX
git push origin

上线流程
# 保证本地 production 与 upstream/master 一致
# 合并代码 && 解决冲突 && 提交代码
# 完成后前往 GitLab 提交合并申请至 upstream/master
git checkout master
git fetch upstream && git reset —hard upstream/master
git merge feature-XXX
git push origin
测试分支重置
代码上线后管理员管理员需要确认是否需要重置 upstream/release 分支。如果当前 upstream/release 和 upstream/master 冲突,那么请务必重置一下,其他情况酌情考虑。

权限控制

本方案开始实施后 upstream 仓库所有分支关闭 push 权限。所有代码合并操作请使用 merge request 方式。