使用Subversion进行版本控制。
1.6版本
编译自SVN版本 38063
作者:
Ben Collins-Sussman
Brian W. Fitzpatrick
C. Michael Pilato
第一章 什么是Subversion
1. Subversion是否是适合你的工具
如果你是一个管理者想要使用Subversion,首先你必须要问自己,“Subversion是否是适合你的工具”,虽然Subversion是一个很炫的东西,但他并不是万能的。
如果你想要存取旧文件,抑或检查一段时间内文件的变化,那Subversion就是你想要的那个工具了。如果你正让一个团队进行协作开发,而且想监控成员对代码的更改,Subversion也再适合不过了。
Subversion让团队合作更加紧密,代码更加安全,当然我们还是需要一个小小的代价就是设置一个管理者,管理Subversion。
2. Subversion的历史
在千禧年开始不久,CollabNet公司开始寻找开发者来开发一个CVS的代替品。尽管CVS是CollabNet公司最早使用的版本控制工具,CollabNet一开始就发现了CVS存在的很多缺陷与不足带来的局限。CollabNet公司原本希望可以找到一个更好的版本控制工具,但是CVS逐渐成为了开源世界版本控制器的标准,因为那个时间找不到比CVS更好的开源版本控制工具了。于是CollabNet公司开始计划开发出一个新的版本控制工具,它既可以继承CVS的理念,而且比CVS更加完善。
2000年2月,他们联系了Karl Fogel,《 Open Source Development with CVS》 的作者,询问他是否愿意加入这个新项目中。这个时间,正好Karl Fogel正在与好友Jim Blandy讨论设计一个新的版本控制器。1995年,他们成立了Cyclic Software公司,这是一个提供CVS服务的公司,尽管他们后来卖掉了这个公司,但他们仍然使用很多CVS的工作,而CVS的缺陷让他们思考使用一个新的方法去管理他们的数据。于是他们开始思考一个新的版本控制器,最早就只有一个“Subversion”的名称而已。得到CollabNet的邀请后,Karl马上答应加入到这个项目中,而Jim因为加入RedHat,而无暇投入到Subversion项目中。于是CollabNet聘请了Karl 和 Ben Collins-Sussman,2000年5月,Subversion进入详细设计阶段。
Subversion开始后,受到了开源社区的关注,一开始Subversion像CVS一样有很多的缺陷,但一年后,Subversion已经开始逐渐成为CVS的替代品。
3. SVN架构图
Subversion, 安装后分为很多个组件. 下面简单介绍一个组件。不要强记这件组件,下面还会有很多篇章详细的介绍各组件的作用与使用方法。
svn
客户端命令行程序
svnversion
报告客户端状态的程序
svnlook
查看版本库的工具
svnadmin
新建,调整或修理版本库的工具
mod_dav_svn
Apache Http Server的插件
svnserve
SVN的服务器程序
svndumpfilter
过滤SVN垃圾的工具
svnsync
两个版本库之间映射的工具
第二章 SVN的基本概念
这一章,是对SVN一个简介,如果你刚刚使用版本控制器,这章对你来说就非常有用了。我们会从版本控制器的一般概念开始讲起,从而引申出Subversion背后的一些理念,同时讲一个SVN的基本使用。
尽管这里面的例子描述代码开发者怎样共享代码,但记得SVN的作用不仅于此。
1. 版本库(Repository)
Subversion 是一种信息共享的中心系统,而他的核心就是版本库。版本库是存储代码的地方,SVN的版本以树形文件的形式来存储信息,所有的客户端连接到版本库后,在权限允许的范围内浏览版本库中的内容,通过修改版本库,其修改的内容可以被其他客户端所共享。
下面是客户端与版本库交互的示意图:
到这里,我们发现这是一个典型的文件服务器,但版本库的作用并不只是这样。因为版本库可以保存文件更新的历史,比如我们可以询问版本库,“星期三的时候这个文件夹里面包含了哪些文件”。还有“谁修改了这些文件,做了哪些修改”等。这个功能同时也是版本库的核心。