On Wed, Feb 17, 2010 at 9:09 AM, Philipp Leusmann < philipp.leusm...@rwth-aachen.de> wrote:
> Thank for you hint, Bob, but I have doubts this way a merging works out for > us, since we are working in a small team without "voting" each task. So, I > have the fear, that changesets committed to trunk contain unrelated changes, > which by accident make it into the branch. > > So, it would be nice to get some more comments on my proposal. How would it > work out best? > > Regards, > Philipp > > Am 15.02.2010 um 22:14 schrieb Bob Archer: > > >> Hi all, > >> > >> we are currently rethinking our svn branching strategy and one question > >> came up. > >> > >> To explain what we are planning to do: > >> > >> We are going to use a release-branching, with adding new features to > >> /trunk . > >> At some point in time, we will create a ReleaseCandidate-branch from the > >> trunk to /branches/Ver_X.Y , which from that point of time will only > >> receive bug-fixes, which will also be merged into /trunk. > >> At some point, we will consider it stable and tag it as Ver_X.Y . > >> Daily new work still goes to trunk and on some point we will create the > >> next RC-branch (/branches/Ver_X.Y+1) > >> > >> Now the problematic thing happens: the customer, who has Ver.X.Y, > demands > >> an immediate bug-fix. Thus, the plan is to create the bugfix in > >> /branches/Ver_X_Y . > >> > >> But what will be the best practice to merge it? the bugfix also has to > go > >> to /trunk and to /branches/Ver_X_Y+1. > >> Would I merge it to both /trunk and /branches/Ver_X_Y+1 or would I only > >> merge it to /branches/Ver_X_Y+1 which then will be merged to /trunk? > >> > >> What is the best practice or doesn't it matter at all? > >> > >> Thanks for your help, > >> Philipp > > > > You may want to look at how the subversion project itself handles this. > They use release branches as you plan however they do not commit code to the > branches. All changes are made to trunk then ported to a release branch once > it is fully tested and approved. > > > > > http://subversion.apache.org/docs/community-guide/releasing.html#releasing > > > > BOb > > > > What you're proposing is perfectly valid. Of course, what's best depends on organizational and practical factors. The advantage of your proposed solution is that you fix problems where they occur. You deal with the immediate concern (getting the bug fix out to the customer), and you do your housekeeping (merging the fix so it's included in future releases as well) after the fact. Any merge issues that occur will not delay resolution of the immediate problem at hand. The potential downside is that your fix may not integrate well with a more current revision of your codebase, which may cause disruption/delay on your regular work stream and adversely affect downstream timelines. A third alternative might be to a) fix the problem where it needs fixing the soonest (in your scenario on a branch created off the release tag), b) create an integration branch for any of these types of fixes to be merged with ongoing development and c) merge this work back into the main development stream once integration issues have been resolved. This ensures that your immediate problem gets fixed without delay, your ongoing development isn't disrupted by these fixes being merged back, and you are dealing with the integration issue. Of course the drawback to this is that you have to assign resources to work on the integration issues which takes away from something else getting done. R.