================================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================================