Git实现Code Review前置

宽邦开发
标签: #<Tag:0x00007f5b8fda2c48>

(iQuant) #1

刚才群里有人问code review流程,社区流程太麻烦,是否有其他模式?我们也非常重视code review,并且一直在探索对开发者更友好的git code review流程,这里简单分享一下(还在持续改进中)。

常规社区Git Code Review流程

  1. 根据开发任务,建立git分支, 分支名称模式为feature/任务名,比如关于API相关的一项任务,建立分支feature/api。
  2. 运行git branch 确认切换到了feature/api分支
  3. 编辑代码完成开发任务, commit相关代码:git add -A / git commit -m “implement xxxx”
  4. 将分支代码push到服务器:git push origin -u feature/api
  5. 登录到gitlab,创建一个Merge Request
  6. 在merge request详细页面, 选择分支,填写相关标题/说明/reviewer等
  7. 请提醒reviewer去审核merge request,系统也会发邮件提醒reviewer
  8. Reviewer打开merge request页面,查看代码修改情况,也可以在相应的代码处添加注释,提示代码作者哪里应该修正。
  9. 代码作者根据reviewer的要求,调整代码后commit/push到服务器。 然后reviewer继续设置, 如此循环,直到没有问题。
  10. 当代码没有问题以后,在gitlab的merge request上点击merge,合并到master

宽邦Git Code Review流程

  1. 在master分支开发代码
  2. 提交code review:make cr R=reviewer1,reviewer2,…
  3. 代码开发者和reviewers在gitlab做review,提示代码作者哪里应该修正
  4. 代码开发者根据反馈,修改代码,commit然后 make cr 提交
  5. 直到获得至少2个upvotes,在gitlab的merge request上点击merge,合并到master

特点

  1. 实现了Git的code review前置
  2. 友好的支持更早更小的code review,提高了code review质量
  3. 简化了代码开发/提交/review工作,自动化了重复工作,提高了效率
  4. 我们开发相应的git工具脚本和服务,通过工具来实现流程,简化工作,让工程师从重复的工作中解放出来
  5. 工程师文化:不遗余力的优化工具

make cr

我们的每个项目都会包含公共项目public,里面提供了项目常用工具,包括code review工具 make cr。有兴趣了解的可以加我们微信小Q (bigq100)

~/src/bigquant/aiuserbox   master  make cr R=hxu
make codereview
python3 /Users/liangju/src/bigquant/aiuserbox/public/codereview/codereview.py \
        --author jliang \
        --project aipaas/aiuserbox \
        --branch master \
        --reviewers hxu
git branch -f bcr/jliang/master/7dfa756d master
git push -f origin bcr/jliang/master/7dfa756d
Locking support detected on remote "origin". Consider enabling it with:
  $ git config lfs.https://code.bigquant.ai/aipaas/aiuserbox.git/info/lfs.locksverify true
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 241 bytes | 241.00 KiB/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote:
remote: To create a merge request for bcr/jliang/master/7dfa756d, visit:
remote:   http://code.bigquant.ai/aipaas/aiuserbox/merge_requests/new?merge_request%5Bsource_branch%5D=bcr%2Fjliang%2Fmaster%2F7dfa756d
remote:
To code.bigquant.ai:aipaas/aiuserbox.git
 * [new branch]      bcr/jliang/master/7dfa756d -> bcr/jliang/master/7dfa756d
merge request and requires review by hxu
merge request: http://code.bigquant.ai/aipaas/aiuserbox/merge_requests/3
Merge request created. NOW go ask reviewers to do the code review

(asonyang) #2

大宽的社区阅读门槛已经到了中级程序员级别。嘻嘻。