I was originally going to let Git "sink in" a bit more before proposing this, but the recent e-mails about bugs in the VXL 1.17.0 release have prompted me to propose a new release process earlier. I'd like to use these bug reports as motivation for producing a VXL 1.17.1 release with only bug fixes added to VXL 1.17.0.
Brad King has set up a new integration branch named "release" that currently refers to our 1.17.0 release. This branch is like master except the server will only accept changes to it from a few select "release maintainer" users. Currently only Brad and I are on that list, but we will add Lianqing and others who plan to help with releases when they feel they have mastered the required Git commands.
An example of a release workflow is discussed in this article by Brad and others:
See the "Managing Releases" section (the rest of the article is a good read too). The basic idea is that you create a topic branch from the release branch, apply bug fixing commits, merge the topic branch into the master, push master back to the server, and then notify the release maintainer with the name or commit hash of the topic that is intended for the release branch. The release maintainer will then merge the topic branch back into the release branch and merge the release branch into the master branch so that release is always a descendant of master. After the required branches are merged, the release maintainer tags the release branch with a version number and packages the code for release.
Consider the first release attempt an experiment. If it goes smoothly, I'll put instructions on the wiki and formalize this process. I would like to try the following:
1) Brown University developers (or anyone else) create the topic branches on "release" to fix the reported bugs and merge them to "master".
2) I will act as release manager and execute the Git commands to make a 1.17.1 release.
3) Lianqing will package the 1.17.1 release and post the package to the website.
I can help with turning Mathieu's patches into git commits if help is need with that. Otherwise the workflow for step 1 is:
$ git fetch
$ git checkout release
$ git checkout -b bug-fix/opencl-compile-issues
<make edits and make commits as described on wiki>
<make sure the branch builds and resolves the problem>
$ git checkout master
$ git pull
$ git merge bug-fix/opencl-compile-issues
$ git push
<send e-mail to maintainers that bug-fix/opencl-compile-issues fixes a release bug>
Let me know if there are any questions.