美文网首页Mac SVN服务器搭建PHP我用 Linux
linux SVN 中 配置钩子 实现 线上项目同步

linux SVN 中 配置钩子 实现 线上项目同步

作者: JoeWcc | 来源:发表于2016-10-26 14:53 被阅读646次

    首先 确保 你的svn 可以使用

    第一步:把svn项目导入到你的 线上地址

    1,我的svn 项目地址 svn checkout svn://localhost/code/php/CheckWork

    2,我的线上项目 地址 为 /webservice/www/www.onLine

    cd 到  /webservice/www/www.onLine 目录下

    然后把svn 上的项目  checkout 到 这个目录下  CheckWork是需要同步的项目

    例:

    第二步:在 svn 项目库的 hooks/ 目录下新建 post-commit 文件

    如:

    1:/webservice/www/www.svnWork/workSpace 是我的svn 版本库地址

    2:vim /webservice/www/www.svnWork/workSpace/hooks/post-commit

    在这个文件中 写入:

    #!/bin/sh    #说明是执行shell命令

    exportLANG=en_US.UTF-8

    SVN=/usr/bin/svn      #这里配置的是svn安装bin目录下的svn文件

    WEB=/webservice/www/www.onLine/CheckWork    #要更新的目录地址

    $SVN update$WEB--username root  --password root123  #你的svn 用户名称和密码

    chown-Rwww:www$WEB

    如:

    第三步:让post-commit有执行的权限

     chmod a+x post-commit


    第四步:这里就已经完成了,第四步就是测试了。

    说明:

    export LANG=en_US.UTF-8是为了解决svn post commit 中文乱码,设置本地化编码,因为我的系统为UTF8编码,其实SVN默认就是UTF-8编码,如果编码是GBK的话不设置将会出现错误,而执行不成功,错误标识为

    1

    svn: Can't convert string from native encoding to 'GBK'

    /usr/bin/svn update --username cqh --password 123456 /var/www/html/test 执行更新操作

    如果提示:

    1

    post-commit hook failed (exitcode 255) with no output

    赋予post-commit文件可执行权限

    如果您的默认编码就是UTF-8的,要上传中文文件,先将文件另存为UTF-8格式在提交

    这个 时候 只要你svn 代码 更新  那么你线上环境的 代码 也更新了

    相关文章

      网友评论

      • 5b44ae81c364:我用update时,文件不能同步,但是提交时日志写入了 在c.log里面有
        Skipped 'var/www/html/test'
        Summary of conflicts:
        Skipped paths: 1

        我的post-commit

        #!/bin/sh

        REPOS="$1"
        REV="$2"
        export LC_ALL=en_US.UTF-8
        export LANG=zh_CN.UTF-8

        #mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf

        #CURDATE = date
        echo "Code to by at $REPOS $REV" >> /var/www/html/test/a.log

        #这里配置的是svn安装bin目录下的svn文件
        SVN=/usr/bin/svn
        #要更新的目录
        WEB=/var/www/html/test
        svn update --username 100m --password 100m $WEB >> /var/www/html/test/c.log
        chmod 777 -R $WEB

        echo "Code to by at $REPOS $REV" >> /var/www/html/test/b.log

        请帮忙看看什么问题,日志都能生成:sob:
        JoeWcc:不好意思 现在 才看到 把你的一些东西 删掉 其他的都跟我一样 路径 换成你的 试试
      • 10c6303a83fd:请问,如何赋予post-commit权限?我这里一直出现255错误。设置post-commit为777也不行,用了chmod a+x post-commit也不行
        JoeWcc:你确定是权限问题 导致的嘛?
        10c6303a83fd:@JoeWcc 已经试过了。但是仍然出现255错误。我用的是centos+lnmp,不知道是不是里边还有别的权限问题
        JoeWcc:chmod -R 777 post-commit 试试

      本文标题:linux SVN 中 配置钩子 实现 线上项目同步

      本文链接:https://www.haomeiwen.com/subject/jpwduttx.html