分类
学习笔记 日记

linux强制svn提交时必须写注释

打开hooks,然后将pre-commit.tmpl修改为pre-commit,打开pre-commit,写入如下代码:

#!/bin/sh
REPOS="$1"
TXN="$2"
 
SVNLOOK=/usr/bin/svnlook #根据你的SVN目录而定
 
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
if [ "$LOGMSG" -lt 10 ];
then
    echo "Log message can't be empty! you must input more than 10 chars as comment!." 1>&2
    exit 1
fi

保存!

将pre-commit设置为可执行

分类
学习笔记

SVN配置邮件提醒支持

1、安装svn-notify

$ sudo apt-get install libsvn-notify-perl  libnet-smtpauth-perl

2、安装Perl模块Module::Build

# wget http://search.cpan.org/CPAN/authors/id/D/DA/DAGOLDEN/Module-Build-0.36_11.tar.gz
# tar xvf Module-Build-0.36_11.tar.gz 
# cd Module-Build-0.36_11
# perl Build.PL 
# ./Build 
# ./Build test
# ./Build install
# cd ..

3、安装Perl模块Authen::SASL

# wget http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/Authen-SASL-2.15.tar.gz
# tar xvf Authen-SASL-2.15.tar.gz 
# cd Authen-SASL-2.15
# perl Makefile.PL 
# make test
# make install# cd ..

4、安装Perl模块Net::SMTP_auth

# wget http://search.cpan.org/CPAN/authors/id/A/AP/APLEINER/Net-SMTP_auth-0.08.tar.gz
# tar xvf Net-SMTP_auth-0.08.tar.gz 
# cd Net-SMTP_auth-0.08
# perl Makefile.PL 
# make test
# make install
# cd ..

5、安装Perl模块SVN::Notify

# wget http://search.cpan.org/CPAN/authors/id/D/DW/DWHEELER/SVN-Notify-2.80.tar.gz
# tar xvf SVN-Notify-2.80.tar.gz 
# cd SVN-Notify-2.80
# perl Build.PL 
# ./Build 
# ./Build test
# ./Build install
# cd ..

6、启动邮件服务器

# service sendmail restart
Shutting down sendmail: [FAILED]                                  
Starting sendmail:      [  OK  ]                                        
Starting sm-client:     [  OK  ]                                       

7、配置自动发邮件脚本

修改post-commit脚本,以支持邮件通知功能:

# cd /home/svn/project/hooks/
# vim post-commit

内容如下:

#!/bin/sh
REPOS="$1"
REV="$2"
/usr/bin/svnnotify --repos-path "$1" --revision "$2" --to [email protected] --from [email protected] --handler "HTML::ColorDiff"  --with-diff --smtp localhost --smtp-user root --smtp-pass 5201314318 -c "UTF-8" -g zh_CN -o raw --svnlook /usr/bin/svnlook --subject-prefix '[SVN Update]'
  • to参数代表接收邮件的地址,可以有多个;
  • from参数是虚拟的,代表你的发送地址,一般情况下,这个参数 不重要,但如果接收者的邮件服务器有反垃圾邮件的功能,需要判定源地址的话,这个参数是否合法就显得很重要了。

再给该脚本添加可执行权限:

# chmod +x post-commit

再次提交时,就会给指定邮件地址发信了。

分类
学习笔记

ubuntu中svn服务端配置安装

1 通过apt-get安装subversion
apt-get install subversion
2 找个目录当做SVN的根目录
我选择的是/home/svn,以下命令也都是跟着这个目录走的,请按照自己的选择自行修改
3 创建一个库
我的叫做guodong.me,执行完毕后会发现自动在/home/svn/guodong.me/目录中生成了一堆东西,其中有一个叫conf的文件夹

svnadmin create guodong.me

4 接下来修改/home/svn/guodong.me/conf/下的三个文件,依次是:svnserve.conf、passwd、authz。他们三个作用分别是:主配置文件、密码配置文件、权限配置文件

5 vi conf/svnserve.conf
找到以下几项,按照如下的设置修改,去掉前面的注释,每一行的开头不能有空格

anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

6 vi conf/passwd

[users]
mantou = 123456

格式很简单,用户名、密码,每行一个,默认是明文保存

7 vi conf/authz

[groups]
develop = mantou

[/]
@develop = rw

这个配置稍微复杂点:[groups]组是设置用户组的,比如:我设置的develop可以理解为开发人员组,等号的后面是组的成员,每个成员之间用逗号分隔。接下来的[/]为具体的某个地址设置权限,用@develop代表为develop组设置权限,rw代表又能读又能写。还有其他的复杂用法,不过我只懂最简单最常用的,所以其他的都跳过。

8 启动服务

svnserve -d -r /home/svn

参数-d表示以守护进程模式启动,-r表示代码仓库的根目录,如果启动成功了,通过ps aux | grep svnserve可以看到进程,至此一个最简单的SVN服务就搭建好了。

然后把这个命令放到rc.local中,让每次开机都启动SVN服务。

9 接下来测试验证,在客户机上找个目录执行一下命令:

svn co svn://192.168.0.111/guodong.me –username=mantou –force

svn://192.168.0.111/guodong.me就是新建的代码仓库的地址,假设刚才的服务是建在192.168.0.111上的。参数–username是指定用户名的,不指定的话会以当前的系统用户登录,系统用户和SVN用户是不相干的两套,所以还是人工指定的好。–force参数可有可无,如果在同一个地址上反复测试,删了建建了删,SVN客户端会缓存住上一次成功checkout的UUID,如果删了再建UUID会发生改变,客户端校验不一致会提示“Repository UUID ‘xxx’ doesn’t match expected UUID ‘xxx’”,加–force参数就不理会这个校验,强行checkout。

如果顺利的话,会提示“Checked out revision 0.”,然后在当前目录下生成一个guodong.me的目录,里面就是代码仓库的代码了。