为什么要写呢?因为除了 Subversion Book 的中译本以外,很少找到关于 Subversion 的中文资讯。虽然欧礼莱的红豆书写得不错,但是给想快速上手的人,我觉得内容有点太长了。既然没事好干,那就动动手敲敲键盘吧。
本段主要给没接触过版本控制系统的人看。大家尝试过合作编程没有?例如 group project (小组专案),或者一队人一起维护网站系统?你们是不是也会有以下的情况:当 A 在改一个档案的时候,B 决不能动手,要不然 B 上载到 FTP 后可能会把 A 的刚新盖掉,那时候 A 便欲哭无泪了。有些较先进的系统可以让管理员锁住档案,只让一个人同时可以写入档案。
基本上解决以上那种“痛苦”的后果,但是如果那个档案同时有两个问题,要分别由 A 和 B 同时作出改动,那么较后取得修改权的 B 也就只有自叹倒楣,因为他之前写在旧档案的改动便要人手逐项逐项搬到由 A 上载的新档案去。便是有档案合并软件如 WinMerge 的帮助,“下载,人手比对再上载”这连串动作也挺麻烦的,莫论三个人甚至十数人对同一个档案作出改动了。
图片解说,从红豆书处连过来的。所以有人发明了版本控制系统。版本控制最大的特色是:系统会知道同名字的档案哪个较新,哪个较旧。例如,A 今天改动了档案一下并存到系统里。B 事前并不知道 A 改过了东西,第二天尝试把从旧版改过来的档案存到系统里去。但是,版本管理系统当然知道 B 的档案是从旧版改过来的,当然没有 A 的改动啦。所以,系统会告诉 B,请他先更新一下自己的档案,好让 B 下次的更新不会把 A 的更新盖掉(当然,就算盖掉也只是最新的版本,A 的更新还是会被储到系统的。现在,只要 B 再上载一次,只要系统内没有更新的版本,整个程序便算大功告成。
回正题。Subversion 的指令真的真的很简单,不过如果你不喜欢使用指令行,那么还有不少免费的 GUI,包括:
当然 Subversion 本身的命令行程式也是跨平台的,而且安装方便,Windows 上绝不用编译(安装程式执行档),Linux 也只是平常安装的步骤而已。
安装以后,有几个指令一定要知道的:
update (svn update) – 把本机的工作复本更新至仓库上的最新版本,而自己在工作复本上作的改动不会遗失。
revert (svn revert) – 即把自己在工作复本上作的改动抺除,把档案还原至最后一次更新时仓库上的版本。
diff (svn diff) – 检查变更,通常是检查手头上工作复本和于仓库中最新版本的不同。
blame/annotate (svn blame) – 检查档案里每一行最后更新的版本,以及作者(例如第一行是第五版由 A 更新的,而第二行则是由 B 于第二版更新的)
简单吗?其实 Subversion 的功能强大,不可能那么快学完。但是,基本功能很容易学会,而且连接方法简单,难怪会取代老一套的系统 CVS。