• 【SVN】 一次SVN 修复笔记


    同事乱提交了一个版本之后,SVN上最新版本出现了问题。

    原本按照网上其他人的说法,可以手动到服务器端干掉最新版的存档,并修改版本记录到前一个版本号即可,但是这应该是个坑。

    掉进这个坑后,需要解决,又不能直接让大家提交新版本到新库,因为很多代码还没来得及同步。

    好在SVN能通过不复杂的命令操作解决问题。

    过程很简单, 导出正确的版本,重建新库。

    【下列操作均在对应项目的Repo文件夹内进行】

    进入db文件夹:

    导出前需要手动检查 Current文件中的版本号,是否与 revs/0/下最大号码的文件一致。

     

    此外,还需要检查 txn-current 文件内版本号与 revprops/0/文件夹下最大号一致

    检查之后在CMD下进入svn安装路径,键入命令:

    svnadmin dump [Old Repo PATH] > [New Repo PATH]

    如果要导出特定版本:

    svnadmin dump -r [Version.]  [Old Repo PATH] > [New Repo PATH]

    【注意,版本号-1才是此处的版本参数。】

    之后重建即可:

    svnadmin create PATH  [New PATH]  

    svnadmin load PATH < [New Repo PATH]

    【当然,组内习惯性的进行正确合理的版本管理工作流程才是王道】

    【附上更多资料】

    另附一篇更好的博客:http://blog.csdn.net/windone0109/article/details/2908133

    初级篇:

    导出:

    $svnlook youngest myrepos //查看到目前为止最新的版本号

    $svnadmin dump myrepos > dumpfile //将指定的版本库导出成文件dumpfile

    导入:

    $svnadmin load newrepos < dumpfile

     

    中级篇:

    $svnadmin dump myrepos –r 23 >rev-23.dumpfile           //将version23导出

    $svnadmin dump myrepos –r 100:200 >rev-100-200.dumpfile  //将version100~200导出

    对比较大的库可以分解成几个文件导出,便于备份

    $svnadmin dump myrepos –r 0:1000 >0-1000.dumpfile

    $svnadmin dump myrepos –r 1001:2000 --incremental >1001-2000.dumpfile

    $svnadmin dump myrepos –r 2001:3000 --incremental >2001:3000.dumpfile

    在导入时,可以将这几个备份文件装载到一个新的版本库中

    $svnadmin load myrepos < 0-1000.dumpfile

    $svnadmin load myrepos < 1001-2000.dumpfile

    $svnadmin load myrepos < 2001:3000.dumpfile

      

    高级篇:

        过滤版本库历史:

           假设有三个项目的版本库

           /RigTMS

           /DocProtect

           /Odin

           现需要将这三个项目转移到独立的三个版本库中,需要做如下操作

           1、转储整个版本库

           $svnadmin dump /path/to/repos > repos-dumpfile

           2、将转储文件三次过滤,每次仅保留一个定级目录,即可以得到三个转储文件

           $svndumpfilter include RigTMS < repos-dumpfile > RigTMS-dumpfile

    $svndumpfilter include DocProtect < repos-dumpfile > DocProtect-dumpfile

    $svndumpfilter include Odin < repos-dumpfile >Odin-dumpfile

           3、虽然现在的RigTMS、DocProtect、Odin都可以用来创建一个可用的版本库,但他们保留了原版本库的精确路径结构(例如: RigTMS的顶级目录为/RigTMS/trunk、/RigTMS/branches、/RigTMS/tags,而非我们所需要的/trunk、/branches、/tags),如果要实现目标,需要编辑转储文件,调整Node-path和Copyfrom-path头参数,将路径/RigTMS删除,同时还要转储数据中创建RigTMS目录的部分。

           Node-path:RigTMS

           Node-action:add

           Node-kind:dir

           Content-length:0

    *****特别注意点:如果使用手工编辑dumpfile文件来移除一个顶级目录,需要注意不要让使用的编辑器将换行符转换为本地格式(比如将/r/n转换为/n),否则文件的内容就与原来的格式不符,这个转储文件就失效了。具体做法就是当你在使用编辑器打开文件的时候,编辑器会提示用户是否需要转换格式,一定要选择“否”,切记!!切记!!

           4、接下来就是创建三个新的版本库,然后将新过滤出来并修改好的三个转储文件导入

           $svnadmin create RigTMS;svnadmin load RigTMS < RigTMS-dumpfile

           $svnadmin create DocProtect;svnadmin load DocProtect < DocProtect-dumpfile

           $svnadmin create Odin;svnadmin load Odin < Odin -dumpfile

    ****备份环境注意点:

           1、确保没有其他进程访问版本库,关闭apache、svnserve服务

           2、成为版本库的管理员,如果以其他身份还原版本库,可能会改变版本库文件的访问权限,导致在恢复后依旧无法访问

           3、svnadmin recover /path/to/repos

           4、重新启动服务进程

  • 相关阅读:
    vue过滤器filters
    vue指令
    java命令
    mysql的information_schema表
    es6 Object的keys values entries方法
    mysql information_schema.INNODB_TRX
    流动相似性例子
    【转】time 模块详解(时间获取和转换)
    查找——平衡二叉树的实现(代码超详细注释)
    py中变量名的“秘密”
  • 原文地址:https://www.cnblogs.com/DannielZhang/p/8027968.html
Copyright © 2020-2023  润新知