Yes you can if you use
“I don't think there is a way to convert the subversion information into Git information.”
Nope… Yes you can! Just use the
snv2git Ruby GEM:
“svn2git is a tiny utility for migrating projects from Subversion to Git while keeping the trunk, branches and tags where they should be. It uses git-svn to clone an svn repository and does some clean-up to make sure branches and tags are imported in a meaningful way, and that the code checked into master ends up being what's currently in your svn trunk rather than whichever svn branch your last commit was in.”
Here is how I use it: There are two initial major steps and one after-conversion step:
- Map the authors from Subversion to Git format.
- Convert the Subversion repo to a Git repo.
- Checkout the
trunk branch in the converted Git repo.
Step 1: Prepare the Subversion author list map file for Git usage.
While the Subversion repository to Git repository process is pretty clean, the one thing you need to do before you start is to map the user names from the Subversion repository to something that matches users in the Git repository. Here is how you would do this.
First, in the Subversion cloned directory, run this command to get a list of authors connected to the Subversion repository:
svn log --xml | grep author | sort -u | perl -pe 's/.*>(.*?)<.*/$1 = /'
Take that output and place it in file called
svn-authors.txt like this:
And edit that file manually to map those users to their Git equivalents like this:
userone = User One <firstname.lastname@example.org>
usertwo = User Two <email@example.com>
svn-authors.txt and move onto the next steps.
Step Two: Create the new Git repository and run the conversion.
Create a directory of the new Git repository:
Go into that
Now, create a Git repository in that directory:
Make note of the source Subversion repository URL:
svn2git within the Git repository directory to let the magic begin:
svn2git https://svn.example.com/repo/Some-Project/trunk/ --authors svn-authors.txt --verbose --rootistrunk
Note the placement of the Subversion repository URL and the
svn-authors.txt text file in that
Step Three: Post-conversion cleanup.
Now checkout the
trunk like this:
git checkout trunk
The directory should be filled up with Subversion content now. Tweak and adjust content as needed.