环境:CentOS 5.2

SVN安装所需软件:

apr

apr-util

sqlite

neon

subversion

系统在 默认情况下,是已经有apr-utilapr这两个包的,只不过他们的版本较低,只支持subversion 1.4

因此,具体可以看看:

# rpm -qa | grep apr
apr-util-1.2.7-7.el5_3.2
apr-util-1.2.7-7.el5_3.2
apr-1.2.7-11.el5_3.1
xorg-x11-drv-dynapro-1.1.0-2
apr-1.2.7-11.el5_3.1

subversion要求较高的版本,为此,我们需要删除系统自带的apr,apr-util这两个包!强行删掉!

# rpm -e --allmatches apr-util
error: Failed dependencies:
libaprutil-1.so.0()(64bit) is needed by (installed) subversion-1.4.2-4.el5_3.1.x86_64
libaprutil-1.so.0()(64bit) is needed by (installed) httpd-2.2.3-31.el5.CentOS.x86_64
libaprutil-1.so.0 is needed by (installed) subversion-1.4.2-4.el5_3.1.i386
# rpm -e --allmatches apr-util --nodeps
# rpm -e --allmatches apr --nodeps

如果你没有执行以上步骤,你在安装完成后,你会发现你执行相关的命令都会报错!

# svnadmin create /data/svn/repos1
svnadmin: symbol lookup error: /usr/local/svn/lib/libsvn_subr-1.so.0: undefined symbol: apr_atomic_xchgptr

# svnserve --version
svnserve: symbol lookup error: /usr/local/svn/lib/libsvn_subr-1.so.0: undefined symbol: apr_atomic_xchgptr

1.安装apr

tar zxvf apr-1.3.7.tar.gz

cd apr-1.3.7

./configure -prefix=/usr/local/apr

make

make install

2.安装apr-util

tar zxvf apr-util-1.3.8.tar.gz

cd apr-util-.1.3.8

./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/

make

make install

3.安装sqlite

tar zxvf sqlite-amalgamation-3.6.16.tar.gz

cd sqlite-3.6.16/

configure --prefix=/usr/local/sqlite

make

make install

tar -zxvf sqlite-amalgamation-3.6.22.tar.gz

cd subversion-1.6.12

mkdir sqlite-amalgamation

cp ../sqlite-3.6.22/sqlite3.c ./sqlite-amalgamation/

4.安装neon

不需要支持http协议可以略掉安装

tar zxvf neon-0.28.4.tar.gz

cd neon-0.28.4

./configure --prefix=/usr/local/neon --enable-shared

make

make install

5.安装subversion

tar zxvf subversion-1.7.10.tar

cd subversion-1.7.10
--configure --prefix=/opt/svn --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util--with-sqlite=/usr/local/sqlite --with-neon=/usr/local/neon
make
make install

svn服务器配置

1.测试安装是否成功:

svnserve --version 回车显示版本说明安装成功

[root@svn ~]# netstat –nat 查看默认TCP 3690端口是否监听.

2.创建svn版本库

[root@svn /]# mkdir -p /data/svndata

[root@svn /]# svnadmin create /opt/svndata/haibao_site winne为版本库名称

3.svnserve配置文件概述

svnserve.conf -- svn服务配置文件,在文件版本库目录的conf目录下。

passwd -- 用户名口令文件,该文件名在文件svnserve.conf中指定,缺省为同目录下的。

authz -- 权限配置文件,该文件名也在文件svnserve.conf中指定,缺省为同目录下的。

conf/svnserve.conf 文件

配置项分为以下5项:

anon-access 控制非鉴权用户访问版本库的权限。

auth-access 控制鉴权用户访问版本库的权限。

password-db 指定用户名口令文件名。

authz-db 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。

realm 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的

认证域相同,建议使用相同的用户名口令数据文件

:1.4版本anon-access = read 参数的bug .

anon-access = read

客户端Checkout(提取)的时候会有Not authorized to open root of edit operation"错误,改为none参数正常,

conf /Passwd 文件

user1 = user1

user2 = user2

conf /authz 文件

[groups] 设置组

admin = user1

[/] 根目录权限设置(就是“svndata”这个文件夹)

user1 = rw 用户1权限是:可读写

user2 = r 用户2权限是:可读,不可写

@admin = rw 设置组权限

[svndata:/winne] 设置根目录下“winne”文件夹的权限

user1 = rw

user2 = r

以此类推

3. 启动svn

建立启动svn的用户:

useradd svn

passwd svn

根据提示为用户svn设置密码允许用户svn访问版本库:

chown –R svn:svn /opt/svndata

chown –R svn:svn /opt/data启动svn

su - svn -c "svnserve -d --listen-port 9999 -r /opt/svndata"

其中:

su – svn表示以用户svn的身份启动svn

-d表示以daemon方式(后台运行)运行

--listen-port 9999表示使用9999端口,可以换成你需要的端口。但注意,使用1024以下的端口需要root

4,启动和停止SVN服务

启动SVN服务:

[root@svn ~]# svnserve -d -r /data/svndata/

-d表示后台运行

-r 指定根目录是 /data/svndata/

停止SVN服务:

ps -aux |grep svn

kill -9 进程杀掉

导入项目数据

$ svnadmin create /usr/local/svn/newrepos

$ svn import mytree file:///usr/local/svn/newrepos/some/project \

-m "Initial import"

Adding mytree/foo.c

Adding mytree/bar.c

Adding mytree/subdir

Adding mytree/subdir/quux.h

Committed revision 1.

svn import /var/www/html/hbtv file:///opt/svndata/haibao_site/hbtv -m "Initial import" 导入程序到源码库

svn info 查看当前源及相关信息

svn switch --relocate svn://shop.haibao.cn/haibao_site/hbtv/topic2 svn://10.15.186.163/haibao_site/hbtv

下载项目

svn checkout svn://10.15.186.163/haibao_site/hbtv

svn update -r 200 test.php 还原程序到某个版本 200为版本号

svn status -v path (显示文件和子目录状态)

如果之前装过低版本的SVN服务器,需要先卸载掉:

#rpm -qa | grep subversion

将老版本卸载掉:

#rpm -e -allmatches subversion