A merge directive, sometimes called bundle, is a file with set of things that acts as a machine-readable merge request of a branch into another branch.
A merge directive contains:
- a machine-readable description of the merge to perform
- an optional text patch that is a preview of the changes requested
- an optional bundle of revision data, so that the merge directive is self-contained and changes can be applied directly from the merge directive, without retrieving data from a branch.
Merge directives can be thought of as more powerful patches. Merge directives can express operations impossible to express using plain patches. For example renames or past commits are preserved when merging changes using merge directives but are lost when patches are used to distribute changes.
Merge directives are produced by bzr bundle. bzr send can be used to mail merge directives to the branch authors or to an automatic gatekeeper like PQM. Merge directives can be merged manually with bzr merge.