Files
yaml-cpp/StagingBranches.md
2015-03-29 22:55:58 -04:00

1.8 KiB

Introduction

Understandably, the yaml-cpp management would like to keep the /trunk in a fairly reasonable state for consumers of the yaml-cpp library. There are, however, occasions that arise where multiple patch branches that do not merge cleanly need to be integrated before they can be combined back into /trunk. In these cases we fall back on staging branches.

Where Are the Staging Branches?

Staging branches, like other branches, are found in the project's Subversion repository under the /branches folder. Anonymous access is available at http://yaml-cpp.googlecode.com/svn/branches. The staging branches have the form username-staging.

As of this writing, the only staging branch is http://yaml-cpp.googlecode.com/svn/branches/rtweeks21-staging, but please check the branches link (from the previous paragraph) for the latest information.

What is in a Staging Branch?

That is really up to the developer who owns the branch. Staging branches will typically look like a copy of the HEAD of /trunk into which some other branches have been reintegrated. Staging branches are intended to provide an area to prepare a group of (possibly unrelated) changes to go into the trunk.

How Will the Developers Keep Track of the Merges?

All Subversion clients starting with version 1.5 add information about merges between branches to appropriate folders in the svn:mergeinfo property. These clients can therefore track (and report) which version have been merged from one branch to another and avoid any attempts to re-merge a revision.

The best way to merge a feature or bug-fix branch into a staging branch (or a staging branch into /trunk) is svn merge --reintegrate, which will correctly handle changes from any synchronization merges from /trunk into the development branch. This follows the procedure recommended by the Subversion documentation.