Git For The Stubbornly-Resistant Organization

Brian Panulla
Business Intelligence Developer, PropertyRadar

How do you make it appealing to your team to move to Git? Most teams are already using some sort of version control — Brian’s group was entrenched in Subversion. But SVN had its pain points. Everyone checks out the full trunk (in Brian’s case, about 1.5GB!), and no one was really branching appropriately.

Git came with the promise of offline commits, and easier ways to manage modularized code projects, but developers were used to SVN. Git’s warts were legion: it was really only accessible to power users who had the patience to learn the difference between git pull and git fetch, and at the command-line, those are easy to mix up! No one could agree on rebasing versus merging. And it’s pretty confusing when your branch is both ahead and behind at the same time.

Serendipity came when their team was working with a contractor. Most tech contractors expect to be using Git. But when you stop working with a contractor, and find that they did a year’s worth of work with no SVN checkins — but there were plenty of Git checkins — it makes using Git pretty important. They didn’t really have a choice but to use Git, but that was the breakthrough to get the opportunity to push Git into the group’s workflow.

A good way to begin a transformation is to take a three-step process: Refactor, Pilot, and Convince.

Refactor: Stop people from checking out the entire trunk — just check out what you need! The advantage is, you don’t have the entire codebase. Look for opportunities to start splitting your repository, on a project-by-project basis. Modularizing means you don’t need a 1.5GB checkout.

Pilot: Identify a small project, and one or two other developers who are interested in Git, and make something happen. When others see the advantages, they are going to be more likely to do the work to make the transition.

Convince: Use your pilot to demonstrate to management that there is added value. You can overcome the requirement of migrating all at once by pulling out modules one at a time.

Some ideas include pulling out your themes for mobile clients, APIs, and database schemes.

You have opportunities to make other decisions, including how you will host your Git GitHub? Self-Hosted? BitBucket? Kiln? GitLab Hosted? Whichever you choose, don’t just check out your SVN repository and check it into Git — migrate as much of your history as possible.