构建之法(第三版) 9.1分
读书笔记 第11章 软件设计与实现
greyzeng
如何给一个系统的所有源文件都打上标签,这样别人可以同步所有有这个标签的文件版本?

我最早接触的打基线(针对项目源码)的方式,是将每次发布的版本源码放到一个文件夹下面,比如这次发布的是1.1版本,就在版本管理库(用的是SVN)里面的tag目录下,建立一个名字V1.1的文件夹,然后把V1.1版本的源码都放进去。这样做的方式维护起来比较麻烦,V1.1发布以后,要改一些临时修复的紧急bug,还要在tag下的V1.1文件夹中建立一个patch文件夹来放修改bug涉及的源码文件,非常麻烦。

后续想了一个比较好的方式,就是在发布的时候,在版本管理库的根目录下做一次空提交,提交的备注就是@release+版本号,如:@releaseV1.1,表示这是V1.1版本发布的时候的版本,这样的话,看提交历史就可以很清楚的找到LKG版本,而且也容易回滚。

看到这里想到一个场景,就是很多系统在开发的时候,配置文件里面会记录数据库连接,在开发的时候,用的是测试库的数据库连接,在发布的时候,要修改成正式数据库的连接,最早的时候,我们会区分两套源码,一套源码是连测试库的,用于日常开发,发布以后,把连接生产数据库的源码打到基线区,后续想到一种更优化的方式(针对Maven项目),会存两个配置文件:

prod.properties --> 生产配置

dev.properties --> 测试配置

然后在打包的过程中,通过命令行参数来控制采用那个配置文件,比如默认的打包命令是:

mvn clean package

这样打包就读取的是dev.properties中的内容

加上一个参数 -Pprod

mvn clean package -Pprod

这样打包读取的就是prod.properties的配置文件

运行/编译的时候类似,都是通过命令行参数来控制,这样的话,就只需要维护一套源码即可。

0
《构建之法(第三版)》的全部笔记 30篇
豆瓣
免费下载 iOS / Android 版客户端