2011年(34)
分类: LINUX
2011-03-31 14:14:21
概述
SVN是一种版本控制工具,可供多人协作开发,将各个人不同的修改代码集成到一起。SVN的重要功能是版本回溯,不要小看这个功能,实际用起来才可以体会到其中的妙处,可谓"谁用谁知道"。
SVN 的版本控制模型是"拷贝-修改-合并"。在建立了版本库之后,工作之前应该先下载需要工作的文件(工作拷贝)到本地电脑上,可以放在某个文件夹中。然后对 工作拷贝进行修改,比如添加、修改、删除源代码等等。最后将修改之后的工作拷贝提交到版本库中,称为合并。在多人协作中也是同样的,只是最好不要两个人同 时修改同一个文件,否则会产生"冲突",虽然也可以解决,只是有些麻烦。
·拷贝:从SVN版本库获取工作拷贝的过程。将会把所有的工作文件放入一个文件夹中。
·工作拷贝:名词,从SVN版本库中得到的一份工作文件集合。工作拷贝中会包含.svn文件夹,其中记录了原始文件,当修改时也会有所发觉。工作时就是对工作拷贝进行修改。
·合并:将已经修改过的工作拷贝提交到SVN版本库的过程。
·SVN 版本库:用于存储工作拷贝文件集的仓库,对外提供一定的接口供SVN客户端使用。对外接口可以是文件系统、SVN服务、apache插件提供的SVN服务 等等。一定要区别SVN版本库和工作拷贝。SVN版本库是一个数据库,其中的内容不推荐访问,更不要改动,在这里一般也找不到你的工作文件。
建立版本库的过程
在使用SVN进行源码管理之前需要先建立SVN版本库。建立SVN版本库是相对比较简单的,可以用如下命令:
# svnadmin create foldername
其中foldername替换成你的文件夹名字。版本库是一个数据库,可用的数据库包括FS和BDB两种,推荐使用FS,当然也是默认的,会稳定一些。
建立版本库之后,需要确定一种版本库的访问接口。因为访问接口这个参数会直接存储到工作拷贝中,待之后提交时会使用,所以接口不要随便改变,很麻烦。可用的方式有文件系统、SVN服务和HTTP服务,推荐使用SVN服务。
如 果使用了文件系统,则以后移动版本库所在路径时会直接影响所有工作拷贝,很不方便,而初学者随着SVN知识的增加,有所改动是很正常的。HTTP服务则是 直接面对大型多用户服务器的,配置起来有一定的难度。SVN服务则可以看在本机运行,提供局域网或者互联网上的服务。推荐使用的方式就是在本机上建立 SVN版本库,然后接口路径写上"svn://localhost/projectname"。比如笔者经常行走于公司和家之间,一些个人兴趣的小程序放 在U盘上,所以就将SVN版本库放在U盘上。每次到一个地方用U盘里面的批处理文件开启SVN服务,下载工作拷贝并开始工作。修改完成后提交,随之删除本 地的工作拷贝。
SVN版本库的URL规则
·file:///
以路径方式访问文件系统上的SVN。可以用相对路径和绝对路径。例如Windows上的一个例子"file:///e:/svn/db1"。
·http://
通过Apache的WebDAV协议访问。略。
·https://
与http://方式相似,提供SSL链路加密。
·svn://
本文推荐方式,使用svnserve建立服务。例如"svn://localhost/db1"。
·svn+ssh://
与svn://相似,提供SSH封装
使用SVN服务
可以用已经安装的svnserve提供SVN服务,如下,启动一个叫做db1的版本库
# svnserve -d -r "e:/svnroot/db1"
这 样就可以通过"svn://localhost"来访问这个版本库了。但是一般来说,正开发的程序或者加上以往的版本库,正在使用的版本库可能不只一个, 所以推荐建立一个SVN版本库的版本库。将所有版本库都放在一个文件夹中,比如我就是建立一个叫做svnroot的文件夹,其中放了很多版本库。上述的命 令也可以改为:
# svnserve -d -r "e:/svnroot"
这样可以通过"svn://localhost/db1"来访问特定版本库。