Perforce 是一个功能比较强大(我没有仔细用过 ClearCase,所以不好说跟 ClearCase 比是什么情况 )的版本控制软件,而且是跨平台的,支持 Windows. *nix, Mac,连 cygwin 的版本都有一个。

以前一直用的是 cvs,因为 cvs 没有 change set 的概念,因此为了将来可以回卷某个修改,通常要在提交之前手动做一个 patch 出来存档。但是 cvs 又不支持原子提交,如果提交过程中有别人提交了某文件,会造成我提交该文件冲突,然后前面提交的都进去了,后面提交的都没进去,这时候做的 patch 就算废了,而且还没法再做。而且 cvs 对 binary 文件的处理一直都是个头疼的问题,一不小心就把二进制文件给当文本提交进去了,因为用 RCS 格式来存储二进制,如果文件大了,性能就非常差。此外,cvs 本身对权限的控制是相当差的。cvsnt 的权限控制有所加强,但是因为他还是一个 cvs 风格的东西,因此 cvs 的其他问题他并没有解决。

Subversion 最近非常的火,svn 是支持原子提交的,不过他的 bdb 后端稳定性比较差,经常需要修复一下,文件后端稳定性看起来还可以,但是是私有的二进制格式,无法像 cvs 一样,用 RCS 可以直接修改文件,甚至高兴了直接删除某个 revision。而且 subversion 的模块化太好了,依赖的各色东西一大堆。最后,就是缺一个比较好用的 Windows 客户端,TortoiseSVN 很多人(比如KCN) 用不惯。eSvn 功能弱,RapidSVN bug 多多。

ClearCase 据说是相当全能的版本控制软件,这个东西我没有正式用过,因此没有太多发言权,但是据说这个东西很肥很慢。

Perforce 这个东西可以说刚才那些比较讨厌的问题都解决了,每次提交的时候,会给出一个 changelist 号,对应于你这次提交的 patch,以后可以直接用这个 changelist 号来看 diff 或者回卷,Windows 客户端看起来也挺好用的样子。最让我高兴的是他的 server 一共就一个文件,client 也就一个文件,安装直接靠拷,运行直接命令行敲。算是绿色软件。存储的文件文本用 RCS 格式,二进制每个版本存一个文件,这样就算在 perforce 彻底跨掉的时候都可以把文件轻松倒出来。其他一些必备的维护功能,比如在线备份之类,都是内置的。

唯一不爽的就是 perforce 是个商业软件,卖的还不便宜,试用版支持两个用户和五个 client (大概对应于 ClearCase 里面的 view 概念),可以长期使用,如果是个人用来存自己的项目,倒是问题不大。