Subversion 和 GNU Emacs
其实,从去年暑假就开始接触 SVN 了。当然,是很初步的尝试。真正开始用 SVN 进行版本控制,应该从这个学期开始算起。因为这个学期我们开始在实验室里实现具体的算法了,万一程序丢了,可不是闹着玩儿的!
架设 SVN+websvn 服务器也有一些周折,这个等回头再聊。这回先说一下怎么在GNU Emacs下使用SVN。
Emacs下排得上号的两个SVN绑定分别是psvn和vc-svn,分别和CVS的pcl-cvs和vc -cvs对应。由于SVN的发展历史相对CVS较短,各种奇门秘笈、说明文档就比CVS那边要缺乏一些,不过由于两边有很深的渊源(psvn VS pcl-cvs, vc-svn VS vc-cvs),所以很多文档和说明都是可以通用的。
两个绑定都很好,但是选择哪一个呢?总有一款适合你。因为他们两个的动机和思想并不相同。
- psvn由xsteve维护。作者的开发相当勤快,最近的一次改进就是在5天前!psvn提供了一个类似dired界面的buffer,你可以在里面进行查询(blame,status,diff)、签入(commit)、签出(upgrade)的操作。
psvn.el 在Debian中由subversion包提供。不过版本稍许有些老,今年4月,13841版。而最新的是12月,17921版。 - vc-svn 则是Emacs VC (Version Control)功能的一个后端,已经被包含在官方的发布版本中了。在vc-svn.el文件里,这样说,
;; This is preliminary support for Subversion (http://subversion.tigris.org/). ;; It started as `sed s/cvs/svn/ vc.cvs.el' (from version 1.56) ;; and hasn't been completely fixed since.
和psvn的积极开发相比,是不是让人感觉很灰心啊?
Emacs VC为各家版本控制系统提供了一个统一的界面。
正如你想的,Emacs还有vc-cvs,vc-rcs之类的后端存在,他们实现了Emacs VC的CVS和RCS支持。在我的GNU Emacs 22 里,只要一打开在SVN库里注册好的文件,Emacs就会自动开启vc-mode。和其他好用的mode一样,在vc-mode中也可以使用预定义的key-binding,完成各种操作。这些操作大多都以C-v开头。
不过有一点可以想见,为了VC接口的一致,vc-svn事实上提供的是各家版本控制系统功能的交集。因而vc-svn的功能就不如专门为svn撰写的psvn来得强大。
另外,VC也提供了类似dired的mode——C-x v d。
参考:Info->Emacs->Files->Version Control
