我的服务器的环境是已经有一个svn的项目了,我想再添加第二个,网站的目录是web1 、web2
思路是这样的,一个版本库,里面放的是所有的svn的项目,这些项目有用一个svnserve.conf 控制,
1、先关闭已经开启的svn服务 killall svnserve
2、/alidata/www/svndata 是版本库目录 ,已经存在的是phpweb1项目
3、创建第二个 svnadmin create /alidata/www/svndata/phpweb2
4、 将phpweb1 或者phpweb2 下面的 conf 里面的 authz 、passwd、svnserve.conf 复制到 /alidata/www/svndata 下面
5、编辑 svnserve.conf 文件 nano svnserve.conf (菜鸟不会用vim) 里面的这几项分别这么设置
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = first (这个可以任意的写)
6、编辑 passwd 文件
格式 zhangsan=123456
lisi = 123456 (用户名=密码)
7、 编辑 authz 文件
[groups]
zu1 = zhangsan
zu2 = lisi
[phpweb1:/]
@zu1 = rw (读写的权限)
*= (没权限)
[phpweb2:/]
@zu2 = rw (读写的权限)
*= (没权限)
8、svnserve -d -r
/alidata/www/svndata
--config-
file
=
/alidata/www/svndata/
svnserve
.conf
--config-
file 这个参数的意思是所有的项目都用这个文件控制
9、客户端的连接 svn://ip/phpweb1 ,这个时候应该可以连接上客户端了,
10、同步apach的网站目录 , 每个svn项目的目录下面都有一个hooks文件夹,里面都是一个关于钩子的文件
新建post-commit文件,
里面的内容#!/bin/sh (这句是sell脚本执行需要的)
export LANG=en_US.UTF-8
SVN=/usr/bin/svn (svn的安装目录)
WEB=/alidata/www/web1/ (网站的目录)
$SVN update $WEB --username zhangsan --password 123456
钩子文件 需要有被执行的权限 chmod +x post-commit
这个时候关闭所有的svn服务,重新启动svn的服务,
最坑爹的时候来了,客户端checkout下来之后,提交新的文件的时候,钩子报错,
commit blocked by pre-commit hook (exit code 1) with no output
svn:no repository found in 'svn:ip'
网站查了很多方法,都不行,
解决办法 从新checkouot svn的项目 到网站目录 之后,再在客户端操作就可以了
svn co svn:ip/phpweb1 /alidata/www/web1
绝对原创!!!