This post is from the CollabNet VersionOne blog and has not been updated since the original publish date.
Version Control Best Practices for Software Organizations
Though version control is an essential part of any software development organization’s day-to-day routine, not all teams understand how to best leverage the tools available. Whether your organization is using Subversion, Git or any other tool to protect and manage your company’s valuable software assets, there are a number of ways to maximize those investments and save your teams time and effort.
In my last post I shared some best practices for developers when it comes to using version control systems. There are also a number of tips and tricks of the trade that organizations and managers can employ to help ensure better quality products, smoother process and happier team members.
These best practices below are recommendations for the way software organizations can manage version control and create good workflow habits. By following these guidelines organizations can get the most from using version control tools and set up their teams for greater success — quicker releases and better quality products.
First off, let’s talk about source code. It is important, for obvious reasons, that everyone on the team knows how to access the source code repository or how to make changes to the software asset. Developers should be using the correct set of building blocks for each project. If critical updates had been made, those should most likely be included in various branches of the repository. Even though Git is a distributed version control tool, there should always be only one single source of truth to avoid confusion. Without maintaining these practices, collaboration gets harder and quality starts to erode.
Also, to speed users access when it comes to source code, replicate the data so that it is close to where it is needed. Replication is particularly useful when teams are geographically distributed. It is also useful to mitigate the load CI systems put on servers when verifying code changes, having a dedicated replica for CI usage eases that burden.
Source code is one of the organization’s most valuable assets and must be protected. Strict access control should be in place to keep IP safe and in the right hands. These access controls should be regularly updated as teams and roles change.
- Keep a single source of truth.
- Ensure speedy access to source code in a convenient location.
- Control access to source code.
One of the reasons version control is so essential for software development is it helps ensure quality at the source. Organizations can save time and effort by tightly integrating code reviews and continuous integration (CI) within the source code management process. By shifting these practices left in the lifecycle, teams can develop software products with fewer bugs and that are more responsive to end-user feedback.
- Integrate code reviews and CI as part of the source code management process.
You know the college nightmare that we have all experienced at least once — the one where you spend hours typing a research paper, only to forget to save and loose everything? This happens to developers also and is one of the reasons we have version control systems. No need to throw away projects and start over new. In general, it’s better to version control everything. Aside from generated content, better safe than sorry.
- Use version control for everything.
Now let’s talk about repositories and release. The key here is, the more information the better. Keeping branching strategy and release process defined simplifies workflow for everyone. Team members should not be operating with vague guidelines or they may take an action that makes the most sense to them personally, rather than the prescribed outline for the organization. By insisting on proper documentation and clear, detailed communication of strategies and process, consistency is maintained.
It will help speed up starting a new initiative if each project can self-service repositories, manage access rights and define workflows. Again, there should be a consistent and clear process in place for all users.
- Define, document and communicate all processes.
- Keep the whole team in the loop regarding branching strategy and release process.
- Speed up the beginning of projects by allowing self-service of repositories.
And finally, the best thing an organization can do to ensure team members are using version control systems properly is to invest in the continued learning of those team members. Companies should, in addition to prioritizing good documentation, organize training sessions and workshops. This will help individuals improve familiarity and skill sets with tools and processes and ultimately benefit the entire software organization.
While version control may not be the most exciting or news-worthy practice in software development, its importance cannot be downplayed. Software organizations rely on version control systems as a foundation for software creation, establishing process and workflow from the very beginning stages of the software development lifecycle. Using version control systems to ensure quality, protect IP assets and build teamwork all make the extra steps worthwhile.
If you missed my recent webinar, “Enterprise Version Control – How to Deliver Customer Value at Speed,” you can watch the recording here.