A question to those out there who are interested in the use of revision control software and release management. We are using git but I’ll try to formulate the challenge independant of the concrete system.
For quite some time now we are using a dedicated release branch in order to decouple work on a software release from ongoing development and maintenance work. This helps a lot to allow for stabilization, testing, preparing of release notes, etc., without interrupting everyone else’s bugfixing and feature implementation work. Patches picked for the release are taking from the maintenance version branch. That branch is already considered stable but as we all know: some patches are more stable than others 🙂
The work done at this level is not necessarily that of a classic patch review where a developer requests the integration of a patch that might be accepted, changed or rejected. It’s a selection process where fixes are judged by their importance and an assessment of the benefit vs. risk. A change not accepted in this process will not necessarily dropped completely. It’ll just have to wait until the next release.
What I’ve been wondering: anyone knows any good tools that feature a selection process of this type? We’ve briefly looked at Gerrit and Crucible (impressive patch reviewing capabilities!) but I can’t help but feeling that they are geared towards another work flow. It’s not about developers filing merge requests that are either accepted or denied. It’s about a post-commit selection process among candidate commits. Commands like git cherry help to determine unmerged changes. But some frontend that provides a good overview, allows for comments and remembers do-not-merge decisions for specified branches would be very nice to have. Any suggestions? Any way to set up of the wide spread systems to do what I’m looking for? Thanks.
PS: Despite using the term “cherry picking” we are not settled on this particular feature. If regular branches and merges can be used without too much pain that’s also fine.