A functional branch is a branch used to represent logically
discrete unit of functionality. If it is for a feature or an enhancement,
we call it a
Feature Branch (E2.1);
if it is for a bug-fix, we call it a
Bugfix Branch (E2.2).
Since functional units often map to work-units, a functional branch is
often an activity branch too, but not always.
A build, or a system integration might be a logical unit of work, but
typically not of functionality.
A component branch is a branch or codeline that is primarily
intended for work on a specific component of the system. It might be
a lone module, component, subsystem, or an entire product within a
multi-product project. The patterns
Component Line and
Staged Integration Lines
make use of component branches.
A project branch is a branch or codeline that represents a
separate line of development for a particular (sub)project which comprises
multiple tasks or activities. It is essentially an
activity-branch for a task consisting of
multiple discrete activities (or subtasks). Related patterns are
Codeline per Release, and
A development line is a codeline upon which development (changes)
takes place and which may or may not include maintenance efforts. In the
broad sense, it includes maintenance; in the narrow sense, it is only for
"new" development. Related patterns are
Parallel Maintenance/Development, and