Change Propagation Queues

Synopsis::Establish a schedule of changes to be propagated between codelines.

Intent
Provides an orderly mechanism for propagating changes between codelines.

Motivation
Using patterns like related pattern::Parallel Maintenance and Development Lines or related pattern::Overlapping Release Lines may require a mechanism for orderly propagation of selected change between the codelines.

Applicability
are used in conjunction with other codeline patterns.

Also known as
also known as::Change Migration Queues, also known as::Change Transfer Queues

Structure
Each change on the source codeline is noted and it's dependencies are noted. When determining the set of changes to propagate to the target codeline the dependencies between source codeline changes are examined.

There are several mechanisms that can be used to implement. Once change sets are established they can be related to one another, sometimes in the same tool but an external database can be used also. These relationships are used to create the change queue, ensuring that changes are propagated in an orderly fashion.
 * 1) A change control system may be used to track individual modifications in the version control tool.
 * 2) A version control tool may have its own change sets (also known as change tasks or change packages) that collate multiple modifications as a single change entity and sometimes these change sets can be related to one another.
 * 3) Home-grown scripts (or for some tools Triggers) may be used to collate changes into change sets.

Consequences

 * Changes propagating between codelines can be properly ordered and progressed.
 * Change dependencies may limit (delay) the propagation of dependent changes.
 * If using the PYOC pattern, propagation queues mitigate problems with users incorrectly propagating other user's changes.
 * As always, using a roll-your-own solution carries a commensurate cost of development, testing, and maintenance.

Related patterns
The following patterns are variants of the pattern.
 * variant pattern::Auto-Propogation and Queuing

The following patterns are related to the pattern.
 * related pattern::Parallel Maintenance and Development Lines
 * related pattern::Overlapping Release Lines