About branches

A branch is a separate line of development that uses an existing repository and the files in that repository as a starting point. When a repository is branched, the files in both branches are initially identical. As file contents change, the branched files become dissimilar. Use branches when you need to make changes to source files without affecting files in the existing repository. When you branch a repository, changes can be promoted to, or rebased from, associated branches. Surround SCM includes four types of branches: mainline, baseline, workspace, and snapshot.

Mainline branch

A mainline branch is the highest-level branch that contains all source files, labels, other branches, and repositories. The Surround SCM administrator is generally responsible for creating mainline branches. All files saved to a specific Surround SCM server are stored in a corresponding repository.

Admin: The Surround SCM administrator is generally responsible for creating mainline branches. At least one mainline branch must be created before source files can be added to Surround SCM.

Baseline branch

A baseline branch is a public branch. Allowing checkouts on a baseline branch lets all users directly check out and make changes to the baseline code. Changes made to the baseline branch affect everyone who accesses that branch.

Workspace branch

A workspace branch is a private branch. It is used to track and isolate changes made by users. Users create their own workspace branch. The branch a workspace is created from is its parent branch. Other users are not affected by any changes that are made because the work is being done in a private, workspace branch. When a user finishes making changes, changes are promoted from the workspace branch to the baseline, or parent, branch. Changes can also be rebased from the baseline branch to a workspace branch.

Snapshot branch

A snapshot branch is a static branch of a baseline branch that generally corresponds to a project milestone, such as a QA build or final release build. Most Surround SCM commands are disabled in snapshot branches. You cannot check out, check in, or merge files into a snapshot branch. Create a snapshot branch when you need to be able to tell exactly which versions of files went into a build. You can create a snapshot branch based on the latest file version or a specific label or timestamp.