review with multiple branches.
diff --git a/workflow.txt b/workflow.txt --- a/workflow.txt +++ b/workflow.txt @@ -622,14 +622,17 @@ In the [Diagram](#diagram) this just add Grafted micro-releases add another layer between development and releases. They can be necessary in cases where testing requires actually deploying a release, as for example in [Freenet](http://freenetproject.org). + <a name="review-branch"></a> ### Explicit review branch -If you want to add a separate review stage, you can use a review branch[^review-branch-preparation] into which you only merge or graft reviewed changes. The review branch then acts as a staging area for all changes which might go into a release. +If you want to add a separate review stage, you can use a review branch[^review-branch-preparation][^review-single-branch] into which you only merge or graft reviewed changes. The review branch then acts as a staging area for all changes which might go into a release. [^review-branch-preparation]: The review branch is a special [preparation-branch](#fn:release-preparation), because it can get discontinous changes, if maintainers decide to graft some changes which have ancestors they did not review yet. +[^review-single-branch]: We use one single review branch which gets reused at every review to ensure that there are no changes in stable which we did not have in the review. As alternative, you could use one branch per review. In that case, ensure that you start the review-* branches from `stable` and not from `default`. Then merge and graft the changes from default which you want to review for inclusion in your next release. + To use this extension of the branching model, just create a branch on default called `review` in which you merge or graft reviewed changes. The first time you do that, you update to the first commit whose children you do not want to include. Then create the review branch with `hg branch review` and use `hg graft REV` to pull in all changes you want to include. On subsequent reviews, you just update to review with hg update nextrelease, merge the first revision which has a child you do not want with `hg merge REV` and graft additional later changes with `hg graft REV`.