1、测试安装环境
#lsb_release �a
#uname �a
2、安装测试软件
(1)安装软件
# yum -y install subversion
(2)测试软件是否安装成功
#svnserve --version
3、新建一个目录用于存储SVN所有文件
#mkdir /opt/svn
该目录是SVN根目录,后期可以再执行新建版本库的命令用来创建多个项目
新建一个版本库,并初始化
#svnadmin create /opt/svn/oil
4、用户、权限配置
(1)修改版本库的配置文件
#vim/opt/svn/oil /conf/svnserve.conf
[general]
anon-access = none #使非授权用户无法访问
auth-access =write #使授权用户有写权限
password-db =passwd#指明密码文件路径
authz-db = authz #访问控制文件
realm = oil#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
其它采用默认配置. 各语句都必须顶格写, 左侧不能留空格, 否则会出错.
(2)修改允许访问版本库的用户文件
#vim /opt/svn/oil/conf/passwd
文件格式如下所示:
[users]//不可省略
test = 123 //用户名密码对,每个用户一行
(3)修改用户访问版本库的权限
#vim /opt/svn/oil /conf/authz
注意:权限配置文件中出现的用户名必须在passwd文件中有定义过,对权限配置文件authz的修改会立即生效,此配置文件采用“基于路径的授权”策略,中括号里指定路径,以下列出对各用户的授权。还可以对用户分组。
文件格式如下所示:
用户组格式:
[groups]
user_group_name= username1,username2 //用户间以逗号分割
版本库目录格式:
[test:/project/directory]//版本库:/项目/目录
@user_group_name= permissions //用户组名=权限
username= permissions //用户名=权限
[/]
test = rw
*=
注意:配置项所有的行都必须顶格,否则报错。
[]可以有多种定义/表示对全部的版本库设置权限,oil:/表示对oil设置权限,oil:/www表示对oil中的www项目设置权限,oil:/www/example.com表示对oil中的www项目的example.com目录设置权限。
可以用*来表示所有用户。权限可以设置为w,r,wr和空,空表示没有任何权限。
(4)启动默认端口 3690(关闭防火墙或者防火墙放行该端口,停用SELinux=>setenforce 0)
#killallsvnserve
#svnserve -d -r /opt/svn/oil
注意:如果在一台服务器上同时启动多个版本管理,那么启动路径必须是所有项目仓库的根路径
加入开机启动(echo “svnserve -d -r /opt/svn”>> /etc/rc.local)
(5)本地checkout一份查看版本号,看一下仓库中是否有文件
5、导入源代码到仓库
#mkdir �p/home/code/{trunk,tags,branches}
源代码路径:/home/code/trunk/oil
#svn import /home/code/ file:///opt/svn/oil -m “first import”
检查是否导入成功
#svn list --verbose file:///opt/svn/oil
本地再update一份查看版本号,看一下仓库中是否有文件
注意:web目录下一定要用TortoiseSVN checkout出Repositories的代码
步骤:
1.先把源代码导入到仓库中(已完成)
2.再在WWW根目录下checkout仓库中的代码(注意权限问题)
#pwd
/home/wwwroot/default
#svn cofile:///opt/svn/oil/trunk ./
#chown �Rwww:www oil/
#chmod �R777 oil/
3.本地工作目录也是checkout仓库中的代码
4.再配置钩子(post-commit可执行权限)
#chown ww:www post-commit
#chmod a+x post-commit
查看本机环境语言:#echo$LANG
1.cp /opt/svn/oil/hooks/pre-commit.tmpl/opt/svn/oil/hooks/pre-commit
2.chmod a+x /opt/svn/oil/hooks/pre-commit
3.vim /opt/svn/oil/hooks/pre-commit(黄色的为文档内容)
#/bin/bash
REPOS="$1"
TXN="$2"
# Make sure that the log messagecontains 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 thiscommit has the rights to perform
# the commit on the files anddirectories being modified.
#commit-access-control.pl"$REPOS" "$TXN" commit-access-control.cfg || exit 1
# All checks passed, so allowthe commit.
#exit 0
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep"[a-zA-Z0-9]" | wc -c`
if [ "$LOGMSG" -lt 10 ];#要求注释不能少于5个汉字,您可自定义
then
echo -e"\n======================================================"1>&2
echo -e "\n请在Commit(提交)前为您的补丁添加必要的注释。\n本次提交被忽略。"1>&2
echo -e"\n======================================================"1>&2
exit 1
fi
4.重启svn