zoukankan      html  css  js  c++  java
  • 用svnsync 同步备份 svn 版本库 从一台服务器到另一台服务器

    如用svnsync 同步备份两台机器的svn 。(就以linux服务器到windows服务器为例子)

    要同步的项目名称:source_svn

    svn 版本库1 。4 以上
    源目录:            svn://192.168.16.199/source_svn
    同步目标目录:      http:// 目标IP:8080/source_svnbak

     

    方法:

    1.如果目标目录存在相同的项目,请先清除,重新建立空项目

    2.在目标服务器中建立svn版本库source_svnbak svnadmin create source_svnbak  (svnadmin是svn的命令如果没有将svn目录放到环境变量需要在其目录里面使用该句若是windows可以直接点击右键创建svn)

    3.需要在hooks中将pre_revprop_change.tmpl改为pre_revprop_change.bat并将内容清空然后输入exit 0

    4.执行初始化 

      svnsync init svn://目标:ip:端口号/source_svnbak svn://192.168.16.199/source_svn

      (执行到这一般会出现一个问题 svnsync: 认证失败)解决:需要把源文件source_svn中的conf拷贝到目标source_svnbak中替换conf文件

      如果成功他会提示你输入用户名和密码(注:第一个是Administrator这个我觉得不用管随便输入,确定后才是你svn中填写的用户名和密码在conf中的文件有配置)

     

    正确后,显示

    Copied properties for revision 0.(复制版本 0 的属性。)

    5

    执行同步

    svnsync sync svn://目标ip和端口号/source_svnbak --username xxxx  --password xxxx(一般端口号不用写除非端口号不是默认安装过的需要写,用户名和密码都在conf中有配置)

    即svnsync sync 目标库

    正确执行后,显示

    复制版本号和提交数据等信息

     

    6.更新同步

    在source_svn的hooks下面,添加post-commit 脚本

    可拷贝post-commit.tmpl


     

    cp post-commit.tmpl post-commit

    然后

    把 post-commit 中,最后两行替换为
     

    svnsync sync  --non-interactive svn://目标ip:(端口号)/source_svnbak --username xxx --password xxx

    即提交更新后,即执行同步命令,不进行交互

    把post-commit 设为755权限。

     

    ps:

    如果post-commit脚本出错,或者无可执行权限,在提交更新时会报错

    错误处理 
    在源端 , 同步用的帐号需要有读权限 , 在目的端同步帐号需要读写权限 . 权限分配合理后 , 基本上就不会出现其他错误 

    如果出现以下列出的之外的错误 , 请先检查一下 svn 服务是否可正常使用 
    比较常见的错误是 :
    # svnsync initialize DEST_URI SRC_URI --username cax  --password password_for_cax
    svnsync: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
    svnsync: At least one property change failed; repository is unchanged

    这是由于系统中没有 pre-revprop-change 钩子脚本导致的 , 该文件在版本库的 ~/hooks/ 下 , 只需拷贝一份即可 .
    cp -pf hooks/pre-revprop-change.tmpl hooks/pre-revprop-change

    如果是 windows 系统 , 还需要清空 pre-revprop-change 的内容 , 并添加后缀为 pre-revprop-change.bat
    在批处理文件中 , Linux 下 shell 中注释符 #   不能被 batch 正确解释也会重复出现该错误 .

    来源:http://blog.csdn.net/stuartjing/article/details/6796763

  • 相关阅读:
    【GoLang】GoLang map 非线程安全 & 并发度写优化
    【IDEA】IDEA 如何设置编辑器字体大小
    【GoLang】GoLang fmt 占位符详解
    转头条:阿里p7架构师:三年经验应该具备什么样的技能?
    RPC与RMI的区别
    为什么使用消息队列,为什么使用RabbitMQ、springAMQP
    cookie的安全性问题
    solr与mysql数据同步的方案
    springcloud与dubbo对比:
    mybatis与分布式事务的面试
  • 原文地址:https://www.cnblogs.com/langtianya/p/5001562.html
Copyright © 2011-2022 走看看