Subversion是一個自由,開源的版本控制系統。Subversion將文件存放在中心版本庫裏。這個版本庫很像一個普通的文件服務器,不一樣的是,它能夠記錄每一次文件和目錄的修改狀況。這樣就能夠籍此將數據恢復到之前的版本,並能夠查看數據的更改細節。 php
1,操做系統內核版本html
[root@localhost ~]# uname -r
2.6.32-642.el6.x86_64mysql
2,關閉selinuxlinux
[root@localhost ~]# vim /etc/selinux/config git
SELINUX=disabled github
3,關閉防火牆 sql
[root@localhost ~]#service iptables stop 數據庫
[root@localhost ~]#chkconfig iptables off apache
4,配置yum源(這裏使用163yum源和epelyum源) bootstrap
[root@localhost ~]#wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo
[root@localhost ~]#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. 安裝所需軟件
[root@localhost ~]#yum install subversion httpd mod_dav_svn php php-mysql mysql-server perl-DBI perl-DBD-mysql mysql-devel mod_auth_mysql
2,查看 subversion 是否安裝成功
[root@localhost ~]#svnserve --version
svnserve,版本 1.6.11 (r934486)
------略
3,啓動httpd、mysqld服務
[root@localhost ~]#service httpd start
[root@localhost ~]#service mysqld start
[root@localhost ~]#chkconfig httpd on
[root@localhost ~]#chkconfig mysqld on
[root@localhost ~]# chkconfig svnserve on
4,設置mysqld密碼和訪問權限
[root@localhost ~]#mysqladmin -u root password 123456
[root@localhost ~]#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)
1,從GitHub下載Usvn
[root@localhost ~]#wget https://github.com/usvn/usvn/archive/1.0.7.tar.gz
2,安裝配置Usvn
[root@localhost ~]#tar -zxvf 1.0.7.tar.gz
[root@localhost ~]#mv usvn-1.0.7/ /var/www/html
[root@localhost ~]#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服務
[root@localhost ~]#service httpd restart
5,瀏覽器輸入http://ip/usvn/public/install.php 開始安裝
一直點擊下一步,若是出現這個報錯,就說明httpd.conf配置文件中,根目錄的AllowOverride沒有配置爲yes
選擇時區和語言:
設置svn根目錄,我這裏使用默認配置
建立版本庫路徑
[root@localhost ~]#mdkir /home/subversion/
建立密碼文件和權限文件路徑
[root@localhost ~]#mdkir /home/subversion/passwd
給目錄受權
chown apache:apache –R /home/subversion/
配置數據庫
建立管理員,其中密碼必須8位以上(admin/1qaz2wsx)
最後一步將生成的配置,添加到httpd.conf文件結尾
重啓httpd服務
[root@localhost ~]#service httpd restart
建立項目,用戶組,用戶(略)
客戶端鏈接項目:http://10.80.0.161/usvn/public/svn/docs/ docs爲項目名稱
一、安裝到最後遇到一個頭痛的問題,當目錄出現中文時沒法設置目錄權限
解決方法:
LANG="zh_CN.UTF-8"
SYSFONT="latarcyrheb-sun16"
在文件最前面加上
setlocale(LC_ALL, 'zh_CN.UTF-8');
二、提交message不能爲空
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
三、使用sendmail服務實現提交後,發送郵件通知管理員
#yum install sendmail #yum install -y sendmail-cf
DAEMON_OPTIONS(`Port=smtp,Addr=192.0.1.2, Name=MTA')dnl #IP地址配置爲本機IP地址
set from=xxx@163.com smtp=smtp.163.com smtp-auth-user=xxx smtp-auth-password="163郵箱的客戶端受權碼" smtp-auth=login
注:使用163郵件發送郵件,密碼要填寫客戶端受權碼,不然會報錯「535 Error:authentication failed」,關於如何生成客戶端受權碼,請參考下面這個網址:
https://jingyan.baidu.com/article/495ba841ecc72c38b30ede38.html
#cd /home/subversion/svn/docs/hooks/ #vim svn_sendemail_commit.sh #!/bin/bash REPOS=$1 REV=$2 SENDTO=$3 SENDFROM=xxx@163.com LIMITDIFF=200 CHANGELOG=`svnlook log -r $REV $REPOS` AUTHOR=`svnlook author -r $REV $REPOS` CHANGED=`svnlook changed -r $REV $REPOS` DIFF=`svnlook diff -r $REV $REPOS | head --lines=$LIMITDIFF` DATE=`date` TMPFILE=/tmp/svn$REV-$RANDOM.message SUBJECT="SVNCommit ($AUTHOR) $REPOS [$REV]" echo "-------------------- SVN Commit Notification -------------------- Repository: $REPOS Revision: $REV Author: $AUTHOR Date: $DATE ----------------------------------------------------------------- Log Message: ----------------------------------------------------------------- $CHANGELOG ----------------------------------------------------------------- Changes: ----------------------------------------------------------------- $CHANGED ----------------------------------------------------------------- Diff: (only first $LIMITDIFF lines shown) ----------------------------------------------------------------- $DIFF " > $TMPFILE # Send email #cat $TMPFILE | mail -a "From: $SENDFROM" -s "$SUBJECT" "$SENDTO" cat $TMPFILE | mail -a "$TMPFILE" -s "$SUBJECT" "$SENDTO" # Cleanup rm $TMPFILE
#!/bin/sh export LC_CTYPE=zh_CN.UTF-8 export PATH=$PATH:/usr/local/svn/bin:/home/subversion/svn/docs/hooks/: REPOS="$1" REV="$2" SENDTO="aaa@163.com,bbb@qq.com" # Send it to these people, calling the script we created above /home/subversion/svn/docs/hooks/svn_sendemail_commit.sh "$REPOS" "$REV" "$SENDTO"
#service sendmail restart #chkconfig sendmail on
注意,若是sendmail服務啓動很慢,極可能是由於解析本機的域名慢,須要修改/etc/hosts文件。添加: 192.0.1.2 svnhost. svnhost(主機名後面必定要加「."啊)
#cat /etc/passwd |mail -s "test mail" xxx@163.com