SVN安装配置技术文档
适合搭建subversion的人员查看。主要描述subversion定义,服务端的安装,部署,配置和使用说明。
一、文档控制
文档版本
文档名说明
文档主题
描述SVN定义,安装,部署,配置和使用说明。
外部条件
操作系统windows2003
客户端=Tortoise SVN 1.7.11
服务端=Visual SVN Server 1.7
操作系统CentOS 5.10
客户端=Tortoise SVN 1.7.11
服务端=subversion 1.6.6
二、基本信息
2.1、SVN定义
2.1.1、SVN概念
svn(subversion)是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。
svn服务器有2种运行方式:独立服务器和借助apache。2种方式各有利弊。
存储数据:svn存储版本数据也有2种方式:BDB和FSFS。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。
2.1.1、SVN版本
达芙妮安装Subversion版本为 1.6.6v版本
操作系统 CentOS 5.10
2.1.2、SVN结构
三、Subversion安装
2.1、Subvesion目录
安装目录:/usr/local/svn/bin
版本库目录:/home/svndata/repos
2.2、windwos下SVN安装
2.2.1、Visual SVN Server .1.7 安装
1、选择安装路径和数据库路径
2、SVN服务器名称和端口名称
3、身份证验证方式(SVN 或windows)
安装好以后再,Services.msc 注册一个服务
再开始程序中出现 VisualSvn Server Manager
界面显示
2.2.2、Tortoise SVN安装
1、选择安装路径,其他的默认安装
2.3、CentOS5.10下SVN安装
安装环境
操作系统:CentOS 5.10
Subversion: subversion-1.6.6
2.3.1、下载源码包
下载路径:/usr/local/src
[root@server ~]# cd /usr/local/src |
2.3.2、编译SVN
编译路径:/usr/local/src/subversion-1.6.6
首先检测系统有没有安装SSL:
[root@server subversion-1.6.6]# find / -name opensslv.h |
找不到,就执行如下命令进行安装:
[root@server subversion-1.6.6]# yum install openssl |
安装之后用find / -name opensslv.h命令找到opensslv.h所在的目录,即下列--with-openssl=后面的路径,编译:
[root@server subversion-1.6.6]# find / -name opensslv.h --prefix=/usr/local/svn --with-openssl=/usr/include/openssl --without-berkeley-db |
注:以svnserve方式运行,不加apache编译参数。以fsfs格式存储版本库,不编译berkeley-db。
此时编译报如下错误:
configure: WARNING: unrecognized options: --with-openssl |
说明没有安装gcc相关库,使用如下命令安装gcc后再编译:
[root@server subversion-1.6.6]# yum -y install gcc --prefix=/usr/local/svn --with-openssl=/usr/include/openssl --without-berkeley-db |
操作系统 apache 版本和subversion 需要apache版本不一致,我们安装svnseve独立服务器,无需apache
[root@serversubversion-1.6.6]# ./configure --prefix=/usr/local/svn
--with-openssl=/usr/include/openssl --without-berkeley-db --with-apxs=no
最后出现下面WARNING,直接忽略即可,因为不使用BDB存储。
configure: WARNING: we have configured without BDB filesystem support |
2.3.3、安装SVN
安装目录:
为避免出现以下错误
error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory |
先执行以下操作:
1)、编辑/etc/ld.so.conf文件,添加下面一行:
/usr/local/lib |
2)、保存后运行ldconfig:
/sbin/ldconfig |
注:ld.so.conf和ldconfig用于维护系统动态链接库。
安装
[root@server subversion-1.6.6]# make && make install |
安装完成,执行以下命令测试:
[root@server subversion-1.6.6]# /usr/local/svn/bin/svnserve --version 版权所有 (C) 2000-2009 CollabNet。 下列版本库后端(FS) 模块可用: * fs_fs : 模块与文本文件(FSFS)版本库一起工作。 |
为了方便下操作,下面将SVN的BIN添加到PATH,编辑/etc/profile,添加:
PATH=/usr/local/svn/bin:$PATH |
保存后,使其立即生效:
source /etc/profile |
2.3.4、配置SVN
建立版本库目录,可建多个:
[root@server ~]# mkdir -p /home/svndata/repos #建立版本库 |
编辑/home/svndata/repos/conf/svnserve.conf,内容修改为:
[general] |
注意:对用户配置文件的修改立即生效,不必重启svn。
在/usr/local/svn/下面新建conf目录,并在/usr/local/svn/conf内新建passwd.conf和authz.conf文件:
mkdir conf |
添加用户及密码:
[root@server ~]# useradd wll |
编辑/usr/local/svn/conf/passwd.conf,添加如下代码并保存:
[users] |
配置svn用户访问权限,编辑usr/local/svn/conf/authz.conf,添加如下代码并保存:
[groups] 注意: |
建立启动svn的用户:
[root@server ~]# useradd svn |
允许用户svn访问版本库:
[root@server ~]# chown -R svn:svn /home/svndata |
启动svn:
[root@server ~]# su - svn -c "svnserve -d --listen-port 9999 -r /home/svndata" 其中: |
2.3.5、设置开机启动
编辑/etc/rc.d/rc.local文件,加入如下启动命令:
/usr/local/svn/bin/svnserve -d --listen-port 9999 -r /home/svndata |
如果想停止svn,则使用如下命令:
killall svnserve |
如果想将svn作为服务,在/etc/rc.d/init.d/目录下新建名为svn的文件并设置权限为755,并添加如下代码:
#!/bin/bash |
2.3.6、TortoiseSVN连接SVN
安装TortoiseSVN,重启系统。启动TortoiseSVN并在地址栏中输入
svn://192.168.188.23:9999/repos 根据提示输入用户名与密码后就可以 |
四、SVN客户端使用
4.1、Tortoise SVN
4.1.0、导入源代码到SVN数据库
选择正确的Url,就可以导入到SVN数据库中。
其他的操作,请参考4.1、SVN客户端使用
4.1.1、取最新代码从SVN库
本地新建文件夹,右击点 SVN check out, 选择SVNserver Url和本地目录。
4.1.2、新增代码和目录到SVN库
1)TortoiseSVN ——> Add 标记要上传的代码
2)Commit 提交代码到SVN库
4.1.3、更新代码和目录到SVN库
1)update 标记要更新的代码
2)commit 标记代码更新到SVN库
4.1.4、删除代码和目录到SVN库
1)TortoiseSVN ——> Delete 标记要删除的代码
2)commit 标记代码从SVN库中删除
4.1.5、复制代码和目录( branches /tags/release)
从Trunk 复制代码和目录到新的branches / tags / release
Trunk: 代码主干
Branches: 代码分支
Tags: 标记代码完成一个关键阶段,工作完成一个里程碑
Release: 要发行的版本
以branches为例的步骤:
1)、新建branches分支:从本地Trunk Tortoise SVN——>branches /tags
2)、将分支更新到本地:在本地目录Commit
3)、本地分支代码更新到 服务Trunk上:
3.1)update/ commit; 3.2)TortoiseSVN ——> Merge
提示:本地和SVN服务器都存在trunk 和branch目录。
Tags/release:基本和branches操作一样。
五、SVN服务端管理
5.1、Window-Visual SVN Server
5.1.1、代码库Repository
5.1.2、用户 User
Create User 和Delete 和SetPassword…
5.1.3、组 Group
5.1.4、权限控制
如果用户添加好了以后可控制每一个文件夹或文件的权限。
添加用户或组 = add
权限设置 = Permissions
5.2、Linux- Svnserve
5.2.1、版本库(Repository)
1、创建版本库目录
mkdir -p /home/svndata/repos
2、创建版本库
/usr/local/svn/bin/svnadmin create/home/svndata/repos
Repos目录下,自动生成
conf:配置目录下的配置文件如下
svnserve.conf:指定了版本库访问用户和访问权限,设置了passwd和authz的目录。
passwd:用于配置repos版本库的访问用户,配置了用户和密码
authz :用于配置repos版本库的用户的访问目录的权限
3、利用客户端的来管理项目目录
在客户端新建下面目录,在daphne_repos(daphne_code)目录下,点commit上传的到服务的版本库
上传后,就可以在配置文件authz下设置不能目录的访问权限。(5.2.3)
4、删除已有的目录
删除本地目录,通过TortoiseSvn进行commit 选择删除,进行删除。
5.2.2、用户(User)
路径:home/svndata/repos/conf/passwd
编辑 passwd文件,来新增,修改,删除用户
整理用户列表导入到passwd文件中
5.2.3、新增组,设置权限(Authz)
路径:home/svndata/repos/conf/authz
编辑文件authz,新增,修改,删除组,设置目录访问权限
1,组设置
设置组,相同的组下用户给予同样的目录访问权限
2,目录读写权限
5.3、版本库管理
5.3.1、备份
5.3.2、还原
5.3.3、迁移
从Window迁移到linux上
将版本库导出成 dump 文件。
svnadmin dump myrepos > myrepos.dump
创建新版本库,将dump文件导入到版本库
$ svnadmin create /home/svn/repos/myrepos
$ svnadmin load /home/svn/repos/myrepos< myrepos.dump
Daphne_repos 迁移
Cd /usr/local/svn/bin/
svnadmin dump /home/svndata/repos>repos.dump
生成:repos.dump文件
迁入:
svnadmin load /home/svndata/repos_test/test< /usr/local/svn/bin/repos.dump
若提交 revision 18 表明成功
5.3.4、修复
5.3.5、压缩
六、Daphne SVN
6.1、SVN服务
1、IP地址:192.168.0.61 端口:8443
https://192.168.0.61:8443/svn/
服务器:
192.168.188.23
Root账号密码: 略
svn://192.168.188.23:9999/repos
6.1.1、启动服务
1、关闭服务
ps aux|grep svn
查找到进程
killall svnserve
2、启动服务
/usr/local/svn/bin/svnserve -d --listen-port 9999 -r /home/svndata
Service svn start
3、重启服务
Service svn restart
4、停止服务
Service svn stop
提示:要使用 service 需要先配置 svn的服务,参考 2.3.5、设置开机启动
七、Subversion 统计分析
7.1、统计用户KPI
八、Subversion异常
8.1、服务端异常
问题1:
客户端调用时,显示错误信息:svnserve.conf:12:Option expected
表明:svnserve.conf 文件配置异常
[general]
### These options control access to the repository forunauthenticated
### and authenticated users. Valid values are "write", "read",
### and "none". Thesample settings below are the defaults.
anon-access = read
auth-access = write
像上面的配置文件中,anon-access是顶行的,没问题,而auth-access就存在前置空格,会导致这个错误。
要避免出现这个错误,
问题2:
分析: 出现这个错误前,还出现下图,说明 svnserve.conf 中passwd-db 没有指定对。
原因:svnserve.conf 配置文件中 password-db 指定文件有问题
原来为 password-db = passwd.conf
现在改为如下:
思路:
1、 首先检查配置文件中svnserve.conf 是否需要用户验证由password-db 来指定
检查的用户
Password-db 文件
用户前面不能为空
九、参考资料
9.1、SVN安装和配置
参考:CentOS 5.10 svn安装,配置参考文档
http://zhumeng8337797.blog.163.com/blog/static/10076891420121189161805/?suggestedreading&wumii
http://zhumeng8337797.blog.163.com/blog/static/1007689142012122937128/?suggestedreading&wumii
linux+apache2+subversio1.4
http://blog.csdn.net/kryptonum/article/details/1523643