如何跟踪与开发环境有物理隔绝的生产环境下的代码变更?
其实我不是什么管理人员,只是某个金融IT公司小小的程序员而已
虽然命比纸薄却还是心比天高,对于公司的代码变更完全不管理感到忧心忡忡。
事情起源于上星期对报表系统的两次维护:
一次是所有功能全部报错、系统几乎瘫痪,所查询的表数据全部丢失,客户大叫“我的数据呢?”。查找许久才发现,某存储过程的内容是清空全表,然后从数据来源的表中查询数据插入表中,而insert语句提供的值居然比表结构还多出三个字段。想来应该是有谁试图增加新功能,在自己机器上调试好了拿来改的,却忘了在表中加上这三个字段。修正之,运行正常。
然后,没过几天,同事告诉我,他被要求在报表末尾添加合计,但是无论怎么加总是不显示。查找许久发现,模板文件中负责显示的代码0..$len-1不知被谁改成了$len-2,修正之,运行正常。没敢告诉客户“你们前几天的报表可能都丢失了最后一行”。
于是我就自己尝试在客户服务器上创建了个“更新记录”文本文件,每次更新记录下更新内容、涉及文件、待解决。但这毕竟仍然不是很好的解决方法…
至于为什么不用SVN之类的说法,金融IT你懂的,为了安全他们的网络常常是跟互联网物理隔离的,要进行维护还得跑到他们公司去、甚至进到机房去。话说在机房待一天真不好受啊,耳朵都震聋了(不是像大学机房的那类,而是IDC那种满是机架的那类)
像这样下去也不是个办法啊,对代码的变更完全没有跟踪,谁都不知道在自己上次维护后又有谁做了哪些改动,是什么动机。至于说为什么不先开发后实施,我们确实是先开发后实施的,安装在客户服务器上的是开发好的系统,但是各种各样的原因甚至包括客户需求的变化导致仍然需要各种更改。甚至你无法做到在本机上调试后再拷贝到客户服务器,正因为代码变更没有跟踪,除了在服务器面前,你永远不知道它正在运行的是什么代码。