When your engineers collaborate, they depend on software systems to make that job exponentially easier. Without such solutions, they’d have considerably more tasks on their plate, a workload that would slow down their activities to the point where delivering software on time would be problematic. Your company can’t suffer such setbacks. That’s where version control comes into play.
What is version control?
Simply put, a version control system is a category of software created specifically for software development teams to effectively track changes in source code. Imagine you have 20 developers working on a large software project for your company. Those 20 engineers are all working with the same Java project, making daily changes to the code.
Without version control, it would be next to impossible to track the changes that are added to the code, who made them, and when they were made. It would also be next to impossible to roll back changes, merge the ones coming from multiple developers, and check out code such that other engineers couldn’t overwrite what one developer was currently adding.
With that said, let’s take a look at the version control systems you should consider for your developers.
Without a doubt, Git is the single most popular version control system in use. Not only does Git offer the strongest feature set for developers, but it also has the most reliable workflow and is supported by the most third-party platforms on the market.
One of the great things about Git is that it can be used on nearly any platform and with numerous repository systems. You can work from a local repository, one within your LAN, or any number of third-party repositories (such as GitHub). Git also includes features like:
- Support for non-linear development
- Compatible with protocols like HTTPS, FTP, and SSH
- Can work with small and large projects
- Supports branching
- It’s lightweight and fast
- Viewable commit history
- Issue tracking
- Email notifications
- Pluggable merge strategies
- Toolkit-based design
- Periodic explicit object packing
- Garbage accumulates until collected
- Third-party GUI tools available (such as GitKraken)
Although Git is a command-line tool, it’s quite easy to use, so your developers can get up to speed very quickly. Git is also free to use, regardless of how large your company is or how many engineers will work with the tool. That turns Git into a great fit for just about any company.
Apache Subversion (aka svn)
Apache Subversion is another on-premise version control system that gives you end-to-end visibility of all changes made within a project. SVN offers plenty of features that would satisfy most developers, such as:
- Conflict resolution
- Easy rollbacks
- Revision regression tracking within projects
- Easily manage different versions of tracked files
- Support for third-party tools
- Well documented
- Supports DevOps toolchain
- Very stable
- Easy backend administration
- Powerful commit search tool
- Third-party GUI tools available (such as Tortoise SVN)
The one caveat with using SVN is that it’s one of the older version control systems on the market. Some businesses aren’t quite as willing to work with older technology, but SVN is still very viable. And given you can use SVN with GitHub (using the HTTPS protocol), your engineers can collaborate with other team members, whether they’re in-house or from an offshore developer firm.
Apache Subversion is free and open-source, so it doesn’t matter how many developers you have on your team, it won’t set your budget back a single penny.
Mercurial is another open-source version control system that is free, cross-platform, decentralized, and easy to learn. Mercurial is written in Python and requires all add-ons to be written in the same language (which could be a deal-breaker for some companies).
The features found in Mercurial include:
- Scalable and performant
- Advanced branching and merging
- Fully distributed environment
- Lightweight and portable
- Simple to learn
- Familiar command-line interface
- GUI support (such as Sourcetree)
- Available commercial support
One of the most important elements of Mercurial is that it believes history is “permanent and sacred.” Because of that Mercial includes a rollback command that will undo the last pull or commit, but won’t alter anything prior. This is quite different than, say, Git, which allows you to work with the entire project history. So if you place high importance on the history of your project, Mercurial might be just the version control system you’re looking for.
Perforce Helix Core
Helix Core is the only version control system on the list that isn’t free. But if your company develops large-scale (think massive) projects, this might be the version control system best suited for your use.
That’s not to say tools like Git aren’t capable of handling large-scale projects. After all, Git is the tool used for the Linux kernel project. But with Helix Core you’re also getting enterprise-grade support (for your license fee) and a tool that features:
- Centralized database and repository for file versions
- Support for all file types and sizes
- Single source of truth
- Flexible branching support
- DevOps compatible
- Built-in diff tools
- Seamless integration with Visual Studio (via a plugin)
No matter the feature list, the biggest draw for Helix Core is that it was designed specifically for massive scale, that can handle 10s of thousands of engineers, 100s of terabytes of data, and 10,000+ commits. In fact, Helix Core is used by 19/20 of the top AAA game developer companies and 9/10 of the top semiconductor companies. So if your company is planning to develop at scale, Helix Core might be your best bet.
You can try Helix Core for free, but once the trial is over, you’ll need to speak with a Perforce representative to find the plan that fits your company’s budget and needs.
There are a lot of version control systems available. But if you select one from this list, you can rest assured your company has made a solid choice. Just be sure to do your research before you commit, because changing such a system mid-stream can be a challenge.