snailshadow 标签: subversion,usvn
一. Subversion 简介
Subversion是一个自由,开源的版本控制系统。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。这样就可以籍此将数据恢复到以前的版本,并可以查看数据的更改细节。
二. 环境准备CentOS 6.8
1,操作系统内核版本
[[email protected] ~]# uname -r
2.6.32-642.el6.x86_64
2,关闭selinux
[[email protected] ~]# vim /etc/selinux/config
SELINUX=disabled
3,关闭防火墙
[[email protected] ~]#service iptables stop
[[email protected] ~]#chkconfig iptables off
4,配置yum源(这里使用163yum源和epelyum源)
[[email protected] ~]#wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo
[[email protected] ~]#rpm -ivh http://mirrors.yun-idc.com/epel//6/x86_64/epel-release-6-8.noarch.rpm
修改配置文件
#vim /etc/yum.repos.d/CentOS-Base.repo
:%s/$releasever/6/g
yum clean all
yum makecache
搞定!!!
三、安装
1. 安装所需软件
[[email protected] ~]#yum install subversion httpd mod_dav_svn php php-mysql mysql-server perl-DBI perl-DBD-mysql mysql-devel mod_auth_mysql
2,查看 subversion 是否安装成功
[[email protected] ~]#svnserve --version
svnserve,版本 1.6.11 (r934486)
------略
3,启动httpd、mysqld服务
[[email protected] ~]#service httpd start
[[email protected] ~]#service mysqld start
[[email protected] ~]#chkconfig httpd on
[[email protected] ~]#chkconfig mysqld on
[[email protected] ~]# chkconfig svnserve on
4,设置mysqld密码和访问权限
[[email protected] ~]#mysqladmin -u root password 123456
[[email protected] ~]#mysql -uroot –pcoship
mysql> grant all on *.* to ‘root‘@‘%‘ identified by 123456 WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
四.配置Usvn
1,从GitHub下载Usvn
[[email protected] ~]#wget https://github.com/usvn/usvn/archive/1.0.7.tar.gz
2,安装配置Usvn
[[email protected] ~]#tar -zxvf 1.0.7.tar.gz
[[email protected] ~]#mv usvn-1.0.7/ /var/www/html
[[email protected] ~]#chown -R apache:apache /var/www/html/usvn
3,配置Apache目录允许重写(默认已经配好)
vim /etc/httpd/conf/httpd.conf
文件最后加入
<Directory "/var/www/html/">
AllowOverride all ---此项需要修改,否则后面会报错
Order allow,deny
Allow from all
</Directory>
4,重启apache服务
[[email protected] ~]#service httpd restart
5,浏览器输入http://ip/usvn/public/install.php 开始安装
一直点击下一步,如果出现这个报错,就说明httpd.conf配置文件中,根目录的AllowOverride没有配置为yes
选择时区和语言:
设置svn根目录,我这里使用默认配置
创建版本库路径
[[email protected] ~]#mdkir /home/subversion/
创建密码文件和权限文件路径
[[email protected] ~]#mdkir /home/subversion/passwd
给目录授权
chown apache:apache –R /home/subversion/
配置数据库
创建管理员,其中密码必须8位以上(admin/1qaz2wsx)
最后一步将生成的配置,添加到httpd.conf文件结尾
重启httpd服务
[[email protected] ~]#service httpd restart
创建项目,用户组,用户(略)
客户端连接项目:http://10.80.0.161/usvn/public/svn/docs/ docs为项目名称
五.常见问题
1、安装到最后遇到一个头痛的问题,当目录出现中文时无法设置目录权限
解决方法:
- 设置系统编码:vim /etc/sysconfig/i18n 改成如下
LANG="zh_CN.UTF-8"
SYSFONT="latarcyrheb-sun16"
- 修改USVN语言环境:vim /var/www/html/usvn/app/bootstrap.php
在文件最前面加上
setlocale(LC_ALL, ‘zh_CN.UTF-8‘);
2、提交log不能为空
vim ${svn_dir}/hooks/pre-commit #!/bin/sh REPOS="$1" TXN="$2" # Make sure that the log message contains some text. SVNLOOK=/usr/bin/svnlook $SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" > /dev/null #|| exit 1 #commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1 LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c` if [ "$LOGMSG" -lt 10 ]; then echo -e "svn log cann‘t less than 10 character" 1>&2 exit 1 fi # All checks passed, so allow the commit. exit 0 chown apache:apache pre-commit chmod +x pre-commit