你是否做好了代码的备份?

//=====================================================================
//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的数据库有单独的一个服务器,这样可以和工作机分离,也方便大家的协同合作。而每天的备份,都会在外部硬盘有相应的拷贝。我一般是用两个移动硬盘,里面的数据都是一样的,上面拷贝的都是每天备份的内容,以此降低单个硬盘硬盘损坏造成的灾难。

posted @ 2010-03-16 15:50  我的一天  阅读(319)  评论(0编辑  收藏  举报