技术开发 频道

版本控制系统简介RCS/CVS/Subversion

    更佳的二进制数据处理 

    CVS 虽然号称可以处理二进制的数据 (例如图形文件, Microsoft Word 档案), 但是需要使用者特别设定, 而使用者 常常忘记. 再加上 CVS 会主动更动档案内容, 如列尾符号与关键词展开的功能, 以至于常常在需要将档案回复至过去的状况时, 才发现档案变得无法读取了. 再者, CVS 的档案内容差异算法几乎无法处理二进制档案, 以致于在储存档案上,
需要耗费大量的空间.

    Subversion 对上述问题的处理方法有二. 首先, 它不主动更动档案内容, 除非使用者加上这样的设定. 再者, 它使用可适用于文字与二进制数据的内容差异算法, 在档案储存上, 文字与二进制数据都具有相同的优势. 现在, 不只是文字数据适合置于版本控制系统中, 连二进制数据也可以很方便地放进来.

    高效率的分支与标记

    我们可以对已纳入版本控制系统的档案进行标记, 也就是赋与它们一个易记的文字, 日后便可以利用这个易记的文字, 将这些档案回复到某个特定的状态. 但是 CVS 必须对每一个档案加上这样的标记, 档案愈多, 耗时愈久.

    在 Subversion 系统, 标记是以目录的副本的方式建立的, 而副本是以类似链接的方式来建立. 也就是说, 不管牵涉的目录与档案有多少, 它所花费的时间都是固定的, 不会因为档案愈多而耗时愈久.

    CVS 最为人所垢病的缺点, 就是它的分支功能相当难以使用. 但是在实际上运用时, 分支功能可以为使用人员增加不少便利. 像是可以藉由使用分支, 将程序代码隔离开来, 让发展人员可以进行大规模更动的同时, 还能让维护人员进行维护. 而 Subversion 的分支, 亦是以目录的副本来实作的, 在观念上更容易学习, 使用起来也更方便.

    Subversion 的缺点

    但是 Subversion 亦不全然没有缺点, 它毕章还是一个刚开始发展的系统, 仍然存在一些不易使用的地方.

    档案保留

    我们无法取得 Subversion 档案的独占编辑权. 这是因为 Subversion 的工作模式, 是让各个工作的人取得工作复本, 各自编辑后, 再于送交时进行合并. 不过有的时候, 我们还是得要先取得档案的独占编辑权, 像是在编辑图形文件. 此时, 由一个人统一对某个档案进行编辑, 要比事后合并要简单地多了.

    合并点

    当一个项目开始产生分支时, 常常我们得先将目前分支的更动合并至主发展线, 这些被合并的更动, 就称为合并点. Subversion 并不会记住分支已经采用了哪些合并点, 也就是说, 如果在合并更动之后, 在合并的地方又有了更动, 日后当分支发展完毕, 整个分支的更动需要合并至主发展线时, 由于系统不会记得已采用了哪些更动, 而已合并的地方又更动过, 就会造成同一个更动被合并两次, 此时后来的更动几乎可以肯定会造成档案的冲突, 必须由使用者进行排解. 如果系统能够记得合并点的话, 已采用的合并点就毋需再采用, 也就可以减少使用者必须手动进行冲突排解的次数.

    档案版本

    在 Subversion 中, 版本号码是整个系统共享的. 这个意思就是说, 如果一个项目的档案因修改而有版号的更动, 那么所有档案的版号都会跟着更动. 这对由 CVS 移转过来的使用者是最难以接受的, 需要花一点时间习惯.

    但是, 在这种全域版号下, 我们无法很简单地回答这样的问题: 某个档案的第一个版本长什么样? 在目前最新版的前两个版本作了什么更动? 你知道, 有些时候, 我们就是需要像这样的功能.

    I18N, L10N

    虽然 Subversion 本身架构支持 Unicode, 不过使用者界面还是使用纯英文的环境. 对于多国语言的支持仍有一段路途要走.

    结语

    以上简单介绍了 Subversion 与 CVS 的优缺点评比. 虽然 Subversion 才开始发展三年, 直到今年才进入 1.0 版, 但是它所提供的便利性与功能性, 已经凌驾于 CVS 之上. 目前尚有不足的功能, 在活跃的开发团队的手中, 必定能很快地加上去. 有兴趣的读者现在就赶快加入使用 Subversion 的行列吧!

    一个全新的版本控制系统,企图取代 CVS,提供了比 CVS 更佳的版本管理功能。

0
相关文章