svn简介:

svn(subversion)是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。
运行方式:
svn服务器有2种运行方式:独立服务器和借助apache。2种方式各有利弊,用户自行选择。
存储方式:
svn存储版本数据也有2种方式:BDB(一种事务安全型表类型)和FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。
下载地址:
服务端:http://subversion.tigris.org/downloads/subversion-1.6.6.tar.gz
        http://subversion.tigris.org/downloads/subversion-deps-1.6.6.tar.gz
客户端:http://tortoisesvn.net/downloads.html
 
一、安装过程:
现在配置独立服务器运行方式,使用FSFS存储方式。
注:在编译安装之前要先安装openssl和openssl-devel,否则以下错误
checking openssl/opensslv.h usability... no
checking openssl/opensslv.h presence... no
checking for openssl/opensslv.h... no
configure: error: We require OpenSSL; try --with-openssl
configure failed for serf
解决:yum -y install openssl openssl-devel 或在编译时不包含ssl(未测试)
 
1.编译安装
  1. [root@svn ~]# tar zxvf subversion-1.6.6.tar.gz 
  2. [root@svn ~]# tar zxvf subversion-deps-1.6.6.tar.gz 
  3. [root@svn ~]# cd subversion-1.6.6 
  4. [root@svn subversion-1.6.6]# 
  5. ./configure --prefix=/usr/local/svn --with-openssl=/usr/include/openssl --without-berkeley-db 
  6. [root@svn subversion-1.6.6]# make && make install 
#--without-berkeley-db,以fsfs格式存储版本库,不编译berkeley-db
2.安装完成后,可通过以下命令测试:
  1. [root@svn ~]# /usr/local/svn/bin/svnserve --version svnserve, version 1.6.6 (r40053) compiled Feb 21 2012, 14:14:57 Copyright (C) 2000-2009 CollabNet. Subversion is open source software, see http://subversion.tigris.org/ This product includes software developed by CollabNet (http://www.Collab.Net/). The following repository back-end (FS) modules are available: * fs_fs : Module for working with a plain file (FSFS) repository.
以上信息可以看到svn的版本,编译时间以及是以FSFS存储方式。
二、配置svn.
1.创建svn版本库目录,并修改svnserve.conf 来控制访问权限
  1. [root@svn ~]# mkdir -p /data/svn            #创建svn版本库目录 
  2. [root@svn ~]# /usr/local/svn/bin/svnadmin create /data/svn/repos  #创建版本库 
编辑/data/svn/repos/conf/svnserve.conf
  1. [root@svn ~]# vim /data/svn/repos/conf/svnserve.conf 
  2. [general] 
  3. anon-access = none                  #非授权用户不允许访问 
  4. auth-access = write                 #授权用户允许所有操作 
  5. password-db = /usr/local/svn/conf/passwd.conf       #密码数据库位置 
  6. authz-db = /usr/local/svn/conf/authz.conf       #授权文件位置 
  7. realm = repos                       #设置仓库的授权域 
在/usr/local/svn/目录新建conf目录,并在目录里分别建立passwd.conf、authz.conf文件
  1. [root@svn svn]# mkdir conf && cd conf 
  2. [root@svn conf]# touch passwd.conf;touch authz.conf 
建立登录的用户
  1. [root@svn ~]# useradd test 
  2. [root@svn ~]# passwd test 

密码为:test
在建立密码数据库
  1. [root@svn conf]# vim passwd.conf 
  2. [users] 
  3. testtest = test 
密码数据库的格式与本文件相似。它只有一个段落 ``users'';段落中的每个变量是一个用户名,每个值是一个密码。
 
在/usr/local/svn/conf/authz.conf文件中定义访问用户的权限
  1. [root@svn conf]# vim authz.conf 
  2. [groups] 
  3. admin = test 
  4. [/] 
  5. @admin = rw 
