Branches

Branching Approach

What is a branch and why do we need them

Multi Version File Systems (MVFS) have been with us for a long time. Usually associated with version controls systems, they allow us to manage multiple versions of file system components (files, directories, etc) at the same time. I see three key things (at a minimum) that they provide:

  1. Head: the most recent part of the mainline (master) version of the file system
  2. Branches: a way to change code away from the mainline
  3. Labels: a mechanism to refer to a version of the code with a friendly name

The ability to develop code away from the mainline is a key feature for collaborative teams to work alongside each other. If you think of a MVFS as graph (specifically a Directed Acyclic Graph - DAG) with nodes and edges, where each branch of the graph is a named flow of change you can build up a mental picure of a Version Control System (VCS).

Simple VCS branch example

In the above image you can see

Artefact promotion over branch promotion

Standards

Merge to master rules