Branching (software)

From Wikipedia, the free encyclopedia

Jump to: navigation, search

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.

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). A branch not intended to be merged (e.g. because it has been relicensed under an incompatible license by a third party, or it attempts to serve a different purpose) is usually called a fork.

Branches are created for various reasons. These are covered in depth in the paper "Streamed Lines: Branching Patterns for Parallel Software Development" by Brad Appleton, Stephen Berczuk, Ralph Cabrera, and Robert Orenstein.

Branches are also known as trees. In some distributed revision control systems, such as Darcs, there is no distinction made between repositories and branches - so in these systems, fetching a copy of a repository is equivalent to branching.

The branch that a new branch has been forked from is sometimes called the upstream branch, or simply upstream - especially if the branches are maintained by different organisations or individuals.

A development branch or development tree of a piece of software is a version that is under development, and has not yet been officially released. (In the open source community, the notion of release is typically metaphorical, since anyone can usually check out any desired version, whether it be in the development branch or not.) Often, the version that will eventually become the next major version is called the development branch. However, there is often more than one subsequent version of the software under development at a given time.

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".

In cvc, an open source package building system (incorporating a simple revision control system for packages) produced by rPath, a shadow is a type of branch which is designed to "shadow" changes made in the upstream branch, to make it easier to maintain small changes.

Advanced Search
Included Web Search Engines


Safe Search

close

Top Matching Results

Occasionally Search.com will highlight specialized results that are based on the context of your query. Examples of specialized results include specific links to news, images, or video.

Top Matching Results may highlight information from other Search.com pages, content from the CNET Network of sites, or third party content. The listings are based purely on relevance. Search.com does not receive payment for listings in this section but our partners that provide this data may get paid for listing these products.

Sponsored Links

This section contains paid listings which have been purchased by companies that want to have their sites appear for specific search terms and related content. These listings are administered, sorted and maintained by a third party and are not endorsed by Search.com.

Search Results

Search.com sends your search query to several search engines at one time and integrates the results into one list which has been sorted by relevance using Search.com's proprietary algorithm. You can customize the list of search engines included in your metasearch from the preferences.

The search engines that are used in your metasearch may allow companies to pay to have their Web sites included within the results. To view the Paid Inclusion policy for a specific search engine, please visit their Web site. Search.com does not accept payment or share revenue with any search engine partner for listings in this section.