Ethereal-dev: RE: [Ethereal-dev] Creating a stable branch
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: "Maynard, Chris" <Christopher.Maynard@xxxxxxxxx>
Date: Thu, 16 Mar 2006 18:43:32 -0500
My 2 cents regarding branches: I have been taught, by Afora International (http://www.afora.nl/index.shtml), to keep things as simple as possible. From what I learned and from my own experience, I would recommend a branch strategy that involves essentially only 2 branches - a trunk and an active development branch where heavy development is done on the active development branch only, and releases are made on the trunk. In a nutshell, it looks something like the following: DEVELOPMENT BRANCHes b1 mb1 b2 mb2 b3 ^~~~~~~~~--- ^~~~~~~~--- ^... / \ / \ / / \ / \ / --0.10.14 v~~-----0.99.0 v~~----0.99.1 mt1 mt2 TRUNK (STABLE BRANCH) .... where: 1) "-----" implies stable code 2) "~~~~~" implies unstable code 3) "v", "^" indicate the branch/merge directions 4) "m" is a merge point, with "b" on the branch, and "t" on the trunk. 5) Both branch points and merge points are always tagged. Some things to note: 1) Development is never done on the trunk, except for perhaps a very short time when merging from the development branch to the trunk in preparation for a release, as unforeseen problems are always possible. This is normally a very short period of potential instability, and any changes made to the trunk during this time will of course need to be merged back to the development branch eventually. Proper tagging allows merging to be as painless as possible. 2) The way I've shown the graph, I allow development to be done on one branch - either the current development branch or the trunk when preparing for a release, but never both. This prevents more development on a soon-to-be retired development branch. This does not have to be the case though. Development could continue on b1 even after mb1, but then any changes after mb1 would have to be merged into the b2 branch on some other merge point. In reality, once b2 starts, there is no reason to continue on b1. 3) Bug fixes are normally done on the development branch as well, and also merged in along with the new features to the trunk when the next release is desired. 4) If a critical bug is found and must be fixed for an emergency release before the next scheduled release, it can be fixed on the trunk to avoid a hasty merge from the development branch which might not be ready for merging, but then it would have to be tagged and a merge from the trunk to the current development branch would need to be done to make sure the bug fix was also applied in the development branch. (I did not show this example on the above graph.) There are many complications that can arise and I am simplifying somewhat. In any case, I think it's far easier to only have to worry about at most 2 branches at any one time, and IMO, this model should work rather well for Ethereal development. Lastly, here's a link to an Open Source book written by Karl Fogel & Moshe Bar entitled, "Open Source Development with CVS": http://cvsbook.red-bean.com/. I realize that Ethereal uses Subversion now, but many of the concepts are the same. The book itself is open source (http://cvsbook.red-bean.com/images/paraglyph-letter.jpg). A good place to start reading about branching is page 152, "Going out on a Limb...". On page 162, Karl refers to the branching method I illustrated above as, "The Flying Fish Approach". FWIW, Chris -----Original Message----- [some snipping here] > Ulf Lamping wrote: > However, I'm *really* unsure if we can provide the effort of maintaining > both the developer and the release version. After a relative short time, > both versions will differ a lot, so merging changes from the release to > the devel or vice versa are practically impossible, resulting in having > to code two implementations for a bug fix (doing bug research twice, > etc.), which is obviously annoying. > > Another problem is: When to release a new stable version? Doing a > release too late results in a lot of double effort and releasing it too > early results in several new fresh bugs. > > Maybe I'm looking at things to complicated and this will work perfectly :-) Gerald Combs wrote: You probably aren't. My main focus is making our development process more secure. If you can come up with a way to do this that's simple and easy, I'm all ears. :) ----------------------------------------- This email may contain confidential and privileged material for the sole use of the intended recipient(s). Any review, use, retention, distribution or disclosure by others is strictly prohibited. If you are not the intended recipient (or authorized to receive for the recipient), please contact the sender by reply email and delete all copies of this message. Also, email is susceptible to data corruption, interception, tampering, unauthorized amendment and viruses. We only send and receive emails on the basis that we are not liable for any such corruption, interception, tampering, amendment or viruses or any consequence thereof.
- Follow-Ups:
- Re: [Ethereal-dev] Creating a stable branch
- From: Gerald Combs
- Re: [Ethereal-dev] Creating a stable branch
- Prev by Date: [Ethereal-dev] LUA on WIN32: we still use 5.1 beta although a final version is released
- Next by Date: RE: [Ethereal-dev] Creating a stable branch
- Previous by thread: RE: [Ethereal-dev] Creating a stable branch
- Next by thread: Re: [Ethereal-dev] Creating a stable branch
- Index(es):