SVN导入导出

阅读更多
svn提供了一个类似oracle export成dump文件的一个工具svnadmin dump,导出的文件为文本文件,使用用法如下:
svnadmin dump REPOS_PATH > dumpfile
svnadmin可以指定某些版本号导出,默认是全库导出。
如果需要选择性导出版本库中的某些项目,需要使用svndumpfilter这个命令,用法如下:
svndumpfilter include/exclude dumpfile > subdumpfile

导入dump文件使用svnadmin load命令来完成,用法如下:
svnadmin load path < dumpfile
svnadmin load之前需要用svnadmin create建立好版本库
改变导出子项目的目录结构可以看svnbook下面的这段话:

引用
假设有一个包含三个项目的版本库: calc,calendar,和 spreadsheet。它们在版本库中的布局如下:

/
   calc/
      trunk/
      branches/
      tags/
   calendar/
      trunk/
      branches/
      tags/
   spreadsheet/
      trunk/
      branches/
      tags/
现在要把这三个项目转移到三个独立的版本库中。首先,转储整个版本库:
$ svnadmin dump /path/to/repos > repos-dumpfile
* Dumped revision 0.
* Dumped revision 1.
* Dumped revision 2.
* Dumped revision 3.
...
$
然后,将转储文件三次送入过滤器,每次仅保留一个顶级目录,就可以得到三个转储文件:
$ svndumpfilter include calc < repos-dumpfile > calc-dumpfile
...
$ svndumpfilter include calendar < repos-dumpfile > cal-dumpfile
...
$ svndumpfilter include spreadsheet < repos-dumpfile > ss-dumpfile
...
$
现在你必须要作出一个决定了。这三个转储文件中,每个都可以用来创建一个可用的版本库,
不过它们保留了原版本库的精确路径结构。也就是说,虽然项目calc现在独占了一个版本库,
但版本库中还保留着名为calc的顶级目录。如果希望trunk、tags和branches这三个目录直接位于版本库的
根路径下,你可能需要编辑转储文件,调整Node-path和Copyfrom-path头参数,将路径calc/删除。
同时,你还要删除转储数据中创建calc目录的部分。一般来说,就是如下的一些内容:

Node-path: calc
Node-action: add
Node-kind: dir
Content-length: 0


但是在操作过程中得到一个错误:

<<< Started new transaction, based on original revision 24
     * adding path : trunk/ipm ... done.
     * adding path : trunk/ipm/common ... done.
     * adding path : trunk/ipm/common/C.java ...svnadmin: Checksum mismatch, fil
e '/trunk/ipm/common/C.java':
   expected:  bf40b9de34ff299d8ab27d93465e0a90
     actual:  6f3d28937471aee4df29aa840dd87e9b

你可能感兴趣的:(SVN,Oracle,数据结构,C,C++)