A robust version control system helps a development team track files over time.
It Can Be A Horror Story
You have worked hard for two days to solve a problem on a project you are working on. On the third morning, after a good night’s sleep, you finally crack the code and achieve what you wanted to. You consider yourself a genius. With a pat on the back, you save your final code file and go for an early lunch. When you come back, you see that even though the file is there, your code is not. Someone has overwritten it. You were gone for just half an hour! Now, you have to spend more time on rewriting the code.
Oh, the horror!
Hopefully, that has never happened to you. If it did, you learned the hard way the importance of version control.
So Again, What Is Version Control?
Version control is a system that keeps record and track of documents, software programs or any other form of collection of information (Wikipedia).
A version control system has two main components
- Repository – a database of all edits stored in ‘versions’
- Working copy – an individual’s personal copy of relevant files. The repository stores only the update versions.
Version control manages the flow between the repository and working copy.
Why Is Version Control Important For You?
If you are a developer, the story above should have convinced you. As a business leader, setting up a team to customize Salesforce, it is important that you understand the benefits of having a robust version control for your team.
Agile Development: If your software project is running on agile, a version control system can help by providing proof on how the code was developed, when it was developed and by whom. ghe entire code with its change record can be accessed by the entire team which increases transparency and reduces dependencies.
Collaboration: With a strong version control system in place, all the team members can work on any file at any time without restrictions. These files can then be merged together as and when required.
Problem Solving: The system manages the directories, files, and individual changes made over time. So, whenever a problem occurs, it is easier to find root causes for mistakes or bugs. Moreover, you can literally go back in time and revert to an earlier version.
Types Of Version Control
There are two types of version control systems: centralized and distributed.
The key difference between the two is the number of repositories. The centralized system has one repository and the distributed system has one central repository and multiple repositories (usually corresponding to number of working copy workstations)
This means that, in the distributed system each user has their own version control system. The entire team can access each other’s work only when they are available in the central repository.
So, which one is better? For larger teams, the distributed system is often credited with being faster than the centralized system.
Best Practices To Follow
Large scale projects mean large scale teams with lots of developers. It is important that in order to make the best use of a version control system, certain best practices are followed across the team. Most are easy to implement. Some are slightly more complicated and need to be thought through before implementing
- Save changes and back up regularly: This is the most obvious action. However, it is surprising how many teams suffer because this is not done.
- Use a consistent and comprehensive naming convention: The file names should make sense from both a business perspective and from the actual work being done.
- Be descriptive when pushing the file to the central repository: For someone who has worked on the code, it should not be difficult to provide a quick summary of the file. It will help others understand better later on.
- Each change should have one key change for better tracking: There should not be any fear of multiple files. That’s why version controls are there. Each file saved should have a specific change to ensure easier debugging later on.
- Define access for individuals and teams for editing and reading: Streamlining this will help keeps files secure, reduce the risk of errors and allow for a better focus.
- Schedule file merges regularly: This is very important for larger teams. The more versions there are, the more difficult it will become to merge efficiently.
Version Control Service Providers For Salesforce
Although there are many services providers for Git-based version control, you can choose from any of the following for your Salesforce projects:
All four provide a mature and effective platform for Salesforce development. Your choice of provider to use will come down to the specific needs of the team and business requirement.