代码分支管理
大家在做微服务拆分后,难免会导致Application
项目以及一些二房包的数量加剧,10+
个项目我想应该是很容易的超过。然后这些细粒度的拆分后就会导致发布版本时候的麻烦。
展示一下现阶段我们的一个git
的分支流程图,仅供参考。
简单说明一下:
dev
环境每次都是从master
拉取一个分支,取名为dev-{发布日期}-{sequenceId}
,sequenceId
从01
开始叠加,避免一个版本需要反复拉取多次。- 到了
test
阶段,也是为了收敛(前期严格一点)。提测的时候代码需要合并到test
分支来。 - 到
UAT
阶段,还是需要从master
拉取分支,如果出现要重新拉取分支的情况下,还是严格拉取master
分支的代码。主要是为了与master
保持一致,避免把别人的覆盖掉。取名为release-{发布日期}-{sequenceId}
,规则同上。 - 上生产后,验证完毕后需要把代码合并到
master
分支,并且打包tag
。
但是在这个过程中,需要有拉取新分支,合并分支,批量删除分支,打tag
等等繁琐的操作,项目一多如果有一个批量脚本就更好了。下面我就列举一些平时使用最多的几个,仅供参考:
批量脚本
01-批量拉取新分支
比如一个新的迭代要开始了,就需要从master
拉取dev
分支。
1 | ! /bin/bash |
具体使用,比如以master
为基础拉取一个新分支
1 | ./git_batch_co_push_remote.sh master dev-20210419-01 |
02-批量切换分支
做不同的需求时候,需要来回的切换分支。
1 | ! /bin/bash |
具体的使用,先切换成master
分支。
1 | ./git_batch_co_brach.sh dev-20210412-01 |
03-批量删除远程分支
有时候不小心写错了分支名字,或者分支太多,需要删除批量删除远程分支
1 | ! /bin/bash |
具体的使用
1 | ./git_batch_delete_remote.sh dev-20210412-01 |
结果就是可以把远程分支dev-20210412-01
一次性全部删除掉。
04-批量合并分支代码
从一个环境到另外也跟环境,就需要大量的merge
操作。其实Git
的merge
操作比SVN的要好很多。
1 | ! /bin/bash |
具体使用,记得要先更新相关的代码哦~
比如是从dev
合并到test
,那么先更新对应的代码,然后co
到test的目录去。
1 | ./git_batch_co_merge_push_remote.sh dev-20210412-01 |
05-批量给分支打tag
比如我们的流程是在上生产后为master打一个新的tag
1 | ! /bin/bash |
具体使用,首先切换为master
分支。
1 | ./git_batch_tag_push.sh v1.0.0 |
06-批量mvn打包
1 | ! /bin/bash |
具体使用
1 | ./git_batch_deploy_snapshot.sh |
上面的这些脚本也是因为当时自己要发布版本,总共写脚本花费了20~30mins
的时候,发布时间也才30mins
。如果那天我不写这个脚本,业务我每次都要花费60+mins
去做,而且其他不熟悉的人做发布的时候肯定会花费更多的时间。开发就应该把那些重复的事情标准化与产品化。能够真的做到可持续~
参考地址
- 推荐一本书《持续交付2.0》,地址:https://item.jd.com/12512514.html
如果大家喜欢我的文章,可以关注个人订阅号。欢迎随时留言、交流。如果想加入微信群的话一起讨论的话,请加管理员微信号:chengcheng222e
,他会拉你们进群。