| ### 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://[email protected]/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://[email protected]/svnroot/amb/ amb | |