初创公司代码管理与运维规范化

前言

没有什么规则是完全正确的,但如果没有大家统一认可的规则,各自为战,事情将会变成一团糟。

代码仓库与分支管理

SVN分支管理

很多创业公司的代码仓库是使用的SVN,集中式代码仓库,我们最初用的也是,很古老的工具,我知道。
使用SVN,有两种开发模式,

  1. 主干开发
    所有研发开发不拉新分支,在本地开发完一部分后commit到master,有冲突及时解决。理念是因为解决大冲突很痛苦,所以要经常解决小冲突,永远保证master代码是可发布的状态,小步迭代,快速交付。事实上这个理念相当理想,基本不可能实现。
    这个是建立在每个研发的代码质量很高,并且可以自觉且完整地测试,以保证0 bug commit到master,或有全面的回归测试,才能保证master代码永远是可发布状态。
    在初创公司,如果你用SVN,千万不要作这个死。如果你这么用的话,经常会发现,master代码都是半成品或充满bug,这时候如果有高优需求或hotfix,只能各种翻svn log,退回分支开发。

  2. 分支开发
    分支开发会更常见些,每次新迭代开始,或有新功能开发时,都从master上拉出一个开发分支,相当于全量拷贝一份代码到新分支上。
    在新分支上进行开发,开发完之后,可以直接将这个分支发布到生产环境,也可以将代码合并到Master,然后发布master到生产环境。
    当然,我们强烈建议先把分支代码合并到master,再发布master代码,通过流程强制约束master代码永远是最新的。如果有多个分支并行开发,合并代码的时候可能会比较痛苦,要去解决冲突。
    基本这么做的话,也不会有什么大问题。除了开分支的时候全量拷贝比较蛋疼。

Git分支管理

Git,是大神linus继linux内核之后的又一神级的产品。在理念上领先svn一个时代。详细可以从网上看svn,git的对比。对我而言,git和svn的不同,主要表现在

  1. svn是集中式的,只有一个中心。而git是分布式的,每个人都可以有全量的代码。从命令上就可以体现出来,svn checkout V.S. git clone
  2. svn创建新分支是从master拷贝全量的文件到新branch,git是增量的。所以同时开10个分支,svn的源文件会变成10份,而git不会。

实际使用中,可以采用git-flow的方式,将各类branch细化使用。主要分这么几类分支

  1. master
  2. release
  3. dev-branch
  4. hotfix

详情可以参考阮一峰-Git 工作流程,不展开了。

生产环境的版本管理

工程的运维规范化

统一目录结构

统一启停控制脚本

统一maven仓库

多环境下多套配置文件

统一编译脚本

你可能感兴趣的:(初创公司代码管理与运维规范化)