计划今天上线,开发不停在提交代码,测试一直在回归开发代码改动,上线时间越来越晚,甚至推迟到第二天,大家有没有这样的苦恼?
大家怎么解决这个问题呢?
有一个办法,每次上线前邮件或其他方式告知开发,要求上线当天不能提交任何代码。
这样做的结果是什么呢?
1. 开发还是会提交代码,因为他忘了今天上线;
2. 开发还是会提交代码,因为他是新来的,不知道上线当天不能提代码;
3. 开发还是会提交代码,因为他不知道今天上线;
搜狗浏览器最开始上线就是采用的这种方式,效果一点都不好。
那有什么方法可以有效地控制开发在上线前提交代码呢?下面介绍下搜狗浏览器现在使用的方法。
我们的代码是用SVN维护的,如果我们限制开发不能提交代码到SVN,那么就从根本上解决了这个问题。
1. 当确定好上线时间后,提前发送上线计划邮件给项目组。
原图大小:69.2K (表怪我马赛克打太多o(>﹏<)o)
2. 上线前一天,在build系统上,将计划上线的支线冻结。
原图大小:16.4K
代码冻结后,自动发出代码冻结通知邮件和代码提交密码邮件。
原图大小:13.2K
原图大小:12.0K
将支线冻结的本质是在SVN服务器端限制了SVN commit(具体原理后面再介绍)
3. 代码冻结期间,为了修复严重bug,开发需要提交代码时,只要在SVN提交log中写入提交密码即可。
原图大小:26.2K
4. 上线后,在build系统上,解除代码冻结。
原图大小:14.2K
解除代码冻结后,自动发出通知邮件。
原图大小:11.6K
以上就是搜狗浏览器上线前控制开发提交代码的流程。
下面介绍下在SVN服务器端限制commit的原理。
SVN使用的是Subversion,Subversion上提交代码时经过了两个回调函数:pre-commit和post-commit。
pre-commit是在SVN提交到数据库前执行的,它是可以更改的。
我们在pre-commit中增加了一些判断逻辑:
1. 检测该条支线是否被冻结。
2. 如果被冻结,提交log中是否包含正确的提交密码。
如果通过以上判断逻辑,就会执行post-commit,将代码提交到SVN。
如需转载该篇文章,请注明来自“搜狗测试”