Version 2 (modified by Gavin, 15 years ago) (diff)


Subversion Usage

Full subversion usage is detailed in Version Control with Subversion.

With specific reference to:

  • Developers commit all new work to the trunk. Day-to-day changes are committed to

/trunk: new features, bugfixes, and so on.

  • The trunk is copied to a “release” branch. When the team thinks the software is ready for release (say, a 1.0 release), then /trunk might be copied to /branches/1.0.
  • Teams continue to work in parallel. One team begins rigorous testing of the release branch,

while another team continues new work (say, for version 2.0) on /trunk. If bugs are discovered…

Branching and Merging covered in either location, fixes are ported back and forth as necessary. At some point, however, even that process stops. The branch is “frozen” for final testing right before a release.

  • The branch is tagged and released. When testing is complete, /branches/1.0 is copied to

/tags/1.0.0 as a reference snapshot. The tag is packaged and released to customers.

  • The branch is maintained over time. While work continues on /trunk for version 2.0, bugfixes

continue to be ported from /trunk to /branches/1.0. When enough bugfixes have

accumulated, the team may decide to do a 1.0.1 release: /branches/1.0 is copied to

/tags/1.0.1, and the tag is packaged and released.

Just as with branches, the only

reason a copied directory is a “tag” is because humans have decided to treat it that way: as

long as nobody ever commits to the directory, it forever remains a snapshot. If people start

committing to it, it becomes a branch.