迁移项目
- 登陆sdp.nd,在“我的应用”下找到需要迁移的移动组件,然后复制其git地址的后半部分(也就是git@git.sdp.nd:后面的部分),如git@git.sdp.nd:component-ios/imsdk.git的git地址,我们复制component-ios/imsdk.git
- 登陆gerrit.sdp.nd,登陆后点击一级导航“Projects”,然后点击“开通门户代码库”二级导航进入开通gerrit的页面,将刚才复制的git地址的后半部分(即component-ios/imsdk.git)赋值到输入框内,点击开通即可
项目迁移
高能预警:迁移后一定要在gitlab中关闭develop分支的push功能,因为提交到gerrit的代码会自动同步到git库存中,但是直接提交到git库中的代码无法同步到gerrit库中,为保证develop分支在git库与gerrit库中同步,请迁移后关闭develop分支的push功能
克隆项目、分配权限
-
项目迁移后,点击“Projects”下的“List”即可看到所有你有可读或更高权限的项目,点击某个项目进入项目信息页面,然后选择“Clone with commit-msg hook”和"ssh",然后点击最右侧的复制按钮,即可获得克隆项目的完整命令:
获取克隆命令 -
然后点击项目下的"Access"按钮进入权限管理界面,可以看到gerrit默认分配的六个权限组:owner(所有者,最高权限)、read(下载代码)、push(上传代码审核)、review(审核代码权限)、verified(验证代码审核的权限)、submit(提交代码入库),点击对应的权限组,然后输入工号即可将开发人员添加到对应的组内,通常为了审核效率,我们会将review、verified和submit权限都设置为同一个人:
权限管理
创建分支
根据内部开发人员的反馈及协定,如果每次提交代码都需要审核,势必影响开发效率及代码保存,因此采用了折中的办法,即开发过程提交到普通特性分支(该分支通过gerrit创建,配置为不需要审核);提测前将普通特性分支的代码提交到gerrit特性分支(该分支通过gerrit创建,需要代码审核);之后所有提测问题的修改都在gerrit特性分支上进行,并需要代码审核,此时普通特性分支可以删除;审核通过将gerrit特性分支合并到develop分支并提交),以下以IMSDK开发重构三期为例,阐述具体的开发及审核流程
-
通过“克隆项目、分配权限”这一步骤后,可以通过sourcetree下的“New”->"Add Existing Local Repository",将添加后的项目交由sourcetree进行管理
-
通过gerrit创建两个分支,一个普通分支:feature/platform_dev;一个需要审核的gerrit分支:feature/platform分支
创建分支 -
然后将feature/platform_dev分支设置为免审核提交,具体设置方式如下(注意reference设置的分支名形如refs/heads/<target-branch-name>):
设置分支免审核 -
然后可以在sourcetree中迁出feature/platform_dev分支进行修改和正常push提交(xxx_dev分支可以直接使用sourcetree进行commit和push);然后在提测前将feature/platform_dev合并到feature/platform分支上;因为之前的commit gerrit已经认为审核过了,所以这个时候不能直接提交审核,否则会报no new change错误。我们在合并的时候需要将之前的commit合并为一个新的commit再提交:
使用命令:git merge --squash feature/platform_dev,合并platform_dev到platform,并生成一个新的commit
使用sourcetree提交commit后,最后使用命令行push代码到gerrit上:git push origin HEAD:refs/for/feature/platform
-
然后拥有代码审核权限的人登陆gerrit,进入“All”下的“open”子菜单,就可以看到需要审核的提交代码,点击进入即可开始审核
代码审核
6.最后合并代码到develop分支的时候,要首先在本地将分支合并到develop,然后将代码push到refs/heads/<target-branch-name>目标(这里是develop),但是首先要先设置ref/heads/*的权限
开放develop的直接push权限
提交代码到develop分支命令:git push origin HEAD:refs/hdeads/develop
备注事项
- 一般也就只有在开发特性分支的时候才需要使用了两个分支同时使用,一个需要审核一个无需审核
2.提测后所有的代码修改都需要进行代码审核,因此一定要在审核分支进行修改
3.线上bug的修改基于master只需开一个需要审核的hotfix分支即可
4.一般将无需审核的分支命名为feature/xxx_dev,需要审核的分支命名为feature/xxx,或hotfix/xxx
5.关于gerrit详细使用请参考http://wiki.sdp.nd/index.php?title=Gerrit_FAQ
网友评论