svn 钩子开启
背景:
公司的Svn很多人在用,有不少人在作修改后不添加注释,所以需要强制用户填写注释。
操作:
1.
重命名svn主目录中hooks的pre-commit.tmpl文件为pre-commit,并添加可执行权限12mv pre-commit.tmpl pre-commitchmod u+x pre-commit
- 编辑pre-commit文件
|
|
一、问题
* pre-commit等钩子有做一些检查,如果有问题就echo错误信息,但出错信息是中文的,svn客户端无法显示,提示如下
Error output could not be translated from the native locale to UTF-8.
我们尝试过以下方法,但都没有解决
修改pre-commit的编码,修改LANG
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8修改Apache的编码
AddDefaultCharset UTF-8
- 采用http发布,而不是https
结论:网上的解决方案只对svn://这种直接用svnserve发布出来的仓库才有效
二、 解决方案
Subversion 1.8特性
SVNUseUTF8 On
它的作用就是使得Apache的mod_dav_svn模块,在和pre-commit等钩子通讯的时候,使用utf-8编码,可以参考mod_dav_svn
升级
我们系统是CentOS 6.2,比较简单,有个第三方,走了Subversion
1.8的rpm包,yum即可,主要是更新了2个rpm包
* subversion-1.8.15-1.x86_64
* mod_dav_svn-1.8.15-1.x86_64
具体升级操作
cat > /etc/yum.repos.d/wandisco-svn.repo <<EOF
[WandiscoSVN]
name=Wandisco SVN Repo
baseurl=http://opensource.wandisco.com/centos/6/svn-1.8/RPMS/\$basearch/
enabled=1
gpgcheck=0
EOF
yum install subversion -y
修改httpd.conf并重启httpd
<IfModule mod_dav_fs.c>
# Location of the WebDAV lock database.
DAVLockDB /var/lib/dav/lockdb
SVNUseUTF8 On
</IfModule>
/etc/init.d/httpd graceful
升级后的测试
需要做些测试,确保升级后不会有问题,测试列表如下
* commit
* update
* log
* merge
* copy签出版本
注意问题:
服务器版本是1.8,如果客户端是1.6,则只能checkout,不能update,1.7没有问题,建议客户端至少1.8