你是否做好了代码的备份?
//=====================================================================
//TITLE:
// 你是否做好了代码的备份?
//AUTHOR:
// norains
//DATE:
// Tuesday 16-March-2010
//Environment:
// WINDOWS XP
//=====================================================================
我认为,一个优秀的程序员,不仅需要代码写得漂亮,能快速解决问题,更需要懂得如何备份自己的代码。我想当程序员有一段时日的朋友,总会有那么一两次碰到需要恢复到之前代码的时候,那么你的代码备份的完善程度,将决定于你烦恼的多少。
一般来说,我觉得代码的备份应该基于如下原则:
1. 清晰明了,能够简单地看出备份的文件是哪个节点。
2. 当代码出现问题时,能够最简单地恢复到最近状态
3. 尽可能减小代码出问题引起的灾难。
我就以我日常工作的备份方式作为本文的主题。当然,我不敢说我的备份方式是最好的,但我可以说是满足了以上所列的要求。仅此,作为抛砖引玉。
首先,我会将整个工程文件拷贝到一个文件夹里,删掉一些生成的无用文件,比如:*.ncb,*.exe等。
然后将该文件夹更名,以日期+英文字母的方式。日期就是当前的年月日,字母以A,B,C依次排列。这样的话,我们看前面的数字,就能知道该备份文件是什么时候开始的;英文字母则是当天的第几次备份。
最后,则是将所有的文件,压缩成一个压缩包。这样的好处是,当文件夹里面的文件出问题时,能够从压缩包里面将文件解压出来。虽然这样是增加了不少磁盘空间,但相对来说,却大大降低了风险。
这里还有一个ReadMe.TXT的文件,用来记录每次备份的改动。文件里的内容,其实是以文件夹的名称作为索引的。摘录其中一段的备份数据如下:
这样备份以后,当代码出现问题,那么恢复到某天的某个结点是非常简单的。但这却有个致命的缺陷,我们很难知道单个文件的更改情况。虽然我们可以根据readme.txt文档查找相关类的信息,但在如此浩荡的信息量中,我们很难保证不遗漏一两条信息。所以这时候我们只能借助于代码管理工具。
代码管理工具其实很多,功能也多种多样。在这里,我选用的是微软的VSS。没有什么别的原因,仅仅是因为其够简单。如何使用VSS我这里就不再大费口舌了,网上教程一大把,大家尽可以搜。我这里只是想说每一次的chech in。
其实我的check in很简单,其实是和readme.txt是一一对应的:
这样的好处也很明显,改动的信息我只需要写一次,剩下的,就是复制黏贴而已。并且这样,在一致性上面维护的也很好。
而这VSS的数据库,也如同之前的工程一样,每天需要备份。只不过方式有所不同,每天的备份,其实都只是备份其压缩文档而已。因为VSS的数据库实在太庞大,如果以单个工程的方式来进行,所耗费的时间和空间着实很惊人。
最后,也是极其重要,不可忽视的一环,就是备份的介质。我的做法是,VSS的数据库有单独的一个服务器,这样可以和工作机分离,也方便大家的协同合作。而每天的备份,都会在外部硬盘有相应的拷贝。我一般是用两个移动硬盘,里面的数据都是一样的,上面拷贝的都是每天备份的内容,以此降低单个硬盘硬盘损坏造成的灾难。