几天前就知道了 Emacs 的代码仓库已经从 CVS 转到 BZR 上来了,但一直没有多像。今天突然想看看 BZR 里的 trunk 版本和 CVS 里的有没有什么不同。因为我目前用的 Emacs 是用的 CVS 里的代码编译的,不知道在 BZR 中的 Emacs 代码有什么更新呢?
我第一次听说 BZR 是在 2007 年下旬,中间一直没有实际 checkout 过 BZR 仓库里的代码。我平时自己的代码喜欢用 Git,与别人合作用的多数是 SVN,这两样基本上已经足够满足我的要求,也足够流行,所以我一直没有花时间去弄清楚 BZR 相对于这两个来说有什么不同。由于平时很少 checkout BZR 仓库里的代码,所以我连 BZR 客户端都没有装。今天想去下 Emacs 的代码,之后现下了一个客户端。
我首先下载的是 BZR 的源代码,需要用 Python 安装。不过我看里面有直接可以运行的可执行文件,就先用它试试。不知道是不是 Emacs 的 savannah 仓库的连接速度慢,还是 BZR 本身就慢,代码一直在下载中。说它奇怪是我看到下载的目录里面只有一个 .bzr
文件夹,而代码却不曾看见。我才应该是被放到什么地方缓存起来了吧。后来突然本子的风扇开始转了起来,我看了一下果然是 BZR 的这个 Python 进程的 CPU 使用百分比已经高了,由于正在上课,所以我只好杀死了这个进程。
中午的时候,我下载了 pkg 安装包,直接安装了二进制的 BZR,主要是想确保万无一失。于是又一次运行了 checkout 命令。当中经过了漫长的等待,终于风扇又开始转了。我这是查看了一下本地目录,还是一个文件没有。我猜是不是就在最后会把所有的缓冲的代码复制到本地目录里去啊。过了一会程序就运行完毕,果然文件都在本地目录里面,风扇自然也就不转了。看来我的猜测是正确的。
对于 BZR 的这种方式,我觉得不是很好。首先是界面太不友好了,命令行只提示了下载速度,而进度什么的都没有告诉。SVN 等工具会明确的显式正在下载的文件,这样下载是否正常也就一目了然了。而 BZR 的这种方式,在 checkout 像 Emacs 这种规模的代码时,就会让人觉得非常奇怪,也不知道下载是否顺利。而且在最后也会引起 CPU 使用过高的情况。