Subversion Commit & Branch Policy

Purpose

Subversion does not define any standards for the structure of a repository, nor does it provide explicit branching or tagging facilities. However, it does provide analagous behavior in the form of copies and merges. Because these operations are so flexible, it becomes necessary to provide a commit and branch policy. Without policy, the repository can rapidly fall into chaos.

The guidelines outlined below should be used at all times. They provide adequate source control, while still maintaining a consistent "trunk" revision.

Style of this Document

All files are referenced with a root directory equivalent to the base directory of the repository.

File paths will be referenced using a fixed width font. Examples: /A/Unix/Path, C:\A\Windows\path

Scalar variable references (akin to Perl or shell scripts) will be used to demonstrate variable text. Example: variable text

Directory Structure

Subproject Directories

/subproject/
Each component directory will hold a separate part of our project. Subprojects include documentation, each component as outlined in the requirements document, and the website.
/subproject/trunk/
The trunk directory holds the core of each subproject. Code contained within the trunk should compile without errors at any time. All branches apply to the trunk directory of each subproject.
/subproject/branches/
The branches directory holds all of the branches for a particular subproject.
/subproject/branches/feature/
Branch directories hold feature updates against the trunk. They should be named appropriately for the feature they contain. All development which affects more than one file should occur within its own branch. When the feature is complete, it can be merged with the trunk directory. After a merge is successful and it is validated that the trunk compiles, the branch directory may be deleted. More information about how to merge and branch is available within the Subversion handbook.

Tag Directories

/tags/tagname/subproject/
When snapshots of development need to be created, those snapshots will be created in the tags section. The tags section is write-once. Tagged files should not be edited.

This site hosted by: SourceForge.net Logo