Subversion 是一个自由/开源的版本控制系统。也就是说,在Subversion管理下,文件和目录可以超越时空。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。于是我们就可以籍此将数据回复到以前的版本,并可以查看数据的更改细节。正因为如此,许多人将版本控制系统当作一种神奇的“时间机器”。
Subversion 的版本库可以通过网络访问,从而使用户可以在不同的电脑上进行操作。从某种程度上来说,允许用户在各自的空间里修改和管理同一组数据可以促进团队协作。因为修改不再是单线进行(单线进行也就是必须一个一个进行),开发进度会进展迅速。此外,由于所有的工作都已版本化,也就不必担心由于错误的更改而影响软件质量—如果出现不正确的更改,只要撤销那一次更改操作即可。
某些版本控制系统本身也是软件配置管理(SCM)系统,这种系统经过精巧的设计,专门用来管理源代码树,并且具备许多与软件开发有关的特性—比如,对编程语言的支持,或者提供程序构建工具。不过Subversion并不是这样的系统。它是一个通用系统,可以管理任何类型的文件集。对你来说,这些文件这可能是源程序—而对别人,则可能是一个货物清单或者是数字电影。
下载
官方下载:
- 服务器和程序下载 : http://subversion.tigris.org/getting.html#binary-packages
- Windows常用客户端TortoiseSVN:http://tortoisesvn.net/downloads
- AnkhSVN(Visual Studio插件):http://ankhsvn.open.collab.net/
- Subclipse(Eclipse插件):http://subclipse.tigris.org/
- SCPlugin(Mac OS x客户端):http://scplugin.tigris.org/
相关软件
客户端与插件
请见:http://subversion.tigris.org/links.zh.html实例研究
Martin Fowler使用SVN
一两年前,我工作生涯的一个重要方面发生了变化,那之前我一直只在一台电脑上工作(更确切地说是只用一块硬盘),所有工作文件都保存在我的笔记本硬盘里。如果我要用另外一台桌面电脑,就通过文件共享操纵那些文件。
自从去年我买了PowerBook事情就变了,现在我经常转战于三台机器:Mac PowerBook、Windows笔记本、Ubuntu桌面。
这就意味着我得保持多台机器上的东西都是最新的——至少我的工作文件都要保持最新。有了多台桌面电脑,我主要的email服务从POP转到了IMAP,这给我带来巨大的便利——尽管它有时“打打隔”,但我敢说IMAP在我的多台机器上跑得很好(我用Thunderbird做客户端)。
我大部分工作文件都被Subversion管理起来了,每当切换机器时我就提交(commit)工作目录,再到新机器上更新(update)。一切都同步得好好的,还全面享受了版本管理服务。
不过,也有一些东西同步起来没我想要的那么方便。地址簿就很难直接同步,Thunderbird总固执地把它们放到一个特定的地方, Subversion检查不到。更倒霉的是地址簿是二进制文件,难以合并(merge),这很烦人,但Thunderbird用文本文件来处理 email,这一点儿挺招人喜欢的,当IMAP打嗝时我也不难处理。另外,与PDA同步也很难缠,最后我还是找到个不赖的办法把所有联系人和日程表信息在三台机器上都同步好了。再者就是news聚合工具,它们之间可以通过OPML共享feeds(至少理论上如此),但不能记录下哪些我读过了哪些还没读。
文件尽量采用文本格式,这样做好处很多。我所有写作都是用XML,要同步写的东西只需要一个文本编辑器。但图表就成问题了,我还没找到一个在所有平台上都能用的东西,不过,搭起多台桌面的一个好处是所有专用于一个系统的软件我也能用了。