2008-02-19
网站的生产环境和开发环境版本管理
关键字: 配置管理
在网站中都有生产环境和开发环境之分,常常是一边进行开发,另外一边也要对生产环境出现的问题进行及时的解决。
这种情况对源代码的版本管理提出了较高的要求,如果不加以注意,就容易出问题。
下面是一种出问题的story:
生产环境中出现了一个bug,经过分析,是某个类ClassA的错误。开发人员在资源库中找到这个类的最新版,做出修改,并且提交到生产环境。(这里略去测试过程)结果出现了新的诸如ClassNotFound这样的错误。
原因在于,资源库中的ClassA的最新版并非是生产环境中的版本,而是开发中的版本。这个版本可能会依赖一个新增的类ClassB,同样,这个类也没有提交到生产环境中,那么把ClassA贸然提交到生产环境,就会出现找不到ClassB的错误了。
所以,在资源库中我们一定要想办法知道类的哪个版本才是生产环境的版本。
一种办法是搞两个资源库,一个给开发用,一个给生产环境维护使用。开发人员提交版本的时候,同时提交源代码,测试人员把测试过的类对应的源代码放入生产环境的资源库。
另一种方法是使用资源库的分支。专门有一个分支real给生产环境维护用,而head流则供开发使用。当开发人员提交新的版本,并且通过测试,传至生产环境。需要由配置管理员把新版本添加到分支real中去。相应的,如果是修改生产环境存在的bug,就可以直接从real分支中取到相应的版本,进行修改。需要注意的是,修改好后的版本一方面要传生产环境,另外一方面也应该同步到head流中。
这种情况对源代码的版本管理提出了较高的要求,如果不加以注意,就容易出问题。
下面是一种出问题的story:
生产环境中出现了一个bug,经过分析,是某个类ClassA的错误。开发人员在资源库中找到这个类的最新版,做出修改,并且提交到生产环境。(这里略去测试过程)结果出现了新的诸如ClassNotFound这样的错误。
原因在于,资源库中的ClassA的最新版并非是生产环境中的版本,而是开发中的版本。这个版本可能会依赖一个新增的类ClassB,同样,这个类也没有提交到生产环境中,那么把ClassA贸然提交到生产环境,就会出现找不到ClassB的错误了。
所以,在资源库中我们一定要想办法知道类的哪个版本才是生产环境的版本。
一种办法是搞两个资源库,一个给开发用,一个给生产环境维护使用。开发人员提交版本的时候,同时提交源代码,测试人员把测试过的类对应的源代码放入生产环境的资源库。
另一种方法是使用资源库的分支。专门有一个分支real给生产环境维护用,而head流则供开发使用。当开发人员提交新的版本,并且通过测试,传至生产环境。需要由配置管理员把新版本添加到分支real中去。相应的,如果是修改生产环境存在的bug,就可以直接从real分支中取到相应的版本,进行修改。需要注意的是,修改好后的版本一方面要传生产环境,另外一方面也应该同步到head流中。
发表评论
- 浏览: 166790 次
- 性别:


- 详细资料
搜索本博客
我的相册
37signals
共 9 张
共 9 张
最新评论
-
转贴 - 关于公钥,私钥和 ...
原理解释的透彻了,能不能提供具体的实现
-- by Joo -
请教一个tomcat的问题 -- ...
<Context path="/project" reloadable=" ...
-- by flynetcn -
请教一个tomcat的问题 -- ...
flynetcn 写道抛出异常的爱 写道flynetcn 写道怎末我在work目 ...
-- by 抛出异常的爱 -
请教一个tomcat的问题 -- ...
抛出异常的爱 写道flynetcn 写道怎末我在work目录下找不到编译后的se ...
-- by flynetcn -
请教一个tomcat的问题 -- ...
flynetcn 写道怎末我在work目录下找不到编译后的servlet文件,只 ...
-- by 抛出异常的爱






评论排行榜