Classic Movies and Books

Learn Software Development

All about the processes involved in software development

Search this site
Google
 

What is branching ?

Filed Under Coding, Terms, Process, Development | Posted on December 27, 2007




Branching, in revision control and software configuration management, is the duplication of an object under revision control (such as a source code file, or a directory tree) in such a way that the newly created object has initially the same contents as the version branched off from, and (more importantly) development (creation of new versions) can happen in parallel along both branches. A branch is an agreed split in path of an item [item, product, or system] into 2 paths. Each path can maintain independent changes to the configuration item(s).
Branching is integral to version management, software build correctness, and release management. It enables parallel development of a new system and provides concurrent support of multiple releases by labeling each instance of a branched configuration item and establishing a mapping between the label and the module revisions. Some revision control systems have specific jargon for the main development branch - for example, in CVS, it is called the “MAIN”. A more generic term is “mainline”.
The basic concept of a branch: A line of development that exists independently of another line, yet still shares a common history. A branch always begins life as a copy of something, and moves on from there, generating its own history. Software branching is commonly seen when adapting one software product to different environments or targeting customers in software industry. Branching also generally implies the ability to later merge the differences accrued to an object on a branch back onto its parent branch. Often the changes are merged back to the trunk (even if this is not the parent branch).


Leave a Reply