Version control is a well-established concept in most software languages and platforms, and is one of the key enablers for efficient Agile development. At its heart, version control focuses on one core concept: tracking changes to files over time.
Version control becomes an enabler for development teams to work faster and smarter by:
- Being a single ‘source of truth’ for the team
- Enabling parallel development streams by allowing developers to work on changes in isolation without the environment changing underneath them
- Providing tools to identify and resolve file conflicts
- Maintaining a full audit trail for every stage of the development cycle
- Facilitating collaboration and code review
- Making it easy to maintain and deploy different versions of code across test, staging and production environments
Salesforce teams who use version control release higher quality code more frequently, introduce fewer bugs, maintain better reporting and visibility, and have a better ability to roll back changes.
This translates to a better relationship with their end users, and faster project delivery. As the Salesforce modules on Application Lifecycle Management put it: “Using version control is considered to be a general best practice for software development…and ensures a quality development process."
Picking a version control system
The first step to implementing version control is choosing which system to use - a few common types are Perforce, Subversion (SVN), Mercurial and Git. Deciding which system has a big impact on the process and tools available to the team.
Luckily, it’s a simple choice for Salesforce development. In recent years, Git has established itself as the de facto version control system. Git is used by millions of developers around the world and is the recommended system for all Salesforce development teams.
Although there are many services providers for Git-based version control, there are three clear market-leaders:
All three provide a mature and effective platform for Salesforce development. Which provider to use will come down to the specific needs of the team and personal preference.
On-premise vs hosted
Most version control systems have the option of running either as a hosted service, where the provider manages the hosting and provision of the software for you, or running locally on your own systems, known as on-premise.
Hosted version control provides the greatest flexibility, stability, and ease of setup. On-premise has the advantage of more discrete data control, but that is offset against the additional cost, configuration, and infrastructure investment required to set up and maintain it.
For the vast majority of Salesforce teams, the hosted version of a version control system is the best choice. The established Git providers are trusted by some of the largest companies in the world and have extremely robust data protection and uptime policies. If opting for an on-premise solution, it is worth considering the additional costs and how access to hosted systems, such as Salesforce or Gearset, will be managed through corporate firewalls.
Gearset supports connections to both hosted and on-premise version control systems.