Git a Grip: Version Control
Version control is absolutely required for collaboration, troubleshooting, and following an iterative development process. Think of it as the code version of “Track Changes” in a word processor: It establishes a history of the development work on the project.
With proper version control, any developer can go back and see what changed from iteration to iteration. Most importantly, multiple developers can work independently and merge their changes together without creating a nightmare of tangled code.
Without version control there’s no good way to collaborate across multiple instances of an application. You’d be limited to one developer working at a time, while the rest line up and wait for their turn. It’s either stunningly inefficient or a logistical nightmare.
Cristina D’Anni, Director of Development & Design, Targeted Victory
The importance of version control comes down to three words: collaboration, accountability, and security.
Without using version control, the risk of inadvertently destroying another developer’s hard work is real and rolling back changes can be extremely cumbersome and difficult. And that’s assuming you can figure out exactly what caused an issue without commit messages to refer to. With version control in place, our team can focus on different parts of client sites without the risk of damaging another’s work.
For Targeted Victory, having the security and accountability in place is extremely important. We manage well over 100 active websites with multiple developers working on multiple projects at any one given time. Version control allows us to maintain standards without stepping on one another’s toes.
Version Control Software
It’s clear your team needs version control to realize its full potential. There are a few options out there for version control tools, but the one you’re most likely to use is Git.
Git is open source, fast, stable, and has a huge ecosystem of tools and utilities. It is also a distributed system (vs older “centralized” models), which makes it more collaboration-friendly. There are several popular hosts of Git repositories to choose from with customized features, including Bitbucket, GitHub, and GitLab.
Some agencies might use Subversion SVN, which is used for WordPress core development. SVN is a centralized system so the version control server is the canonical source of code. It uses an older “centralized” model sometimes preferred by enterprise, government, etc. entities seeking more control over the code. You may encounter it working with clients, but it’s not likely to be a go-to choice for a new implementation.
There’s always the chance your client might have their own proprietary system. In that case, it’s best to move the code out to your system for development, then put it back after QA.
A team needs to get really good at working together, and switching up version control systems and patterns between projects will make that a constant hassle. In general, unless you have a legacy investment in another platform, some implementation of Git will suit your needs. It's faster, technically superior in terms of merging and other features, and has a much larger ecosystem of tools, utilities, examples, and experts.
Ken Rickard, Director of Professional Services, Palantir
Version control helps team collaborate. It captures the history of everyone’s work and let’s the team review changes together. If you aren’t using version control, you risk missing mistakes before they hit the live site. Conversely, version control makes it easy to rollback to trusted code when errors do occur. We use a pull-request workflow—no new code gets deployed to a client site until it has been reviewed by at least one other person.
If the client is dictating the version control system and it's not your agency’s standard, it’s important to build that into the project as a risk factor. Either you're managing some translation, or you're having your development team work with unfamiliar tools. Both are a pain, and you need to increase the timeline and the budget accordingly.