说明:
subversion(svn)是近年来崛起的版本管理工具,是cvs的接班人。svn有2种运行方式:独立服务器和借助apache。2种方式各有利弊。
svn存储版本数据也有2种方式:BDB和FSFS。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。
我这边编译安装的是:Subversion 1.6.20,具体可看官网:http://subversion.tigris.org/。最新的是1.7.8,但发现编译安装1.6.20的更快。1.7.8还需要另外编译安装apr,apr-util,yum带的版本太旧。
实现:
一).编译安装sbuversion
1.获取并解压subversion,有两个安装包:subversion-1.6.20.tar.gz,subversion-deps-1.6.20.tar.gz
# cd /usr/local/src # wget http://subversion.tigris.org/downloads/subversion-1.6.20.tar.gz //下载subversion源文件 subversion-1.6.20.tar.gz # wget http://subversion.tigris.org/downloads/subversion-deps-1.6.20.tar.gz //下载subversion依赖文件 subversion-deps-1.6.20.tar.gz # tar zxvf subversion-1.6.20.tar.gz # tar zxvf subversion-deps-1.6.20.tar.gz //subversion,subversion-deps这两个文件解压到相同文件夹
2.编译,安装
# cd subversion-1.6.20 # ./configure --prefix=/usr/local/subversion # make && make install
3.测试安装是否成功
[root@solar svn]# /usr/local/subversion/bin/svnserve --version svnserve, version 1.6.20 (r1426281) compiled Mar 19 2013, 13:15:33
二).做到这里svn基本就安装好了,下面我们通过配置svn,来说明其用法。
1.建立版本库目录(这个请和安装目录区分开,以下讲的是版本库)
# mkdir -p /home/svn/repos1
2.建立svn版本库
# /usr/local/subversion/bin/svnadmin create /home/svn/repos1 //执行此命令后svn自动在repos目录下添加必须的配置文件。 # ls /home/svn/repos1 conf db format hooks locks README.txt //注意:版本库不同于一般的文件夹, 直接在操作系统上新建文件无法被SVN识别, 必须使用import等命令将文件导入版本库.此为svn内部指令,create用于新建版本库。请使用svn help查看详细说明。
3.修改版本库配置文件
# vim /home/svn/repos1/conf/svnserve.conf 各参数功能在配置文件的注释中有说明, 修改配置为如下: [general] anon-access = none # 使非授权用户无法访问 auth-access = write # 使授权用户有写权限 password-db = /home/svn/passwd # 指明密码文件路径 authz-db = /home/svn/authz # 访问控制文件,限制用户对哪些目录有读写权限 realm = repos1 # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。 //其它采用默认配置. 各语句都必须顶格写, 左侧不能留空格, 否则会出错. //指令简介:这是svn配置文件的格式,请按照以上格式书写。
4.配置用户
# vim /home/svn/passwd //插入如下内容 [users] solar = 123456 test = 123456 //可以添加多用户,用户名密码同一行。
5.配置权限
# vim /home/svn/authz //插入以下内容 [/] solar = rw test = r //列出对各用户的授权。包括只读r,读写rw。没有列出的用户,则不允许访问。还可以对用户分组,具体请参考svn手册
6.启动svn 服务
# /usr/local/subversion/bin/svnserve -d -r /home/svn/repos1 //此指令用于启动svn服务,-d指明以守护模式运行,svn自动在3690端口监听。3690是默认端口,可以使用“--listen-port=”或者“--listen-host=”来指定其它端口。-r选项用来指定svn服务的根目录,这样用户就可以使用相对路径访问,而不用提供完整路径。
7.检查端口
# netstat -ntlp|grep 3690 tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 15087/svnserve //到此svn搭建配置完毕,可以在客户端进行连接使用。
8.测试
附录:
附录1. 若出现authz failed,请检查/home/svn/repos1/conf/svnserve.conf中password-db,authz-db路径位置是否正确!!