在日常工作中subversion—SVN是一个极为常见且比较重要的一个软件,它可以实现文件的版本控制使得多人可以共同协作的一个工具,在Linux的系统中一般情款下都会有集成安装,当然有的时候没有装也可以通过配置好的yum源来快速安装部署,在此就简单的说一下。
[root@localhost ~]# yum -y install subversion
[root@localhost ~]# svnserve --version
这样subversion就安装完了,并且在查看版本时我们得知subversion版本和2种存储模式,分别是:fs_base和fs_fs,在这2中模式中各有优缺点,在官方给出的说明中有一个表格,如下:
特性Berkeley DBFSFS对操作中断的敏感 很敏感;系统崩溃或者权限问题会导致数据库“塞住”,需要定期进行恢复。 不敏感
可只读加载 不能 可以
存储平台无关 不能 可以
可从网络文件系统访问 不能 可以
版本库大小 稍大 稍小
扩展性:修订版本树数量 无限制 某些本地文件系统在处理单一目录包含上千个条目时会出现问题。
扩展性:文件较多的目录 较慢 较慢
检出最新代码的速度 较快 可以
大量提交的速度 较慢,但时间被分配在整个提交操作中 较快,但最后较长的延时可能会导致客户端操作超时
组访问权处理 对于用户的 umask 设置十分敏感,最好只由一个用户访问。 对 umask 设置不敏感
功能成熟时间 2001 年 2004 年
在安装好后,此时就需要新建一个文件夹用于存放SVN的版本数据,然后指定创建SVN的版本库及使用的存储模式,当然如果没有指定默认都是使用fs_fs模式
[root@localhost ~]# mkdir /data/svndata/
[root@localhost ~]# svnadmin create /data/svndata/
#或者svnadmin create --fs-type fsfs /data/svndata/,如果要使用fs_base,就svnadmin create --fs-type bdb /data/svndata/
在创建完成后就会在/data/svndata文件夹中生成相应的库及配置文件、文件夹,其中conf文件夹中有3个文件authz、passwd、svnserve.conf,其中authz目录权限控制文件,passwd是明文用户密码配置文件,svnserve.conf是SVN的设置配置文件。
在svnserve.conf配置文件中先要把以下几行的注释去掉,编辑修改
anon-access=none
#匿名访问的权限,可以是read,write,none,默认为read
auth-access=write
#使授权用户有写权限
password-db=passwd
#密码数据库的路径
authz-db=authz
#访问控制文件
realm=/data/svndata/
#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
启动就用svnserve中使用-d参数用demon启动,-r参数指定路径的启动就好,参数如下:
[root@localhost ~]# svnserve -d -r /data/svndata/
SVN默认监听端口是tcp的3690端口,在开启后要注意开启防火墙。如果是在svnserve.conf配置文件中有开启,当然如果没有使用sasl的话密码都是明文在passwd文件中的,如果是启用就可以根据实际把配置文件放在sql数据库中或者是其它加密文件中,当然在此就不做过多的说明,就以明文密码为例,其中authz的配置如下:
[groups]
harry_and_sally = harry,sally
#harry_and_sally组
[/foo]
harry = rw
#harry在版本库的/foo整个目录下可读可写
* = r
#/foo目录下整个都有用户可读
[/boo]
sally = r
#sally在/boo目录下整个可读
[/coo]
@harry_and_sally = rw
#harry_and_sally用户组在/coo目录下整个可读可写
这些配置文件在改好保存后立即生效,不需要重启SVN,平时访问svn时可以安装好SVN的客户端工具后URL用SVN://IP或域名来访问。
Ubuntu 14.04 下搭建SVN服务器 SVN://