//192.168.60.10:
3690>92731041-2dae-4c23-97fd-9e1ed7f0d18d
Username:
pm
Passwordfor'pm':
Aproject/test
Aproject/server
Aproject/client
Checkedoutrevision1.(测试提取成功)
#cdproject/server
#svncommitmain.c-m"测试一下我的C程序,看什么看,不行啊?
?
"
Transmittingfiledata.
Committedrevision2.(测试提交成功)
三,配置SVN效劳器的支持
1,转换SVN效劳器的密码
由于SVN效劳器的密码是明文的,效劳器不与支持,所以需要转换成支持的格式。
我写了一个Perl脚本完成这个工作.
脚本内容如下:
#cd/home/svn/project/conf/
#!
/usr/bin/perl
#writebyhuabo,2021-11-20
usewarnings;
usestrict;
#openthesvnpasswdfile
open(FILE,"passwd")ordie("Cannotopenthepasswdfile!
!
!
\n");
#cleartheapachepasswdfile
open(OUT_FILE,">webpasswd")ordie("Cannotopenthewebpasswdfile!
!
!
\n");
close(OUT_FILE);
#begin
foreach(){
if($_=~m/^[^#].*=/){
$_=~s/=//;
`htpasswd-bwebpasswd$_`;
}
}
#./PtoWP.pl(先给该脚本加可执行权限,然后执行以转换密码)
Addingpasswordforuserpm
Addingpasswordforuserserver_group
Addingpasswordforuserclient_group
Addingpasswordforusertest_group
现在目录下会多一个webpasswd文件。
2,修改d.conf,添加关于SVN效劳器的内容
编辑/etc/d/conf/d.conf,在最后添加如下信息:
DAVsvn
SVNPath/home/svn/project/
AuthTypeBasic
AuthName"svnforproject"
AuthUserFile/home/svn/project/conf/webpasswd
AuthzSVNAccessFile/home/svn/project/conf/authz
Satisfyall
Requirevalid-user
3,启动D效劳器
#servicedrestart
Stoppingd:
[FAILED]
Startingd:
[OK]
测试结果如下列图所示:
(测试成功)
四,配置邮件提醒支持
1,安装Perl模块Module:
:
Build
#./Build
#./Buildtest
#./Buildinstall
#cd..
2,安装Perl模块Authen:
:
SASL
#maketest
#makeinstall
#cd..
3,安装Perl模块Net:
:
SMTP_auth
#maketest
#makeinstall
#cd..
4,安装Perl模块SVN:
:
Notify
#./Build
#./Buildtest
#./Buildinstall
#cd..
5,启动邮件效劳器
#servicesendmailrestart
Shuttingdownsendmail:
[FAILED]
Startingsendmail:
[OK]
Startingsm-client:
[OK]
6,配置自动发邮件脚本
修改post-commit脚本,以支持邮件通知功能.
#cd/home/svn/project/hooks/
#vimpost-commit
内容如下:
#!
/bin/sh
REPOS="$1"
REV="$2"
/usr/bin/svnnotify--repos-path"$1"--revision"$2"--tocaodaijun@pica--fromcaodaijun@feinno--handler"HTML:
:
ColorDiff"--with-diff--smtplocalhost--smtp-userroot--smtp-pass5202114318-c"UTF-8"-gzh_CN-oraw--svnlook/usr/bin/svnlook--subject-prefix'[SVNUpdate]'
(to参数代表接收邮件的地址,可以有多个,当你有多个老大的时候,这就很重要了,:
〕。
from参数是虚拟的,代表你的发送地址,一般情况下,这个参数不重要,但如果接收者的邮件效劳器有反垃圾邮件的功能,需要判定源地址的话,这个参数是否合法就显得很重要了)
再给该脚本添加可执行权限
#chmod+xpost-commit
7,再次提交时,就会给指定邮件地址发信了。
如下列图所示:
五,其它常用配置
1,强制写log脚本
配置pre-commit文件,要求用户每次更新文件都必须写log.
#cd/home/svn/project/hooks/
#vimpre-commit
文件内容如下:
#!
/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
LOGMSG=`$SVNLOOKlog-t"$TXN""$REPOS"|grep"[a-zA-Z0-9]"|wc-c`
if["$LOGMSG"-lt5(要求的log长度,依实际需要修改)];
then
echo-e"\nEmptylogmessagenotallowed.Commitaborted!
"1>&2
exit1
fi
配置完成后,给本件加上可执行权限。
再提交代码时,就必须按要求写注释了,:
〕
2,可修改log脚本
配置pre-revprop-change文件,此文件在showlog中修改log时会运行,得到修改的权限,否那么会报错:
DAVrequestfailed;it'spossiblethattherepository'spre-revprop-changehookeitherfailedorisnon-existent.Atleastonepropertychangefailed;repositoryisunchanged
#cd/home/svn/project/hooks/
#vimpre-revprop-change
文件内容如下:
REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
if["$PROPNAME"="svn:
log"];thenexit0;fi
exit1
配置完后加可执行权限升效。
六,备份管理
svn效劳器的定期备份是很重要的,最简单的方式是定时备份仓库目录。
1,新建备份目录
#mkdir/opt/project_backup
2,编写备份脚本
#cd/home/svn/
内容如下:
#!
/bin/bash
#writebyhuabo,2021-11-20
cd/home/svn
now=`/bin/date+%Y%m%d`
/bin/tarczvf"project_backup_$now.tar.gz"project/&&rm-rf/opt/project_backup/*&&/bin/mvproject_backup_*.tar.gz/opt/project_backup/
if[$?
==0]
then
result="OK!
!
"
else
result="False!
!
"
fi
#sendmailtoadministrator
/bin/mailcaodaijun@pica-s"project_backup_$now"<Result:
`/bin/echo$result`
MESSAGE
给该脚本添加可执行权限。
3,设定每天定时执行该脚本.
#crontab-e
输入如下内容:
表示每天晚上23点运行此脚本。
经过以上三步操作,就可以自动备份SVN资料了,且不管备份是否成功,都会给用户发送邮件信息。
七,用svnstat分析SVN数据.
1,安装JAVA
svnstat是JAVA应用程序,需要先安装JAVA环境。
安装:
2,下载svnstat
3,更新代码
#pwd
/root
Aproject/test
Aproject/server
Aproject/client
Checkedoutrevision5.
4,生成svnstat数据
#java-classpathSvnStat-all.jarde.agentlab.svnstat.SvnStat-jarSvnStat-all.jar-r/root/project.log-d/var/www/html/
5,用浏览器登录即可看到许多统计出来的图表。
大致如下列图所示:
(俺的测试代码很少,生成的图不成样子,拿官方的图来充当一下,:
〕)
八,用statsvn分析SVN数据
1,下载statsvn
2,生成statsvn数据
#mkdir/var/www/html/statsvn
#java-jarstatsvn.jar-verbose-output-dir/var/www/html/statsvn//root/project.log/root/project
3,用浏览器测测试效果如下列图:
九,配置codestriker.
1.安装codestriker依赖的perl包.
#perl-MCPAN-e'install"Template"'
#mkdir/var/www/codestriker
#cd/var/www/codestriker
#servicemysqldrestart
#mysql-urootmysql
执行:
CREATEDATABASEcodestrikerdbCHARACTERSETutf8;
GRANTSELECT,INSERT,UPDATE,DELETE,INDEX,ALTER,CREATE,DROP,REFERENCESONcodestrikerdb.*TOcodestriker@localhostIDENTIFIEDBY'cspasswd';
FLUSHPRIVILEGES;
quit
注意以下几点(详细可查看codestriker的安装文档)
b.svn的数据仓库要配对,我的如下:
@valid_repositories=
(
'svn:
file:
///home/svn/project',
)
#cdbin/
在最后面加上如下内容:
SetHandlerperl-script
PerlHandlerModPerl:
:
Registry
Options+ExecCGI
AllowOverrideNone
Allowfromall
#servicedrestart
8.在浏览器中输入:
//192.168.60.10/codestriker/codestriker.pl即可访问,如下列图: