Version Control System

All source materials used to create and distribute products or customizations are kept under some form of version control with a history of changes.

Version control is a system that records changes to a file or set of files over time so that you can recall prior states. You can compare changes over time, see who last modified something that might be causing a problem, who introduced an issue and when, and more.

Another aspect of version control, branching, allows for parts of software to be developed in parallel. Using branches, contributors can isolate changes without destabilizing the codebase. Developers can safely repair defects, create new features, and work on other modifications. These changes may be later merged (resynchronized) into another branch or the main line of development. The main line of development is often referred to as the trunk. 

Version control plays an essential role in a continuous delivery toolset. The toolset is designed to detect problematic changes as soon as possible. With version control, we can identify the exact nature of the change and then take appropriate action. 

Version control enables several other capabilities, including a technical change log. Without version control, collaborating on a large software system is simply not possible. 

There are several version control systems that you can host on premises or in the cloud. 

What you need to decide

  • Git or something else?
    • Today most teams choose Git as their version control system, including teams using Visual Studio.
    • There are other choices, but you can safely choose Git unless there is another consideration.
  • Cloud or on premises?
    • Not long ago, hosting version control off-premises was unthinkable.
    • Today, there are several trusted cloud options, including Bitbucket, Visual Studio Team Services, and AWS CodeCommit. 

Your choice of issue tracker can help drive your version control choices, and you may want to consider both in tandem. 

A very important capability is traceability – linking individual changes to tracked issues so that you can trace from one to the other.  

Resource Checklist

  • Select a version control system, such as Git.
  • Select a hosting option - on premises or a cloud provider. 
  • Select a branching model (see Related Topics).
  • Ideally, align your version control repositories with your issue tracker projects. 
  • Link each commit to a tracked issue for traceability. 
  • Place all assets under version control so that your solution can be compiled by a build server. 

Related Topics 

Tools Mentioned

See Also 

Please submit feedback to the DreamOps Success Group http://dreamops.org/group.