zoukankan      html  css  js  c++  java
  • svn-多个项目版本库和自动同步更新post-commit

    由于项目测试需求,需要远程服务器上使用svn做版本控制.

    需求:

    1,项目test1,项目test2,各自独立版本库,各自独立用户权限,便于项目管理

    2,同步提交,本地svn提交至版本库后,服务器上的web根目录上的项目同步更新。达到本地update,浏览器访问实时生效

    步骤:

    1,安装svn 过程略去

    2,配置项目

    一,创建版本库

    创建多个项目的版本库

    工作目录

    /var/www/

    项目1:svnadmin create /var/www/svn/test1

    项目2:svnadmin create /var/www/svn/test2

    二,修改项目配置

    ===============================

    cd /var/www/svn/test1

    目录权限

    vi conf/authz  

    [/]

    *=rw

    账号密码

    vi conf/passwd

    user1=123456

    主配置

    vi conf/svnserve.conf

    anon-access = read
    auth-access = write
    password-db = passwd
    authz-db = authz
     
    同步更新
    cp hooks/post-commit.tmpl hooks/post-commit
    chmod 777 hooks/post-commit      //如果不给权限的话,同步更新会报255错误的。
    vi post-commit
    cd /var/www/test1 && /usr/bin/svn update --username user1 --password 123456
     

    如果还报127,记得把最下面这句注释或删掉

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

     
    三,开启进程
    注意不能使用下面这种,不然checkout会报url不存在的。

    svnserve -d -r /var/www/svn/test1

    svnserve -d -r /var/www/svn/test2

    正确的是

    svnserve -d -r /var/www/svn/

    ps -ef|grep svnserve  //查看进程是否正常

    如果已经有其他进程用命令杀掉kill pid

    上面是项目test1的配置,项目test2的配置也和上面大体一致,不在赘述。

    4,导入项目

    mkdir /var/www/test1

    touch test1.txt

    midir /var/www/test2

    touch test2.txt

    svn import /var/www/test1 file:///var/www/svn/test1 -m "导入项目1"

    svn import /var/www/test2 file:///var/www/svn/test2 -m "导入项目2"

     5,checkout检出

    测试一下。把/var/www/test1  和/var/www/test2  删掉

    cd  /var/www

    svn checkout svn://IP/test1

    svn checkout svn://IP/test2

    看test1,和test2目录果然下载下来了。

    然后我到我的windows本地上也checkout一下,地址同样是上面的两个

    输入账号密码,也成功下载了文件

    我们在test1,test2其中添加提交b.txt,c.txt,

    然后到服务器上看/var/www/test1,和 test2中果然已经实时更新出现了。

    我的http://test1.aaa.com 和http://test2.aaa.com

    分别对应的是/var/www/test1和/var/www/test2

    清楚了web的目录指向后,看到的效果自然也就是所谓的实时更新了。

    =========================================
     
    备注:还是想的太美好了。出现了问题。
    当使用的钩子更新的时候。如果有中文的文件,是会报错,导致跳出更新失败的。
     
    网上找了很多解决方案,都是改系统字符集。然而还是报错。没有办法。还是使用定时任务吧。
     
    crontab -e

    #每分钟更新,并记录日志
    #*/1 * * * * /root/svn_update.sh >> /tmp/log/svn_update.log

    #每5分钟更新,不记录日志。

    */5 * * * * /root/svn_update.sh

    vi svn_update.sh

    #!/bin/bash
    cd /var/www/test1 && /usr/bin/svn up
    cd /var/www/test2 && /usr/bin/svn up

    参考:http://blog.csdn.net/honeyjimmy/article/details/24431713

    常见错误:http://www.2cto.com/os/201407/322026.html

  • 相关阅读:
    Warning: setState(...): Can only update a mounted or mounting component. This usually means you called setState() on an unmounted component. This is a no-op. Please check the code for the EditerInput
    React 综合事件 SyntheticEvent
    浏览器进程?线程?
    如何选择Redux的store和React的state?
    主流浏览器内核介绍(前端开发值得了解的浏览器内核历史)
    前端路由实现与 react-router 源码分析
    Sass Less SCSS 的抉择
    单行居中显示文字,多行居左显示,最多两行超过用省略号结尾
    link和@import的区别
    css选择符属性继承优先级算法以及css3新增伪类新特性
  • 原文地址:https://www.cnblogs.com/findgor/p/4989032.html
Copyright © 2011-2022 走看看