IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    SVN服务器升级

    夜行人发表于 2016-04-27 06:26:25
    love 0

    一、问题

    • SVN仓库通过Apache发布出来,为了增强安全性,还使用了https,Subversion版本是subversion-1.6.11-12.el6_6.x86_64
    • pre-commit等钩子有做一些检查,如果有问题就echo错误信息,但出错信息是中文的,svn客户端无法显示,提示如下
    Error output could not be translated from the native locale to UTF-8.

    这个问题持续了大概有3-4年的时间了,虽然在出错后,可以问问旁边的同事是什么原因,但始终不够直观,我们尝试过以下方法,但都没有解决

    • 修改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特性

    前天,项目组又问起这个事,就Google了下, 发现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
    • moddavsvn-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

    修改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

    CentOS 5上的svn 1.8

    WandiscoSVN也提供了5.5上的升级,但无法满足我们的场景的需求,主要是因为CentOS5上提供的openssl是0.9.8版本,不支持SNI,所以需要手动安装



沪ICP备19023445号-2号
友情链接