How do I dump one project out of an SVN repository which contains multiple projects?

I am working with an SVN repository with many projects. I need to move a few of the projects out of that repository into individual repositories, one for each project, keeping the history.

I’ve been able to use svnadmin dump to dump the entire repository and svnadmin load it into another repository, but I can’t find a way of dumping only one project from the original repository so I can load it into the new one. Is this possible? If so how?

  • How to backup and restore all the source code in svn?
  • Git format-patch to be svn compatible?
  • username & password is not prompted while accessing the SVN repos. I can directly access the URL
  • Is the only way to list the “live” revisions of a particular SVN path “svn log -q -v” plus a filter?
  • SVN URL Format
  • How to deal best with SVN and local changes, that should not be committed?
  • What to do when 'svn cleanup' fails?
  • Cound not check out svn with xcode 5 and Xcode Crashes if enable svn
  • Does ClearCase fit our development process?
  • git Include a file but have its changes untracked
  • How to include Subversion revision number into Delphi project
  • Relative paths for git-svn SVN authors file?
  • 2 Solutions collect form web for “How do I dump one project out of an SVN repository which contains multiple projects?”

    You can use the svndumpfilter utility to do this. The SVN book has a good explanation of how to do this.

    For instance, one way would be:

    
    $ svnadmin dump /path/to/repo 
         | svndumpfilter include /proj > dump-file
    $ svnadmin create /new/proj/repo
    $ svnadmin load --ignore-uuid /new/proj/repo < dump-file
    $ svn rm file:///path/to/repo/proj
    

    Just an small addition to @Avi answer and @Kit comment.

    If you use svndumpfilter, you may lose a commit that is necessary for loading the repository (source).

    In my case:

    cat dump | svndumpfilter --drop-empty-revs --renumber-revs include trunk/project > project.dump 
    svnadmin load --ignore-uuid /opt/svn/newlocation < project.dump
    <<< Started new transaction, based on original revision 1 
    svnadmin: File not found: transaction '0-0', path 'trunk/project'
    

    The solution was to commit an upper directory trunk first.

    Git Baby is a git and github fan, let's start git clone.