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 can I delete all unversioned/ignored files/folders in my working copy?
  • Treeview for svn commits
  • Subversion E160004 X's root node's predecessor is Y but should be Z
  • SVN update: 'skipped' message
  • Git push synchronization between team members
  • Can GIT, Mercurial, SVN, or other version control tools work well when project tree has binary files?
  • svn to perforce migration
  • Cound not check out svn with xcode 5 and Xcode Crashes if enable svn
  • svn list of files that are modified in local copy
  • How do I fetch a single branch using Git SVN fetch?
  • How to get the SVN revision number in certain Date or date range
  • How to debug something in TortoiseSVN?
  • 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.