SVA Theory

This page aims to help the SVA user understand the implementation decisions that were made.

Inspiration

The layout of the repository was mostly inspired by:

Pragmatic Version Control, Using Subversion
By Mike Mason
ISBN 0-9745140-6-3

The process for creating release branches and tags is based on the one used by the FreeBSD Release Engineering Team.

Repository Layout

The directories at the top-level of the repository are considered to be projects. In each project, a very specific directory structure is maintained.

The Trunk Directory

The trunk directory is used to store the most current version of the project. There is no enforcement of the structure inside the trunk. Developers usually work on the trunk until a point in time where the source code in the trunk becomes stable. At this time, a branch of the trunk is made.

The Branches Directory

The branches directory is used to store branches made of the project. This includes release branches, bug fix branches, and experimental branches.

The Tags Directory

The tags directory is used to record a point in time for the project. This includes the time at which releases where made, or bug fix branches were created.

Branches and Tags Subdirectories

The branches and tags directories both include the following subdirectories:

Directory Description
rel For releases
bug For bug fixes
exp For experimental code

Repository Structure Visualization

 myproject:
  |
  +--trunk
  |   |
  |   +--project-files
  |
  +--branches
  |   |
  |   +--rel
  |   +--bug
  |   +--exp
  |
  +--tags
      |
      +--rel
      +--bug
      +--exp