Sample Repository Layout

The layout is as follows:

project\
|
+-- trunk\
|
+-- branches\
|   |
|   +-- feature\
|   |   +-- feature_name\
|   |
|   +-- release\
|   |   |
|   |   +-- v1.0\
|   |       |
|   |       +-- alphas\
|   |       |   +-- v1.0.0_alpha-1\
|   |       |
|   |       +-- betas\
|   |       |   +-- v1.0.0_beta-1\
|   |       |   +-- v1.0.0_beta-2\
|   |       |
|   |       +-- release_candidates\
|   |       |   +-- v1.0.0_rc-1\
|   |       |
|   |       +-- releases\
|   |       |   |
|   |       |   +-- v1.0.0\
|   |       |   |
|   |       |   +-- v1.0.1\
|   |       |
|   |       +-- maintenance\
|   |           |
|   |           +-- v1.0.1\
|   |
|   +-- developers\
|       +-- name\
|           +-- anything\
|
+-- tags\
|   |
|   +-- v1.0\
|       |
|       +-- alphas\
|       |   +-- v1.0.0_alpha-1\
|       |
|       +-- betas\
|       |   +-- v1.0.0_beta-1\
|       |   +-- v1.0.0_beta-2\
|       |
|       +-- release_candidates\
|       |   +-- v1.0.0_rc-1\
|       |
|       +-- releases\
|           |
|           +-- v1.0.0\
|           |
|           +-- v1.0.1\
|
+-- auxiliary\
    +-- test_utilities\
    +-- svn_helpers\
    +-- etc.\

Example usage is as follows. This can be varied in many ways to suit the project:

  • main low-risk development takes place on the trunk
  • major maintenance and bug fixes take place on  a feature branch to reduce impact on other developers; that is integrated to the trunk in a controlled and agreed fashion
  • releases and tags are organised hierarchically to reduce clutter at lower levels
  • for releases up to the first stable release, the trunk (at the head or otherwise) is branched to a release version branch; merging or un-merging cherry-picked revision could take place; version information and release notes might be updated; the tag is made from the branch
  • for maintenance or upgrade releases thereafter, the trunk is branched to a maintenance branch for isolated maintenance work; the maintenance branch is branched to a release version branch; version information and release notes might be updated; the tag is made from the release branch; maintenance work is reintegrated to the thunk
  • scripts, developer utilities and other material not associated with a particular branch could be placed in an auxiliary directory
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: