Merging multiple svn repositories
Posted Fri, 16 Mar 2007
Over the past several years, I've used mainly CVS. I tried switching to
subversion, which has been slow-going. To speed that process, I merged all of
my repositories together into one svn repo. I also used cvs2svn.py to convert
everything in cvs to svn, which put everything into /trunk/ in the repository -
not what I wanted. A simple script fixes that:
repo=file:///path/to/repo svn ls $repo/trunk | xargs -I@ -n1 svn mv $repo/trunk/@ $repo/@
I used svn poorly at first - one repository per project. To fix that, I needed to dump all of them (with svnadmin) and load them into a central repository:
# svnadmin dump all of my svn repositories repodir="/home/foo for i in $repodir/SVN/*; do echo $i; svnadmin dump $i > $(basename $i).dump done
# load all of my dumpped repositories into the new one repo="/home/foo/NEWSVN" svnadmin create $repo for i in *.dump; do proj="$(echo $i | cut -d. -f1)"; svn mkdir -m "mkdir $proj for import" file://$repo/$proj svnadmin load --parent-dir $proj $repo < $i done
Thanks, Colin =)