先创建仓库:
svnadmin create /data/svn/my.com
再配置权限:
#cd /data/svn/my.com/conf/
#vim svnserve.conf 配置
[general] anon-access = none # 使非授权用户无法访问 auth-access = write # 使授权用户有写权限 password-db = /data/svn/repos/100med.com.cn/conf/passwd # 指明密码文件路径 authz-db = authz # 访问控制文件 realm = My First Repository # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。
#vim authz 配置访问目录权限
#分组配置 [groups] RD = codesvn PP = CHINA [/data] @PP =rw #根目录权限,只有RD组则有权限访问 [/] @RD = rw * =
#vim passwd 配置用户和密码
[users]
codesvn = ffdsafdsafsdfasdfasfs
配置勾子:
#cd /data/svn/my.com/hooks/
#cp post-commit.tmpl post-commit
#chmod +x post-commit #给执行权限
#!/bin/sh svn update --username codesvn --password xxxxxxxxxxxxxxx /data/wwwroot/my.com/ 2>>/data/logs/svn/my.com_post_commit_log.txt
再迁出一份:(非常重要,让勾子知道是哪个目录)
svn co svn://ip/my.com/ /data/wwwroot/my.com/
重启svnserve
#killall svnserve
#svnserve -d -r /data/svn/
-d 为守护进程
-r svn仓库目录
常见问题:
1.设置了hooks不自动更新代码?
首先,查看日志,多数原因可能是因为编码问题。(export LANG=en_US.UTF-8)
参考代码:
#!/bin/sh REPOS="$1" REV="$2" log_path=/data/logs/svn.my.log export LANG=en_US.UTF-8 echo `whoami`,$REPOS,$REV >> $log_path svn update --username svnname--password 1e26cd8217 /data/wwwroot/sgfoot.com/ 2>>$log_path --no-auth-cache exit 0