SVN 简介
一、SVN
SVN(Subversion),是一个开放源代码的集中式的版本控制工具,设计目的在于取代 CVS,采用了分支管理系统方式,便于多人共同开发同一个项目,使用共同的资源。SVN 和 CVS 有一个共同的特点,那就是采用了 C/S 模式(客户端/服务器端模式),造成了最大的缺点就是过分依赖于网络,离不开网络。
为什么会出现版本控制系统?
多人开发共同一个项目时,会出现两人以上编写修改同一个功能点或者説是同一个业务需求点,发生互相之间的代码覆盖,爲了解决这一个衝突的问题,才会出现了版本控制工具,衹有版本一致了,才可提交代码。
为什么目的在于取代 CVS?
通俗简单的说,CVS 管理文件混乱,已丢失文件。
二、SVN 服务器
从 2000 年 the Subversion project 项目建立至今,出现了许多的公司自己开发的 SVN 服务器产品(Apache Subversion、VisualSVN)。因此,对于使用哪家公司的产品,根据自身的需要选择。
其中需要注意的是,对于各个不同的 SVN 服务器安装,若工具自动添加可执行命令行工具到环境变量 path 变量上,则忽略安装目录;若没有自动添加,则需要用户记录安装目录,并添加可执行命令的路径(D:\VisualSVN Server\bin)至 path 变量中。
安装完成后,则可以进行服务器的使用。
1、为开发项目创建原代码库目录即仓库目录(mkdir /usr/repository)
2、创建服务器仓库(svnadmin create /usr/repository),创建完成后,生成相应文件
3、在 conf 目录下的三个文件(svnserve.conf、passwd、authz)配置可用的用户名和密码信息
3.1、修改 svnserve.conf 文件,将以下带有单“#”符号去掉,该文件主要目的在于打开密码文件和权限文件的使用,“#”是否需要去掉,应查看“#”后的内容进行判断,必须非常小心。
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
realm = My First Repository
3.2、修改 passwd 文件,配置可用的用户名和密码。
fuys = fuys0822
3.3、修改 authz 文件,注意配置顺序问题,顺序错误导致无法进行正常的授权,会影响 svn 服务器使用。
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
[/]
fuys = rw
# [/foo/bar]
# harry = rw
# &joe = r
# * =
fuys = rw
* =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
* = r
4、配置完成之后,即可以啓动使用服务器。
svnserve -d -r /usr/repository
5、测试 svn 服务器是否可以使用
可以通过直接客户端的查看内容功能,输入配置的 svn 服务器 URL 地址(svn://ip)进行访问,如果可以访问,则 svn 服务器可用,反之。
三、SVN 客户端
SVN 客户端有两种使用方式
(1)直接客户端(TortoiseSVN),相当于文件上传、修改、添加、删除等一系列操作的工具,对于该方式,可以通过网络搜索到直接客户端的使用方法,使用方式非常简单,在此不赘述。对于访问文件的地址(URL),需要注意,本地建立的 SVN 服务器,访问文件的协议为 file(地址即爲 file:///E:/svn)
(2)以插件的方式附加在其他软件工具(eclipse)上使用,svn 插件可以通过网络下载,随后再导入软件工具中。这里没有过多的阐述安装和使用信息,是因爲这些内容是基础,头脑中就应该非常清楚。同时,网络有许多详细的阐述,故不再赘述。
客户端提交到服务器上的文件是如何存储的?
SVN 服务器版本库存储文件有两种格式,一种为 FSFS,一种为 BDB,文件从客户端上传到服务器上后,不再以原有的文件格式存储,而是变爲 SVN 自定义的格式压缩存储在服务器版本库中。
如果服务器存储文件的格式为 FSFS 格式,则这些数据存放在版本库的 db 目录下,该目录下的 revs 和 revprops 文件夹分别存放著每次提交的差异数据和日志信息。
评论