### Migrating SVN content from one hosting to another (svnsync) ###


Recently, I migrated one of my OSS projects from SourceForge to OSDN. This
required migrating the SVN tree with its entire history. I initially thought
this would be either very difficult or impossible, but then I learned about
svnsync.

The svnsync utility is a specialized tool that is able to synchronize one svn
repository to another, preserving the original commits with their proper
timestamps, authors, etc. The operation turned out to be very easy.

1. Allow revision properties to be modified on the target repository. On a
   vanilla SVN server this would require to create a 'pre-revprop-change' hook
   that exits with a 0 return code.
   On the OSDN hosting it is as easy as setting up a single checkbox named
   "Allow to modify revision properties for projects members" in the
   Subversion admin screen.

2. Initialize the target repository. This will set up the target repository so
   it knows what is the original location of the code:
   $ svnsync init svn://svn.osdn.net/svnroot/amb svn://svn.sf.net/p/amb/code
   Copied properties for revision 0.

3. Execute the synchronization - this will clone every commit made on the
   source repository to the target repository:
   $ svnsync synchronize svn+ssh://mateuszviste@svn.osdn.net/svnroot/amb
   Committed revision 1.
   Copied properties for revision 1.
   Transmitting file data ...
   Committed revision 2.
   Copied properties for revision 2.
   Transmitting file data ..
   Committed revision 3.
   (etc)

   The above step may take a while, it's hard work.

4. Disable revprop modification on the target repository.


All done! Now, it is possible to checkout the new repository and use it as
the new location for the project's source code.

$ svn co svn+ssh://mateuszviste@svn.osdn.net/svnroot/amb/ amb