一、环境说明

仓库管理:Gitlab
项目管理:禅道

二、仓库分支

仓库包含两个分支master与stable
master : 开发分支,用于内网测试使用
stable : 发布分支,表示最新可用的分支,用于打tag发布使用

三、仓库使用说明

仓库分为:主仓库,个人仓库,本地仓库

  • 主仓库:用于构建,测试,发布的仓库,用origin表示
  • 个人仓库:用于管理自己开发,测试的仓库,使用自己的名称表示,例如nopsky
所有的功能开发都fork到自己仓库中进行开发,包括新功能开发和bug修复
向主仓库提×××并请求之前,保证本地测试是通过的, 是可用状态

四、开发规范

在禅道中需求用story表示, 任务用task表示,问题用bug表示
当开发新功能时分支命名: story-id
当修复bug时分支命名: bug-id

任务不需要单独建立分支开发(任务属于某一个需求)

提交的commit信息必须是以task#id, bug#id开头。可以查看禅道的git整合说明,commit说明此次变动

五、开发流程

开发新功能

  • 1.先同步主仓库和个人仓库的分支信息
    git fetch origin --prune
    git fetch nopsky --prune
  • 2.创建本地分支用于开发功能,例如在禅道中需求id为123,则在本地创建story-123分支
    git checkout -b story-123 origin/stable
  • 3.提交开发的内容,如完成了需求下面任务id为123的开发
    git add xxx
    git commit -m "task#123 支持公司同名"
    git push nopsky
  • 4.合并分支,需求开发完成以后需要提交到主仓库master分支进行测试

    git checkout -b master-123 origin/master
    git merge story-123 (无merge信息) / git merge --no-ff story-123(有merge信息) / git cherry-pick sha1-id
    git push nopsky master-123

    在gitlab向主仓库master分支发起merge请求

  • 5.修复测试过程中出现的bug

    git checkout store-123
    git add xxx
    git commit -m "bug#123 修复xxx问题"
    git checkout master-123
    git merge bug-123 (无merge信息) / git merge --no-ff bug-123(有merge信息) / git cherry-pick sha1-id
    git push nopsky master-123

    在gitlab向主仓库master分支发起merge请求

  • 6.测试通过以后发布新功能

    git checkout -b stable-123 origin/stable
    git merge story-123 / git merge --no-ff story-123 / git cherry-pick sha1(可以先在story-123通过git rebase -i 合并commit的信息)
    git push nopsky stable-123

    在gitlab向主仓库stable分支发起merge请求

  • 7.删除本地的功能开发分支
    git branch -d story-123

修复线上出现的bug

  • 1.只有线上分支stable出现的bug(master分支对应的功能已经进行了重构或者优化,不存在bug)

    git fetch origin --prune
    git fetch nopsky --prune
    git checkout -b bug-123 origin/stable
    git add .
    git commit -m "bug#123 修复xxx问题"
    git checkout -b stable-123 origin/stable
    git cherry-pick sha1-id / git merge --no-ff bug-123 / git merge bug-123
    git push nopsky stable-123

    在gitlab向主仓库stable分支发起merge请求

  • 2.线上和测试环境都存在bug(stable和master都存在bug)
    git fetch origin --prune
    git fetch nopsky --prune
    git checkout -b bug-123 origin/stable
    git add .
    git commit -m "bug#123 修复xxx问题"
    git checkout -b master-123 origin/master
    git cherry-pick sha1-id / git merge --no-ff bug-123 / git merge bug-123
    git push nopsky master-123

在gitlab向主仓库master分支发送merge请求, 测试通过以后向stable进行合并操作

git checkkout -b stable-123 origin/stable
git cherry-pick sha1-id / git merge --no-ff bug-123 / git merge bug-123
git push nopsky stable-123

在gitlab向主仓库stable分支发送merge请求

  • 3.删除本地的bug分支

    git branch -d bug-123
  • 4.只有master分支存在bug(新功能出现的bug)

参考“修复测试过程中出现的bug”
PS:主仓库在合并请求的时候,默认都要删除来源分支