This is an old revision of the document!


Branches are normally used in two places in FreeBSD.

First, release branches, used for taking code from HEAD and preparing for a release. These are typically under the control of the release engineer. These branches are expected to last for the lifetime of the project (not just the life time of the release).

Second, developer branches. These may be shorter lived, and provide a mechanism to allow developers to carry out intrusive changes (more intrusive than normally happen on -current) in an out-of-the-way location, prior to (probable) eventual integration back on to the HEAD.

Release branches are created using CVS' branch creation commands. Creating a branch is a time consuming operation, and also requires a tag to be laid down (a _BP tag). While this is happening the repository is locked.

Developer branches are created in Perforce, so that developer branch creation does not impact on the normal repository operation.

Subversion does not implement a first-class branch operation.

Instead, branches are treated as copies of the source directory (or file). Copies in Subversion are cheap, taking a constant time to complete, and using very little extra repository space. You can think of them as being copy-on-write operations.

Branches are presented through Subversion's filesystem interface. Accordingly, there are no special “show branch” commands, as branches appear in the filesystem.

A consequence of this is, although given a branch, you can see where and at what revision it was copied from, you can not, given the source of a branch, easily answer the question “To what locations has this directory been branched?”

XXX - talk about the probable repo layout.

  • versioncontrol/branching.1158596418.txt.gz
  • Last modified: 2006/09/18 16:20
  • by NikClayton