Replacing SVN with Git for’s code’s code currently uses SVN as the primary tool of version control hosted on the Meta SVN repo. For the last several months we have also been experimenting with Git to see if it improves the development workflow.

Currently there is a GitHub repo which is set up as the mirror of the official SVN repo of’s code. This repo is used to hold code reviews, and sync with SVN with every  new commit.

So far this setup has been a big help in making it easier to get and give reviews, therefore improving code quality. Many basic features in Git like commit, stash, branch etc have been a delight to use in place of their SVN counterparts because of Git’s decentralized nature.

At this point it’s worth discussing removing SVN altogether, from at least the local development flow. Right now the process is prone to errors, not easy to set up, and has an extra step of manually syncing Git with latest changes in SVN.

New proposed process

It seems like a good idea to change the version control system as follows:

  1. Make the Github repo the primary destination for code reviews. It will be configured on the local system of whoever wants to contribute to’s code, and will be the primary place to work and develop.

  2. Keep SVN as part of the release process. That is, whenever code is deployed changes will be synced from Git to SVN and start the deploy process. This process will be manual (or at least will be triggered manually) and SVN will be used only as a release tool (i.e. aim is not to preserve commit metadata like author, commit message etc). This approach has two main benefits:

    1. No changes to deploy scripts will be necessary to use Git. These script are used while pushing code from latest SVN revision to’s server. They would continue using SVN as before.

    2. No dependence on an external tool in order to deploy changes. For example, Github going down will not affect us in case we want to push an emergency fix.

Commits with their authors have already been imported from the SVN repo into the Github repo.

Share your thoughts

Do you have any technical concerns about moving from SVN to Git? Do you suggest any changes to the process?

If the development process is indeed changed, it might be a good idea to also think about importing issues from Meta Trac to Github that are reported for and its components. Do you have any concerns about importing issues into Github, or should they continue to exist in Trac?

Please leave your suggestions and feedback in a comment on this post.