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.编译安装
- [root@svn ~]# tar zxvf subversion-1.6.6.tar.gz
- [root@svn ~]# tar zxvf subversion-deps-1.6.6.tar.gz
- [root@svn ~]# cd subversion-1.6.6
- [root@svn subversion-1.6.6]#
- ./configure --prefix=/usr/local/svn --with-openssl=/usr/include/openssl --without-berkeley-db
- [root@svn subversion-1.6.6]# make && make install
#--without-berkeley-db,以fsfs格式存储版本库,不编译berkeley-db
2.安装完成后,可通过以下命令测试:
- [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 来控制访问权限
- [root@svn ~]# mkdir -p /data/svn #创建svn版本库目录
- [root@svn ~]# /usr/local/svn/bin/svnadmin create /data/svn/repos #创建版本库
编辑/data/svn/repos/conf/svnserve.conf
- [root@svn ~]# vim /data/svn/repos/conf/svnserve.conf
- [general]
- anon-access = none #非授权用户不允许访问
- auth-access = write #授权用户允许所有操作
- password-db = /usr/local/svn/conf/passwd.conf #密码数据库位置
- authz-db = /usr/local/svn/conf/authz.conf #授权文件位置
- realm = repos #设置仓库的授权域
在/usr/local/svn/目录新建conf目录,并在目录里分别建立passwd.conf、authz.conf文件
- [root@svn svn]# mkdir conf && cd conf
- [root@svn conf]# touch passwd.conf;touch authz.conf
建立登录的用户
- [root@svn ~]# useradd test
- [root@svn ~]# passwd test
密码为:test
在建立密码数据库
- [root@svn conf]# vim passwd.conf
- [users]
- testtest = test
密码数据库的格式与本文件相似。它只有一个段落 ``users'';段落中的每个变量是一个用户名,每个值是一个密码。
在/usr/local/svn/conf/authz.conf文件中定义访问用户的权限
- [root@svn conf]# vim authz.conf
- [groups]
- admin = test
- [/]
- @admin = rw
以上表示用户 test在管理组,管理组对/目录(repos项目仓库)有读写权限
用户组格式:[groups]
<用户组名>=<用户1>,<用户2>
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名>=<权限>
<用户名>=<权限>
建立启用svn的用户并允许访问版本库
- [root@svn ~]# useradd -s /sbin/nologin svn
- [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.配置开机启动,有以下两种方法:
- 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运行脚本,并授予可执行权限
- [root@svn ~]# vim /etc/init.d/svn
- #!/bin/bash
- # build this file in /etc/rc.d/init.d/svn
- # chmod 755 /etc/rc.d/init.d/svn
- # chkconfig: - 85 15
- # description: svn server
- SVN_HOME=/data/svn
- if [ ! -f "/usr/local/svn/bin/svnserve" ]
- then
- echo "svnserver startup: cannot start"
- exit
- fi
- case "$1" in
- start)
- echo "Starting svnserve..."
- /usr/local/svn/bin/svnserve -d --listen-port 3690 -r $SVN_HOME
- echo "Finished!"
- ;;
- stop)
- echo "Stoping svnserve..."
- killall svnserve
- echo "Finished!"
- ;;
- restart)
- $0 stop
- $0 start
- ;;
- *)
- echo "Usage: svn { start | stop | restart } "
- exit 1
- esac
- [root@svn ~]# chmod 755 /etc/init.d/svn
- [root@svn ~]# chkconfig svn on
- [root@svn ~]# /etc/init.d/svn start
以上两种方法都可以在每次开机后,svn服务就会自动启动。个人偏向喜欢第二种方法,使用灵活。
3.关闭服务:
- [root@svn ~]# /etc/init.d/svn stop
- Stoping svnserve...
- Finished!
三、客户端登录:
安装TortoiseSVN之后,在版本浏览器中或在“运行”里或是“我的电脑的”地址栏中输入svn的服务器地址,如我的:svn://192.168.209.130:9999/repos
之后使用刚才建立的用户test和密码进行登录
四、安装过程遇到的问题:
1.在客户端访问subversion版本库时出现这个错误:
/data/svn/repos/conf/svnserve.conf:12: Option expected
解决:检查配置后,发现原来是有前置空格的问题
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
转载于:https://blog.51cto.com/liyaoyi/818854