一、系统自带或者yum安装subversion
1.1 subversion系统自带版本
CentOS5为1.4版本,CentOS6为1.6版本,若此版本符合要求可以直接使用。
[root@CentOS6 subversion-1.8.13]#rpm -qa |grep subversion
subversion-1.6.11-10.el6_5.x86_64
[root@CentOS5 ~]#rpm -qa |grep subv
subversion-1.4.2-4.el5_3.1
二、手动编译subversion
2.1 先安装APR和APRUTIL
否则编译时会报错:
The Apache Portable Runtime (APR) library cannot be found.
configure: WARNING: APRUTIL not found
cd apr-1.5.2
./configure --prefix=/usr/local/apr
make && make install && echo ok
#
cd apr-util-1.5.4
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
make && make install && echo ok
2.2 附加sqlite包,否则会报错
checking sqlite library version (via pkg-config)… no
cd subversion-1.8.13
wget http://www.sqlite.org/sqlite-amalgamation-3071501.zip
unzip sqlite-amalgamation-3071501.zip
mv sqlite-amalgamation-3071501 sqlite-amalgamation
2.3 编译subversion
cd subversion-1.8.13
./configure --prefix=/usr/local/subversion --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/
make && make install && echo ok
三、SVN简单使用
3.1 启动SVN,创建repo
#创建svn主目录
mkdir -p /www/svnroot
#启动SVN程序
svnserve -d -r /www/svnroot
#创建repo
cd /www/svnroot
svnadmin create repo
3.2 修改配置文件
创建完repo后,我们发现生成的repo文件夹内有conf目录,里面有3个文件authz(权限),passwd(密码),svnserve.conf(配置)。
配置文件authz
[groups]
dev = user1,user2
#两个用户,都在dev组里你可以增加多个组
[repo:/] #这里是目录名字
@dev = rw #dev组赋予读写权限
配置文件passwd
[users]
user1 = 123456
user2 = 456789
配置文件svnserve.conf
[general]
anon-access = none # 不允许匿名用户
auth-access = write # 认证用户给予可写
password-db = passwd # passwd的认证方式
authz-db = authz # 使用这个authz 权限文件
配置完毕后,就可以使用了
svn co svn://192.168.1.222/repo
svn add file
svn up
svn info
svn commit -m "some fixes."
TIPS:
a. 当使用链接地址是svn://192.168.1.222/repos 这种方式时,表示采用了svnserve作为服务器,它是一种基于TCP/IP的访问方式,权限由SVN仓库的配置文件设置。
b. 当使用链接地址是http://192.168.1.222/repos 这种方式时,表示采用了Apache作为服务器,它是一种基于HTTP的访问方式,权限由Apache设置。
3.3 SVN Hooks (post-commit和pre-commit)
为了方便管理员控制提交的过程,SVN提供了hook机制。当特定的事件发生时,相应的hook会被调用。
最常用的是pre-commit和post-commit。
pre-commit可以对提交内容进行检查,例如限制上传rar文件,强制提交时必须加注释等。
post-commit可以在提交完毕后执行一些命令,例如ssh到服务器,对代码目录svn up,发送通知邮件等。
#cat /home/svn/vip.ipcpu.com/hooks/post-commit
#!/bin/sh
svn up /home/htdocs/vip.ipcpu.com/
四、整合Apache
4.1 安装apache
httpd-2.2.29
./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-dav --enable-so --enable-ssl --enable-deflate
make && make install && echo ok
4.2 重新编译subversion(指定apxs)
./configure --prefix=/usr/local/subversion --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --with-apxs=/usr/local/apache/bin/apxs
make && make install && echo ok
#
cp /usr/local/subversion/libexec/mod_* /usr/local/apache/modules/
4.3 配置apache
修改httpd.conf配置文件
#增加
LoadModule dav_svn_module /usr/local/apache/modules/mod_dav_svn.so
LoadModule authz_svn_module /usr/local/apache/modules/mod_authz_svn.so
#末尾追加
NameVirtualHost *:80
<VirtualHost *:80>
ServerName svn.ipcpu.com
<Location /ipcpusvn>
#Order Deny,Allow
#Deny from All
#Allow from 127.0.0.1 10.0.0.0/255.0.0.0
DAV svn
SVNParentPath /home/svn
AuthType Basic
AuthName "hello!!"
AuthUserFile /home/svn/passwd
AuthzSVNAccessFile /home/svn/auth.conf
Require valid-user
</Location>
</VirtualHost>
4.4 配置SVN用户认证
在apache的配置中我们指定了/home/svn/passwd 作为密码文件,/home/svn/auth.conf为授权文件。
生成用户名和密码
htpasswd -b /home/svn/passwd USER PASSWORD
编写授权文件/home/svn/auth.conf
[login.ipcpu.com:/]
user01=rw
好了,接下来就可以使用HTTP方式访问SVN了。
五、SVN数据存储方式
在SVN中,版本库的数据存储有两种方式,一种是在 Berkeley DB数据库中存放数据;另一种是使用普通文件,采用自定义的格式来储存,称为 FSFS。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。
默认使用的存储方式也是FSFS方式。
六、参考文章
http://www.361way.com/subversion-apache-ldap/2863.html
http://blog.chinaunix.net/uid-26215986-id-3395374.html
http://www.cnblogs.com/see7di/archive/2013/08/03/3234048.html
http://blog.csdn.net/deepwishly/article/details/5366757
http://blog.x8128.com/svn1_6_fedora_20/
转载请注明:IPCPU-网络之路 » SVN专题-SVN安装