SVN管理

svn服务器有2种运行方式
1.独立服务器 (例如:svn://xxx.com/xxx);
2.借助apache。(例如:http://svn.xxx.com/xxx);为了不依赖apache,选择第一种方式-独立的svn服务器。

svn存储版本数据有2种方式
1.bdb;
2.fsfs。
因为BDB方式在服务器中断时,有可能锁住数据(搞ldap时就深受其害,没法根治),所以还是FSFS方式更安全一点,我也选择这种方式。

安装SVN包
$ yum install subversion

验证版本
$ svnserve --version
svnserve, version 1.6.11 (r934486)

创建版本仓库
$ svnadmin create /disk/svndata/firstsvn     目录/版本库/项目
$ svnadmin create /disk/svndata/firstsvn1   目录/版本库/项目1
$ svnadmin create /disk/svndata/firstsvn2   目录/版本库/项目2

版本仓库创建成功后,会在/disk/svn/firstsvn/conf目录下生成三个配置文件:
authz             #权限配置
passwd          # 用户和口令配置
svnserve.conf # SVN服务配置

配置svnserve.conf
主要有四个配置项,注意保证这些配置行前没有空格。                   
anon-access = none                                                   #非认证用户访问版本库的权限   
auth-access = write                                                   #认证用户访问版本库的权限
password-db = /disk/svn/firstsvn/conf/passwd  #指定用户口令配置文件名
authz-db = /disk/svn/firstsvn/conf/authz             #指定权限配置文件名


配置authz
可使用分组管理的方式进行权限配置。1个用户组可以包含1个或多个用户,用户间以逗号分隔。
[groups]
admin = jackie
devteam = iitshare, itblood #devteam 项目组包括两个用户iitshare,itblood


版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>


[firstsvn:/]
@admin = rw
* = r


[firstsvn:/dev]
@devteam = rw


[firstsvn:/test]
@testteam = rw


配置passwd
[users]
jackie = jackiepwd      用户名和口令

启动SVN服务

$ svnserve -d -r /disk/svn
       -d表示后台运行
       -r 指定根目录是 /disk/svn
 
查看后台进程
$ ps -ef | grep svn
root      2983     1  0 09:19 ?        00:00:00 svnserve -d -r /disk/svn
jackie    4570  2496  0 10:51 pts/1    00:00:00 grep svn


配置项目仓库的钩子配置。

cp post-commit.tmpl post-commit
然后编辑post-commitshell脚本,shell命令如下:

cd /data0/htdocs/wwwroot
/usr/bin/svn cleanup
/usr/bin/svn up /data0/htdocs/wwwroot/--username "wwwroot"--password "123456"


如果没有反应,会有两个地方可能出错:
1)配置文件与路径写得不对,可以直接通过手工方式去执行post-commit看看有没有报错。
2)权限不对。即/data0/htdocs/wwwroot权限是否足以满足脚本的读写。chmod +x post-commit

摘在SVN官方网站 
 
bat:  SVN强制写注释的hooks脚本(Windows)   
@echo off
rem 文件名是: pre-commit.bat,放到repository/hooks目录下
setlocal
set REPOS=%1
set TXN=%2
rem check that logmessage contains at least 10 characters
svnlook log "%REPOS%" -t "%TXN%" | findstr ".........." > nul
if %errorlevel% gtr 0 goto err
exit 0
:err
echo 提交时必须填写说明! 1>&2
exit 1
 
Bash:  SVN强制写注释的hooks脚本(Linux)   
#!/bin/sh
#文件名是: pre-commit,放到/repository/hooks目录下
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook


# check that logmessage contains at least 10 alphanumeric characters
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
if [ "$LOGMSG" -lt 10 ];
then
echo -e "/nEmpty log message not allowed. Commit aborted!" 1>&2
exit 1
fi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值