Subversion has been good to me. In fact I like Subversion very much. It was the first Version Control System (VCS) I learn and used, not only for my private work but for professional work as well.
Lately, I’ve been thinking of how I can access my SVN repositories from all of the devices I use to get work done. Subversion provides a client/server model, of which several server methods are available (svnserve, svnserve+ssh, Apache+mod_dav_svn). What I desire is performance-based access (low latency), so hosting an SVN-Server from my home office was not an option. I have asymmetric Internet access at home dating back to the early 2k era when it comes to uploading rates – think ~780k upload (yes that sucks).
As a note, the point about low latency has nothing to do with Subversion itself or any other VCS. The low latency comment is only about the network performance of getting to and from the repos.
While searching for what solutions exist, I inevitably came across Git and the several options associated with it, GitHub and GitLab to name a few.
The interest in Git is based on it’s inherent distributed nature as opposed to that of Subversion. To put this in context, both Subversion and Git could provide low latency access via a client/server model, however only Git could provide a distributed functionality like that not available with current Subversion releases.
In short, Git removes the network performance concern I have with it’s native architecture. Well that’s cool.
Because of this distributed nature there are several well known online Git repository services available, GitHub and GitLab. If I have no network connectivity, Git allows me to marshal-on… I like that.
GitHub is wonderful for hosting your open source project for free; that’s cool and great. On the other hand if I want to host my project code privately for free GitLab is a good choice. GitLab allows you the option of hosting your code privately for free or hosting it as open source publicly. I have accounts with both GitHub and GitLab and think both are great. For my efforts, I don’t want my code public, at least not yet or maybe not at all.
Anyway, the rest of this blog entry are my notes on moving my SVN repositories to GitLab.
Some of my old SVN repositories are in the v1.6 metadata format. When I tried to use a command (svn log…) to extract the list of users from these older metadata formats, I was greeted with a polite error message telling me things are old (grinning). I didn’t write the error message down or screen capture it; otherwise, I would post it here. The steps below are what I did next.
First: Upgrade svn metadata storage
Second: List the commit authors from the working copy log file
Third: Clone svn to git
Forth: Place at GitLab
References & Attribution
I used the following references in my efforts to move my existing SVN repos’ to Git.
- leftclickben has something up at https://gist.github.com/leftclickben/322b7a3042cbe97ed2af on moving from SVN to GitLab
- Cocoa Netics has a post at https://www.cocoanetics.com/2013/03/moving-from-svn-to-git/ that I found helpful.
- The script at GitHub, https://github.com/jneufferjr/svntogit