关于使用版本管理软件的初步想法
对于靠写代码吃饭的人来说,如何良好地保存自己代码的各个版本,以便能够比较容易地查找其中每一个改变的原因和实行办法,是相当重要的。 至于小组合作开发的情形,则还要包括对代码修改互斥的处理。如果文档采用Tex、DocBook等纯文本格式书写,那么文档本身也可以使用版本管理软件进行管理。本文简单记录一些我对此类型软件的初步了解和想法。
对于不同的应用情景,应该使用不同级别的工具进行管理,否则,在简单环境下使用复杂的工具可能会十分麻烦,而在复杂环境下使用一般的工具又不能满足应用需求。
对于个人应用,也就是记录自己一个人的文档和代码,不需要与他人共享和共同维护。那么一个很好的方法是使用RCS进行代码管理。如果在Linux下,一般在发行版中就自带RCS管理工具(可以直接执行RCS命令);如果在Windows下,那么有一个免费软件叫做CS-RCS,官方地址为http://www.componentsoftware.com/,此工具与Windows的资源管理器结合很好,可以在右键菜单里完成绝大多数功能,此软件的Pro版本通过安装插件,还可以作为CVS客户端使用。
对于小组合作开发,目前使用最多、也可以说是最成熟的解决方案是CVS,官方网站为http://www.cvshome.org,已经在绝大多数开放源码项目中得到了应用,发挥了巨大的成效。除命令行方式CVS客户端外,很多开发环境都提供插件可以与CVS集成,另外还有一些相当成熟的图形化客户端可选。一是WinCVS,在Windows下应用十分广泛;再有是TKCvs,http://www.twobarleycorns.net/tkcvs.html,这是一个跨平台的CVS图形化客户端,基于TK脚本语言完成;最后是TortoiseCVS,http://www.tortoisecvs.org,与Windows的资源管理器结合很好,号称使用最方便、最容易学习的CVS客户端。具体的CVS使用可以到网上搜索一些关于CVS使用的书,说明至为详细。
但CVS应用深入后,会发现其中的一些缺点,比如不能记录目录的变化情况,不允许随便修改文件名称,不支持原子提交等。据说CVS的原设计者设计了CVS的替代品——SubVersion,官方网址http://subversion.tigris.org/,在尽量保持与CVS相似的界面下,经过重新设计弥补CVS的不足,如Debian等开放源码项目已经开始尝试使用SubVersion来管理项目代码。SubVersion的主要改进为:目录版本控制、原子提交、Meta-data描述信息管理、支持不同的网络传输协议、文本与二进制使用相同的管理方式、改进的分支和标记规则等。SubVersion在Windows下有一个很好的图形化客户端软件TortoiseSVN,与TortoiseCVS十分相似。Eclipse等开发工具也有插件能支持SubVersion。SubVersion同样有一本十分详尽的书籍,其繁体中文翻译版的地址为http://freebsd.sinica.edu.tw/~plasma/svnbook/。
我当前的想法是使用CS-RCS管理我个人的代码和文档,而实验室的小组开发打算使用SubVersion配合TortoiseSVN等管理小组代码。这样,简单的时候够简单,强大的时候也够强大,也有足够的成熟度。下一步就是尝试在小组内部进行培训了。
另外打算架设Bug跟踪系统,Bugzilla太过复杂,暂时打算使用Mantis(官方网站http://www.mantisbt.org/),这样与SubVersion配合就建立好基本的团队软件开发环境了。
一点补充:后来试用TortoiseSVN,发现这个软件提供了一个直接使用本地目录作为SubVersion文档库的方法,这样就可以跳过SubVersion服务器实现个人文件的版本管理了,强大且方便。这下,RCS也可以退休了。