Monetate’s software engineers use Git for version control, and up until very recently, we had been using it in combination with Subversion, aka SVN.

Basically, our central, authoritative repository was kept in SVN, and we would  dcommit and rebase to keep our master branches in sync with that repository.

Of course, working with two different version control systems is more complex than working with just one, so we decided to simplify the process and eliminate our dependence on SVN.

We recently moved our codebase to GitHub, which is well known for freely hosting open-source projects but which also offers private hosting for businesses.

The transition

Previously, all of our code was held in a single repository.  There was no dead-simple way to filter for, say, only frontend commits or only backend commits.

We decided to split up the codebase into two separate repos, which required some prep work to make sure that we were not going to lobotomize our code.

Once we determined that we could safely make the split, we instituted a short code freeze at the end of the workday so that no commits would be lost during the transition.

We cloned our existing repository and did some slicing and dicing to remove the portions of the codebase that we weren’t going to carry over.  We then separated out about 7,000 commits (from about 16,000 total) using git filter-branch.

We were up and running the next day with no hitches. A couple of weeks later, we transferred the other repo using the same method.

Why we like GitHub:

  • Several of us had used it before for open-source projects, so we were familiar with it.  That meant that the learning curve wasn’t as steep as it might have been with another provider.
  • We occasionally use freelancers to do contract work, and setting them up on GitHub is a lot easier than with our old system.  Plus, since it’s a well-known code-hosting service, they’re likely to be familiar with it already, which reduces the learning curve.
  • The ability to post inline comments on specific lines of code is a big improvement on our previous code-review system, which mostly involved creating new code-review branches with comments added to the actual files we were reviewing.
  • Previously, we had to do a few syncing steps before we dcommitted to our SVN repository.  GitHub’s auto-merging pull requests are a lot simpler.
  • Many diff tools highlight a line of code when something in that line has changed.  GitHub’s diff tool goes one step further: It highlights both the line that has changed and the individual characters that make up the change.
  • GitHub offers the ability to create wikis, which worked out nicely, because we had already been considering moving our internal documentation to a wiki format.
  • GitHub offers a GUI for Mac users — called, appropriately enough, GitHub for Mac.  While not as full-featured as, say, GitX, it does allow you to perform common tasks such as committing and syncing with a click of a button.
  • GitHub and Monetate are a lot alike: We were founded about the same time, we have about the same number of employees, we’re both growing rapidly, and we both have a healthy appreciation for beer.