Skip to main content
Tim's (still) not blogging

cvs2git

It seems I either don’t use this or talk about git, so here’s a git post.

We have a CVS repository that goes back to late 2004. I’ve been playing with a local git repo for almost a year and have really enjoyed being able to throw branches around without any of the fussing and manual tracking CVS or older SVN required.

I tried tools like cvs2git and its parent cvs2svn before, but I ended up with weird issues like a few files that managed to lose one change in the conversion. I could see those changes in CVS, but the resulting git or svn repo didn’t have it. Since these changes were pretty old (2007?), about half of the converted history wasn’t accurate.

Today, I tried cvs2git again, and it looks like that problem has gone away. A fresh checkout from the resulting git repo matches a fresh checkout from CVS, and the resulting history looks good. The commit IDs don’t match my local repo, but that’s to be expected because my repo didn’t have 2004-2008 history, and commit IDs are cryptographic hashes of history.

Very cool, should be fun to finally get this adopted. (For a 2-person, 2-server project.)