Friday, May 6, 2011

The Git/Subversion Impedance Mismatch

I'm beginning to think that the people who designed Git, and many of the people who routinely agitate for it, have never used Subversion. Yesterday, I spent some time trying to figure out how to convert our Subversion repository to Git, and discovered a pretty big disconnect with how Git is used and how Subversion is used.

Our Subversion repository hosts many projects. All the ones of importance follow tags/branches/trunk convention. So the repository is laid out like this:

  • Subversion Root
    • Project 1
      • branches
      • tags
      • trunk
    • Project 2
      • branches
      • tags
      • trunk
I've seen many a Subversion repository laid out like this. Yet, none of the myriad of Git import tools can comprehend this structure. And the reason seems to stem from the fact that Git usage revolves around one Git repository per project. And now I know why people talk about hosted Git solutions instead of doing in-house hosting: because there is extra overhead with Git just to create a new project.

Until I can get this sorted out, we will have to continue with Subversion. Which I don't think is such a big deal. Even sharing code among developers with Subversion isn't that difficult if you know how to use the Subversion commands properly.

0 comments:

Post a Comment