以上表示用户 test在管理组,管理组对/目录(repos项目仓库)有读写权限
用户组格式:[groups]
<用户组名>=<用户1>,<用户2>
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名>=<权限>
<用户名>=<权限>
 
建立启用svn的用户并允许访问版本库
  1. [root@svn ~]# useradd  -s /sbin/nologin svn 
  2. [root@svn ~]# chown -R svn:svn /data/svn/ 
启动svn:
[root@svn ~]# /usr/local/svn/bin/svnserve -d --listen-port 3690 -r /data/svn
 
-d 表示后台运行
-r 设置svn启动后的根目录
Svn默认会开启3690的端口,如要自定义可更参数--listen-port 后面的端口
 
查看端口
[root@svn ~]# netstat -antp | grep svn
tcp        0      0 :::3690                     :::*                        LISTEN      25029/svnserve
 
2.配置开机启动,有以下两种方法:
  1. echo  "/usr/local/svn/bin/svnserve -d --listen-port 3690 -r /data/svn" >>/etc/rc.d/rc.local 
使用这个命令,将启动命令写到开机会执行的/etc/rc.d/rc.local文件中。
 
方法二:
也可以将svn服务做为服务,在/etc/init.d/ 目录下建立svn运行脚本,并授予可执行权限
  1. [root@svn ~]# vim /etc/init.d/svn     
  2. #!/bin/bash 
  3. # build this file in /etc/rc.d/init.d/svn 
  4. # chmod 755 /etc/rc.d/init.d/svn 
  5. # chkconfig: - 85 15 
  6. # description: svn server 
  7. SVN_HOME=/data/svn 
  8. if [ ! -f "/usr/local/svn/bin/svnserve" ] 
  9. then 
  10.     echo "svnserver startup: cannot start" 
  11.     exit 
  12. fi 
  13. case "$1" in 
  14.     start) 
  15.         echo "Starting svnserve..." 
  16.         /usr/local/svn/bin/svnserve -d --listen-port 3690 -r $SVN_HOME 
  17.         echo "Finished!" 
  18.         ;; 
  19.     stop) 
  20.         echo "Stoping svnserve..." 
  21.         killall svnserve 
  22.         echo "Finished!" 
  23.         ;; 
  24.     restart) 
  25.         $0 stop 
  26.         $0 start 
  27.         ;; 
  28.     *) 
  29.         echo "Usage: svn { start | stop | restart } " 
  30.         exit 1 
  31. esac 
  32. [root@svn ~]# chmod 755 /etc/init.d/svn 
  33. [root@svn ~]# chkconfig svn on 
  34. [root@svn ~]# /etc/init.d/svn start 
以上两种方法都可以在每次开机后,svn服务就会自动启动。个人偏向喜欢第二种方法,使用灵活。
3.关闭服务:
  1. [root@svn ~]# /etc/init.d/svn stop 
  2. Stoping svnserve... 
  3. Finished! 
三、客户端登录:
安装TortoiseSVN之后,在版本浏览器中或在“运行”里或是“我的电脑的”地址栏中输入svn的服务器地址,如我的:svn://192.168.209.130:9999/repos
之后使用刚才建立的用户test和密码进行登录

Linux下svn安装_svn

四、安装过程遇到的问题:
1.在客户端访问subversion版本库时出现这个错误:
/data/svn/repos/conf/svnserve.conf:12: Option expected
解决:检查配置后,发现原来是有前置空格的问题

Linux下svn安装_svn_02

2.安装TortoiseSVN之后默认是英文的界面,下载中文补丁安装失败,在Settings中语言选项中找不到中文简体的语言。
解决:使用主程序和语言包一致的版本进行安装。
 
3.根据网上提供的脚本把svn做为系统服务时,并不能使用chkconfig svn on 把服务添加到开机启动中
[root@svn ~]# chkconfig svn on    
service svn does not support chkconfig
解决:修改/etc/init.d/svn 文件增加以下两行
       # chkconfig: - 85 15
# description: svn server