简介
subversion(简称svn)是近年来崛起的版本管理软件系统,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。
Subversion是一个版本控制系统,相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上免费的版本控制服务多基于Subversion。
一、所需软件环境检查:
1.apr apr-util zlib
这几个软件请参阅“LAMP基础环境搭建”中的安装路径或安装方法。
2.还需要SQLite
SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
而sqlite的使用方案有两种:
方案一:可以只解压sqlite-amalgamation包,将解压文件拷贝到subversion解压后的源码安装目录中去。
官方解释:This
ZIP archive contains all C source code for SQLite 3.8.1 combined into a single
source
file.
译:这个zip文件是融合了SQLite
3.8.1所有C源代码的单一文件。
换句话说:它只是源文件,没有配置安装文件,所以不能用来完整安装。
方案二:安装sqlite-autoconf完整软件包,在编译subversion时加
--with-sqlite=/usr/local/sqlite/
(sqlite安装目录)
官方解释:A
tarball containing the amalgamation for SQLite 3.8.1 together with an configure
script and makefile for building it.
译:一个融合了SQLite
3.8.1源代码,并包含配置脚本configure及编译文件makefile的打包文件。
换句话说:这个源码包是可以按常规步骤编译安装的。
二、执行安装(两安装方案任选其一)
方案一:可以只解压sqlite-amalgamation包,将解压文件拷贝到subversion解压后的源码安装目录中去。
A.解压 sqlite-amalgamation 源码包
(本例采用方案一):
# unzip sqlite-amalgamation-3080100.zip
B.解压
subversion
软件包:
# tar -zxvf subversion-1.8.4.tar.gz
C.拷贝
sqlite-amalgamation 源码包到 subversion
解压包中,并更名为sqlite-amalgamation
注:假定sqlite包与subversion包是解压在同级目录的。
# cp -r ./sqlite-amalgamation-3080100 ./subversion-1.8.4/sqlite-amalgamation
D.进入subversion解压目录,配置编译
# cd
subversion-1.8.4
# ./configure --prefix=/usr/local/subversion/ --with-apr=/usr/local/apr-httpd/
--with-apr-util=/usr/local/apr-util-httpd/ --with-zlib=/usr/local/zlib/
--enable-maintainer-mode
#
make
# make install
方案二:安装sqlite-autoconf完整软件包,在编译subversion时加
--with-sqlite=/usr/local/sqlite/
(sqlite安装目录)
注:确认已安装了apr apr-util zlib sqlite
软件包(安装方法请参阅《LAMP基础环境搭建》、《sqlite数据库安装配置》文档)
# tar
-zxvf subversion-1.8.4.tar.gz && cd
subversion-1.8.4
# ./configure --prefix=/usr/local/subversion/ --with-apr=/usr/local/apr-httpd/
--with-apr-util=/usr/local/apr-util-httpd/ --with-zlib=/usr/local/zlib/
--with-sqlite=/usr/local/sqlite/
--enable-maintainer-mode
选项解析
--prefix=/usr/local/subversion/
指定subversion要安装的目录
--with-apr=/usr/local/apr-httpd/
指定apr对应安装目录
--with-apr-util=/usr/local/apr-util-httpd/
指定apr-util对应安装目录
--with-zlib=/usr/local/zlib/
指定zlib对应安装目录
--with-sqlite=/usr/local/sqlite/
指定sqlite对应安装目录
--enable-maintainer-mode
启用调试提醒模式
#
make
#
make install
三、测试是否安装成功(如果看到版本信息说明成功)
#
/usr/local/subversion/bin/svnserve --version
四、可以将SVN相关命令添加到环境变量搜索路径
# echo "#
添加subversion环境变量:" >> /etc/profile
# echo
"PATH=$PATH:/usr/local/subversion/bin" >>
/etc/profile
# export PATH
# source
/etc/profile
五、配置subversion
1.建立版本库总目录:
/opt/svndata(目录位置可以自定)
# mkdir -p
/opt/svndata 版本库总目录
2.在版本库目录中 创建第1个“项目版本库”命名为:martinZFsvn
;第2个为项目命名为:martinTP
# /usr/local/subversion/bin/svnadmin
create /opt/svndata/martinZFsvn //第1个项目
#
/usr/local/subversion/bin/svnadmin create
/opt/svndata/martinTP //第2个项目
注:版本库不同于一般的文件夹, 直接在操作系统上新建文件无法被SVN识别, 必须使用import命令将文件导入版本库。此为svn内部指令,create用于新建版本库。请使用svn help查看详细使用说明。
3.编辑新建的“项目版本库 martinZFsvn ”的配置文件 svnserve.conf
“项目版本库 martinZFsvn ”创建生成时,会在其目录下一同创建:conf db
...几个文件,conf为配置文件目录。
# vi
/opt/svndata/martinZFsvn/conf/svnserve.conf
参考约第19 20行,添加:
anon-access =
none # 设置非授权用户无法访问
auth-access =
write # 设置授权用户有写权限
参考约第29行,添加:
password-db =
passwd #
指定用于存放用户/密码的配置文件名(在conf目录中,也可以自己更名)
参考约第39行,添加:
authz-db =
authz #
指定用于存放权限控制的文件名(在conf目录中,也可以自己更名)
参考约第51行,添加:
realm =
realm_martinZFsvn #
认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
官方解释:指定了Repository的验证领域。如果两个Repository有相同的验证领域,那么它们应该有相同的密码数据库,反之亦然。默认的领域就是指向当前的Repository的路径,与服务器的Repository的根目录相关。
4.编辑用户/密码配置文件 passwd ,并添加用户
# vi
/opt/svndata/martinZFsvn/conf/passwd
在[users]里添加几个用户及对应密码,如:
[users]
martin1 =
12345
martin2 = 123456
grptest1 =
123
grptest2 = 456
5.编辑权限配置文件 authz ,对用户授权:
# vi
/opt/svndata/martinZFsvn/conf/authz
A.如果想对用户分组管理:
在组区块[groups]添加:
group1 =
grptest1,grptest2 # 比如组名为group1;多个组成员用逗号分割(如:grptest1,grptest2)
B.在最末尾添加:
[/]
[/]表示对项目的根目录设置权限
martin1 =
r
读
martin2 =
rw
读写
@group1 =
rw 读【对组授权要加 @】
注:只读r,写w;没有列出的用户没有任何权限,不允许访问;
C.也可单独对项目根下的某个目录设置权限:
[/db_config]
[/db_config]表示项目根目录下的“db_config”文件夹的设置权限
@group1 = r 读【对组授权要加
@】
注:“db_config”这个文件件怎么创建?这是在SVN服务器配置好之后,让一个权限很高的用户在客户端登录SVN,然后创建此目录。
通过上面配置达到目的:
A.martin1对根下所有目录有r权限;
B.martin2对根下所有目录有rw权限;
C.group1组成员对根下所有目录有rw权限,但对/db_config只有r权限;
六、启动svn服务
# /usr/local/subversion/bin/svnserve -d
-r /opt/svndata
选项解析:
--listen-port=3690 3690是默认端口,可以使用“--listen-port=3690”
来显式指定其它端口。
-d
指明以守护模式运行(后台运行),
-r
选项用来指定svn服务的根目录,这样用户就可以使用相对路径访问(svn://x.x.x.x/martinZFsvn),而不用提供完整路径(svn://x.x.x.x/opt/svndata/martinZFsvn)
/opt/svndata 是版本库目录(绝对路径)
查看状态:
# ps -le | grep
svnserve
# netstat -tunpl | grep svnserve
设置随系统自启动:
# echo "#
subversion随系统自启动:" >> /etc/rc.d/rc.local
# echo
"/usr/local/subversion/bin/svnserve -d -r /opt/svndata" >>
/etc/rc.d/rc.local
七、关闭svn服务
# killall svnserve
八、windows客户端连接
svn://你的IP地址/martinZFsvn
# 访问第1个项目
svn://你的IP地址/martinTP # 访问第2个项目