代码提交习惯
代码(或其余工作内容)禁止长时间暂存在本地,倡议每天(或更短)保留到服务器,以避免电脑故障带来的损失。另外为与团队及时交换,
倡议尽早提交merge request(未实现可标记为WIP状态),个别要求不超过1周(工夫越短越好)。
根本开发流程
- fork我的项目到本人名下,同时配置好这个fork我的项目的CI(留神,须要配置正确的gitlab runner,可能须要runner所有者受权)
本地增加两个remote: 源我的项目(origin)和本人名下的fork(${your-remote-name})
git remote add ${your-remote-name} git@xyz.com:your-name/project-name.git
创立本地开发分支(每个Commit只做一件事件)
git checkout -b name_of_the_feature_branch
- 进行代码批改,保障必要的检查和测试在本地通过
- 实现批改,commit到本地(commit message要符合规范,参考相应内容)
git push commit到本人的fork,并发动merge request
git push ${your-remote-name} name_of_the_feature_branch
- 填写merge request信息,并关注对应CI运行后果
- 推动reviewer进行code review并依据review意见批改代码
- 如果通过review产生有多个commits,倡议通过git rebase -i进行squash后提交,保障commit log简略明且符合规范
- 最终由reviewer合并代码
其余注意事项
- 合并抵触,个别应该应用rebase而非merge
- gitlab我的项目倡议设置成
Fast-forward merge
- gitlab我的项目倡议设置成
Pipelines must succeed
和All discussions must be resolved
- 一个merge request,如果其他人review过,除非永恒敞开,否则不应该敞开从新发新的merge request,这样会失落review
Commit message标准
作用
一个规范化的commit message,有以下作用:
- 让其余合作者能清晰精确的揣测出这个commit的内容
- 能便捷甚至自动化的生成好看的Release Notes或CHANGELOG
标准细则
- 应用英文(业务相干我的项目除外)
- 大写字母结尾(非凡状况除外),简练但具体的形容
好的例子:
- Support LeakyReLU conversion from TensorFlow
- Add Gather and Scatter ops for DenseTensor
坏的例子:
- Fixing broken links
- Some fix
- Fix compatibility bug
- 附加类别标签前缀(可选,依据我的项目而定,例如我的项目须要进行正规的Release治理),格局参考git-chglog或AngularJS Git Commit Message Conventions
类型 | 阐明 |
---|---|
feat | 性能开发 |
fix | bug fix |
perf | 性能优化 |
docs | 增加文档 |
style | 代码格调批改 |
refactor | 性能不变的重构 |
test | 补充测试 |
chore | 维护性工作 |
例如:
- feat: Add Gather and Scatter ops for DenseTensor
版本号标准
我的项目版本号命名规定遵循语义化版本SemVer标准:
版本格局:主版本号.次版本号.订正号,版本号递增规定如下:
主版本号:当你做了不兼容的 API 批改,次版本号:当你做了向下兼容的功能性新增,订正号:当你做了向下兼容的bugfix
分支、tag治理
类型 | 命名规定 | 创立自 | 阐明 |
---|---|---|---|
master分支 | master | - | 主开发分支 |
feature分支 | feature性能点名称 | master | 用于简单长周期独立feature的开发,不利于麻利开发,个别不应用 |
release分支 | r+版本号前两位(如r1.0) | master | 用于保障release品质,更新代码的code review |
release tag | v+版本号(如v2.0.3) | release分支 | 发行tag版本 |
release hotfix | 只存在于本地 | release tag | release bug修复,修复完后打新的tag,PATCH号+1(如v2.0.3 -> v2.0.4) |
参考资料: A successful Git branching model