I read the Git manual, FAQ, Git - SVN crash course, etc. and they all explain this and that, but nowhere can you find a simple instruction like:
SVN repository in: <
If you are using SourceTree you can do this directly from the app. Goto File -> New/Clone then do the following:
Open the repo in SourceTree and you'll see your commit messages have been migrated too.
Now go to Repository -> Repository Settings and add the new remote repo details. Delete the SVN remote if you wish (I did this through the "Edit Config File" option.
Push the code to the new remote repo when you are ready and code freely.
As another aside, the git-stash command is a godsend when trying to git with git-svn dcommits.
A typical process:
svn-dcommit
The solution (requires git 1.5.3+):
git stash; git svn dcommit ; git stash apply
GitHub now has a feature to import from an SVN repository. I never tried it, though.
I used the svn2git script and works like a charm.
For GitLab users I've put up a gist on how I migrated from SVN here:
https://gist.github.com/leftclickben/322b7a3042cbe97ed2af
svn.domain.com.au
.http
(other protocols should work).git.domain.com.au
and:
dev-team
.ssh git@git.domain.com.au
).favourite-project
is created in the dev-team
namespace.users.txt
contains the relevant user details, one user per line, of the form username = First Last <address@domain.com.au>
, where username
is the username given in SVN logs. (See first link in References section for details, in particular answer by user Casey).bash
git svn clone --stdlayout --no-metadata -A users.txt
http://svn.domain.com.au/svn/repository/favourite-project
cd favourite-project
git remote add gitlab git@git.domain.com.au:dev-team/favourite-project.git
git push --set-upstream gitlab master
That's it! Reload the project page in GitLab web UI and you will see all commits and files now listed.
git svn clone
command will stop, in which case, update users.txt
, cd favourite-project
and git svn fetch
will continue from where it stopped.trunk
-tags
-branches
layout for SVN repository is required.git svn clone
command stops at the level immediately above trunk/
, tags/
and branches/
.git svn clone
command produces a lot of output, including some warnings at the top; I ignored the warnings.GitHub has an importer. Once you've created the repository, you can import from an existing repository, via its URL. It will ask for your credentials if applicable and go from there.
As it's running it will find authors, and you can simply map them to users on GitHub.
I have used it for a few repositories now, and it's pretty accurate and much faster too! It took 10 minutes for a repository with ~4000 commits, and after it took my friend four days!