================================Start 安装SVN服务器端 Start================================

yum install subversion                //从镜像下载安装svn服务器端
cd /lnmp                              //进入目录,准备创建svn目录
mkdir svn                             //创建一个svn目录
chmod -R 777 svn                      //修改目录权限为777
svnadmin create /lnmp/svn/root        //创建一个svn版本仓库root(root可以随便起名字)
cd /lnmp/svn/root/conf                //进入root版本仓库下的配置文件目录
要修改这个目录下的三个配置文件
+------------------------------------+
1.vi svnserve.conf   //配置版本库信息和用户文件和用户密码文件的路径、版本库路径
+------------------------------------+
# anon-access = read
# auth-access = write
# password-db = passwd
# realm = My First ....
这四行,前面的#号和空格去掉,变成
anon-access = none      //read改成none
auth-access = write
password-db = passwd
realm = root            //改成自己的版本库
保存
+------------------------------------+
2.vi authz   //文件,创建svn组和组用户的权限
+------------------------------------+
[groups]
root = iphper,songhuan  //创建一个root的组,并制定两个用户iphper和songhuan
[/]                     //制定根目录下的权限
@root = rw              //sunny组用户权限为读写
* = r                   //其他用户只有读权限
保存退出
+------------------------------------+
3.vi passwd   //创建或修改用户密码
+------------------------------------+
[users]
iphper = 123456      //用户名为gep的用户的密码为123456
songhuan = 123456    //。。。
保存退出
+------------------------------------+
4.设置自启动
+------------------------------------+
vi /etc/rc.local     //打开自启动文件
文件内容如下
+------------
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
/lnmp/mysql/3306/mysql start
ulimit -SHn 65535
/lnmp/php/sbin/php-fpm start
/lnmp/nginx/sbin/nginx
svnserve -d -r /lnmp/svn
#/lnmp/mysql/bin/mysql -u root -p -S /tmp/mysql.sock
------------+
+------------------------------------+
5.svn命令
+------------------------------------+
lsof -i :3690        //查看svn是否启动
ps aux | grep 'svn'  //查找所有svn启动的进程
kill -9 2505         //杀死2505这个查找到的svn进程
svnserve -d -r /lnmp/svn/root   //启动svn(可以把这个放到/etc/local/rc.local文件中,实现开机自启动)
svn up                         //更新文件
svn commit -m '注释' t.php     //提交文件
svn ci -m 'aaa' t.php          //提交文件
svn add file                   //新建文件并添加到svn
svn add *.php                  //添加当前目录下所有的php文件
svn delete t.php               //删除t.php
svn log t.php                  //查看t文件的log信息
svn cleanup                    //清理当前目录
svn co svn://192.168.80.129 ./    //检出一份版本库文件到当前目录
svn switch --relocate svn://192.168.80.129  svn://192.168.80.128      //重新定位SVN版本库地址
+------------------------------------+
6.多svn版本
+------------------------------------+
多svn版本只是再建一个svn:svnadmin create /lnmp/svn/viwovi 其他步骤同上
如果只启动一个svn版本用 svnserve -d -r /lnmp/svn/root (这样如果svn检出只能用 svn://ip,如果用svn://ip/viwovi 就没法检出了)
如果想用svn://ip/viwovi或svn://ip/root检出各个不同的版本,需要用 svnserve -d -r /lnmp/svn 启动
================================End 安装SVN服务器端 End================================
================================Start SVN钩子 Start================================
cd /lnmp/htdocs/   //首先在htdocs目录下建个Web项目
svn co svn://192.168.80.129/viwovi ./   //检出一份版本库文件到当前目录(检出多版本中的viwovi这个版本)
cd /lnmp/svn/viwovi/hooks   //打开项目库目录
+------------------------------------+
1.提交svn后,同步更新Web项目
+------------------------------------+
vi post-commit   //编辑post-commit文件,添加下面内容
+------------
#!/bin/sh
SVN=/usr/bin/svn
WEB=/lnmp/htdocs/viwovi
export LANG=en_US.UTF-8
$SVN update $WEB --username viwovi --password 123456
------------+
chmod 777 post-commit   //给post-commit文件,加上可写权限
+------------------------------------+
2.提交svn前,强制写注释
+------------------------------------+
vi pre-commit   //编辑post-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
# Check that the author of this commit has the rights to perform
# the commit on the files and directories being modified.
# 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 5 ];    #要求注释不能少于10个字符(数字和字母),您可自定义
then
   echo -e "必须写10个字符以上的日志信息" 1>&2
   exit 1
fi
# All checks passed, so allow the commit.
exit 0
------------+
chmod 777 pre-commit   //给pre-commit文件,加上可写权限
================================End SVN钩子 End================================