Virtual Codeline

Synopsis::Use when a VC tool does not support symbolic branching, or the extra merging associated with branching is to be reduced.

Intent
Labels are used to provide some of the features required to manage codelines in tools that do not directly support symbolic branching.

Motivation
Some version control tools do not support symbolic branching but the notion of codelines is still required to support all but the most trivial development environments; the virtual codeline pattern addresses this problem.

Applicability
Virtual codeline pattern is used when codeline concepts are to be implemented in environments that do not support symbols branching, or where some of the merge overhead associated with branching is to be mitigated.

Also known as
also known as::Floating Label Line, also known as::Just-In-Time (JIT) Branching, also known as::Branch on Demand

Structure
Many version control tools support the concept of a label even if they do not support symbolic branches. These labels can often be used to 'simulate' symbolic branch names.

Consequences

 * Allow the use of symbolic names to refer to branches.
 * Avoids overhead of unnecessary copy-merging.
 * Requires more attention from codeline owner to ensure label is created and maintained accurately.
 * As the complexity of changes increases it becomes much more difficult to represent and track the labels and their relationships to one another.
 * It is typically easier to visualise the relationships among changes using symbolic branch names that virtual codeline labels.

Known uses
Commonly used with tools that do not directly support symbolic branching (e.g. CVS).

Related patterns
There are no known variants of the virtual codeline pattern.

The following patterns are related to the pattern.
 * related pattern::Codeline Policy
 * related pattern::Codeline Owner