Friday, 3 February 2017

Transfer svn repos to git

(based on the experience of following: )

required: yum install wget git java git-svn

In the svn repos get the URL of the repository:

: svn info

Get the ids of all users who have committed work to the repository:

svn log --quiet | grep "^r" | awk '{print $3}' | sort | uniq

on the 'transfer machine' setup ssh access /access to your svn repos. For example if using ssh auth create a local user


then create ssh keys for that user:

ssh-keygen -t rsa

and copy the file onto the svn server and cat  >> authorised_keys file

su -

cd ~/home/

download the transfer script:


The migrations:

Test the you have the libs and if not install / upgrade

java -jar ~/svn-migration-scripts.jar verify

if all okay

generate an authors file. I hand crafted mine:

jb1 = Joe Bloggs < >

Then clone the repo (we used the standard trunk / branches/ tags layout):

git svn clone --stdlayout --authors-file=authors.txt svn+ssh:// [your git repo name]

then see what there is totidy up:

cd [your git repo name ]

java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git

java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git --force

when happy create the repo on bitbucket (if not already)

prepare to send:

git remote add origin https://[git user][gitowner]/[your git repo name].git

git push -u origin --all

bish bash!


For some reason your svn repo does not have tags or branches dirctories. The script will complain eg:

in [your git repo name]/.git/config

add to the section
[svn-remote "svn"]
    branches =
    tags =  

No comments:

Post a Comment