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

  • 相关阅读:
    FJNU 1151 Fat Brother And Geometry(胖哥与几何)
    FJNU 1157 Fat Brother’s ruozhi magic(胖哥的弱智术)
    FJNU 1159 Fat Brother’s new way(胖哥的新姿势)
    HDU 3549 Flow Problem(最大流)
    HDU 1005 Number Sequence(数列)
    Tickets(基础DP)
    免费馅饼(基础DP)
    Super Jumping! Jumping! Jumping!(基础DP)
    Ignatius and the Princess IV(基础DP)
    Keywords Search(AC自动机)
  • 原文地址:https://www.cnblogs.com/findgor/p/4989032.html
Copyright © 2011-2022 走看看