[Q&A] svn导出指定目录到新库

Q:如何从svn版本库中导出一个目录到一个新的版本库中,并且保存原有的commit log?

A: 基本的步骤如下:

1.从sevenj中导出整个库的内容

sevenj$ svnadmin dump /var/svn/sevenj > sevenj.dump

2.从sevenj.dump文件中过滤出要导出的目录

sevenj$ cat sevenj.dump | svndumpfilter  include /note/ > note.dump

3.把过滤后的文件重新导入到新库中

sevenj$ svnadmin load /var/svn/new –parent-dir note < note.dump

Other:

  1. svndumpfilter在过滤的时候可以对版本号进行处理:

    sevenj$ svmdumpfilter help include

    usage: svndumpfilter include PATH_PREFIX…

    Valid options:
    –drop-empty-revs        : Remove revisions emptied by filtering.
    –renumber-revs           : Renumber revisions left after filtering.
    –skip-missing-merge-sources : Skip missing merge sources.
    –targets ARG               : Pass contents of file ARG as additional args
    –preserve-revprops      : Don’t filter revision properties.
    –quiet                         : Do not display filtering statistics.

  2. svn dump文件格式:

    http://svn.collab.net/repos/svn/trunk/notes/dump-load-format.txt

  3. http://subversion.tigris.org/ 主页上有很多关于subversion的额外的小工具。

Tags:

Leave a Reply

Powered by WP Hashcash