2019/01/04

svn


创建配置仓库

创建一个配置仓库 ydconf ,用于维护svn的所有账密、每个仓库的访问权限。创建成功后,将其chekout下来,然后配置钩子hooks,提交代码后自动更新落地。

svnadmin create /data/svn/ydconf

vim ydconf/hooks/post-commit

#!/bin/sh

SVN=/usr/bin/svn

CLIENT=/data/svn/clientsvn/ydconf

$SVN update $CLIENT --username ydconf --password 123456

chmod +x post-commit

创建svn

1、创建命令

svnadmin create /data/svn/project_name

2、修改仓库配置为 ydconf仓库下的 svnserve.conf

cd project_name/conf;
rm svnserve.conf
ln -s /data/svn/clientsvn/ydconf/conf/project_name/svnserve.conf svnserve.conf

我们核心是对 svnserve.conf 进行了以下修改:

anon-access = none #未授权用户没用权限
auth-access = write #账密授权用户可读写
password-db = /data/svn/clientsvn/ydconf/conf/passwd #账密配置文件
authz-db = /data/svn/clientsvn/ydconf/project_name/conf/authz #账密授权用户可操作哪些目录

配置提交代码必须填写提交描述文字

cp project_name/hooks/pre-commit.tmpl pre-commit

vim pre-commit

SVNLOOK=/usr/bin/svnlook

LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
if [ "$LOGMSG" -lt 11 ];#要求注释不能少于5个字符,您可自定义
then
  echo -e "注释信息不能为空且不少于10个字!" 1>&2
  exit 1
fi
exit 0

chmod +x pre-commit

常规错误问题

svn: Can’t open file ‘/home/svn/db/txn-current-lock’: Permission denied

通常是因为断电重启后,系统使用了svn账号启动了svn服务,仓库最外层 /data/svn 目录的所有者是 svn ,而内部的权限都是root。 我们把 /data/svn 此目录的其他用户设置为可读写即可。

chmod o+rw /data/svn

Error:Can’t find temporary directory:internal error

无法找到临时目录:内部错误
磁盘已满,导致无法操作更多文件,通过 df -alh 查看磁盘使用情况,重点观察 系统挂载目录(通常为 / ) 和 svn 挂载目录(通常为 /data/svn) 的使用情况。


全量备份

svnadmin hotcopy /data/svn/project-1 /data/backup/svn/project-1 --clean-logs

还原的时候,停止svn程序,将文件拷贝到指定目录,然后启动svn即可。