Converting a Large SVN Repository Segment into a Git Repository
PC/Etc
2013-08-30 10:51 (12 years ago)

Prerequisites
- There is a large SVN repository, and one of the directories within it is the source code directory. The other directories contain documents and mysqldumps.
- We have been operating by performing an SVN checkout and updating only the source code directory.
- We want to migrate to Git.
- However, the directories other than the source code directory are large in size, so we do not want to include them in the repository.
What We Tried
- git svn clone -s --prefix svn/ http://my-svn-server/svn/myproject/ myproject
→ This results in a huge myproject repository that includes documents and mysqldumps.
- git svn clone -s --prefix svn/ http://my-svn-server/svn/myproject/source/ myproject
Using higher level of URL: W: Ignoring error from SVN, path probably does not exist: (175002): RA layer request failed: REPORT of '/svn/myproject
This error appears, and the clone cannot be completed.
How to Achieve It
First, clone the repository as is.
git svn clone -s --prefix svn/ http://my-svn-server/svn/myproject/ myproject cd myproject git svn create-ignore git commit -m 'add gitignore'
At this point, take a full copy of the local repository.
cd .. cp -r myproject myproject_work cd myproject_work
Use git filter-branch to keep only the commits for the source code!
git filter-branch --subdirectory-filter source HEAD
Remove unnecessary directories (optional).
rm -rf my-documents rm -rf my-mysqldumps
The repository is now complete. Push it.
git remote add origin my-remote-repo git push origin master
When there are updates to the SVN repository If the SVN repository is updated, perform a git svn rebase in the repository before filter-branch, and then follow the same steps to incorporate the changes into the Git repository.
cd .. rm -rf myproject_work cd myproject git svn rebase cd .. cp -r myproject myproject_work cd myproject_work git filter-branch --subdirectory-filter source HEAD rm -rf my-documents rm -rf my-mysqldumps git remote add origin my-remote-repo git pull origin master git push origin master
Current rating: 3.0 (1)
The author runs the application development company Cyberneura.
We look forward to discussing your development needs.
We look forward to discussing your development needs.