git-svn➔ Slow...➔ Didnt handle shallow merges well.➔ Our old branches didnt map well.➔ Works fine for small repos.➔ Not right for our repo.
svn-all-fast-export➔ Faster.➔ Direct access to git from C libs.➔ Easier to configure.
svn-all-fast-export# rulesmapcreate repository bigcommerceend repository match /trunk/ repository bigcommerce branch master end match...match /branches/([^/]+)/ repository bigcommerce branch 1end match...match /tags/7.3.23/ repository bigcommerce branch refs/tags/7.3.23 annotated trueend match
svn-all-fast-export# svnauthorsanna.pomroy = Anna Pomroy <firstname.lastname@example.org>chris.beckett = Chris Beckett <email@example.com>chris.boulton = Chris Boulton <firstname.lastname@example.org>...# import commandsvnallfastexport identitymap svnauthors rules map addmetadata /var/svn/bigcommerce
svn-all-fast-export➔ Problem: Post migration branch amnesia. Only affected some branches.➔ Solution(s): Patch from the original svn branch. Rebranch in git, resolve lots of conflicts and pay close attention!
svn-all-fast-export➔ Problem: Wrong revision used to create a branch on import.➔ Solution: Fix it in the source & submit a patch! Check & double check...
Identified issues➔ svn:ignore. Create .gitignore➔ Empty directories. Fill with .empty files➔ Commit hooks. Use gitty for hook management.
Unidentified problems➔ ”Time & tide waits for no man”. We were fixing the deployment system ”Octopus” on the day. Last minute cherry-picks to tags/branches to get them working.
Why did we do it? ”...what if anything is ”I miss my git blocking us from switching to git forstaging area already” source control?” ”Maybe we should ”f**k; I keep evaluate git more” typing git status”