Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Release Procedures

Boost Release Procedures

Introduction
Procedure Overview
Procedures for Developers
Procedures for the Release Manager
FAQ
Acknowledgements

Introduction

Each release of Boost software is overseen by a release manager, who coordinates release activities via the Boost mailing list, as well as performing the detailed procedures for the release.

Boost developers assist the release manager by reviewing regression test logs, and committing fixes to CVS.

Release Procedure Overview

Release Procedures for Developers

  • Fixed code is committed to main branch
     
  • Switch to the release candidate branch
    cvs update -r RC_1_26_2
  • Merge changes in a trunk since previous merge to branch
    cvs update -jmerged_to_RC_1_26_2 -jHEAD buggycode.hpp
     --> RCS file: /cvsroot/boost/.../buggycode.hpp,v
     -->    retrieving revision 1.4
     -->    retrieving revision 1.6
     -->    Merging differences between 1.4 and 1.6 into buggycode.hpp
  • Commit merged branch
    cvs commit -m "Merged fix for problem xyz from trunk to branch" buggycode.hpp
  • Go back to main trunk
    cvs update -A
  • Move tag to a new merged point
    cvs tag -F -c merged_to_RC_1_28_2 buggycode.hpp
  • Repeat as needed
  • After fixed code is committed to main branch, switch to the release candidate branch:

Select file(s) if not already selected.

Modify | Update selection... | Update settings | Sticky options | Retrieve rev/tag/branch: RC_1_26_2 | OK

  • Merge changes from main trunk into the release candidate branch:

Modify | Update selection... | Update settings | Merge options | Only this rev/tag: merged_to_RC_1_26_2 | Plus with this rev/tag: HEAD | OK

  • Commit merge results:

Modify | Commit... | Enter log message: ... | OK

  • Go back to main trunk:

Modify | Update selection... | Update settings | Reset any sticky date/tag/-k options | OK

  • Tag as new merge point:

Modify | Create tag on selection... | Create tag settings | Enter the tag name to create: merged_to_RC_1_26_2, Overwrite existing tags with same name | OK.

Release Procedures for the Release Manager

At time of branch-for-release:

See Release Manager's Checklist for full details.

FAQ

What is the purpose of the merged_to_RC_n_n_n tag? This tag allows multiple merges from the main trunk to the release candidate branch. Without it, merging an initial main trunk fix  into the release candidate branch would work, but merging a second fix from main trunk to release candidate branch would result in a merge conflict. Although this procedure seems convoluted, it works much better in practice than several prior procedures we tried.

Acknowledgements

This web page was written by Beman Dawes, with helpful suggestions from Dave Abrahams and Steve Robbins. Jim Hyslop contributed the original CVS procedures. Updated by Jeff Garland after 1.29 release based on list discussions.

Revised: 02 October, 2003

© Copyright Beman Dawes 2002

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)