环境:CentOS 5.2
SVN安装所需软件:
apr
apr-util
sqlite
neon
subversion
系统在 默认情况下,是已经有apr-util及apr这两个包的,只不过他们的版本较低,只支持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