[cvsnt] newbie branch/merge question
Nick Duane
nickdu at msn.com
Fri Aug 11 19:31:39 BST 2006
Our group is preparing to move from vss to cvs and I'm the one that is going
to do the move. One area that I plan on paying special attention to is
branching/merging since that is probably one area that can either go
smoothly or cause huge headaches based on your branching/merging design.
I read through the CVSNT docs and some of the previous posts on the subject.
I also read through some of
http://cvsbook.red-bean.com/cvsbook.html#Going%20Out%20On%20A%20Limb%20(How%20To%20Work%20With%20Branches%20And%20Survive).
So at this point I have a beginners understanding of how branching/merging
works (I think). I still have a couple questions regarding what
approach/design would be best to follow.
1. What's the best strategy to implement for branching/merging? I know
that's a pretty open ended question which by itself could have multiple
correct answers. In one of the posts I read the person said they *only*
develop in branches. Let me attempt to give an example in hopes that it
might better describe my situation and possibly why I'm still unsure of the
correct approach. So we're moving from vss to cvs. The current released
version of our product is 3.7.2. There is development underway on version
3.7.3 and 3.8. I don't plan on trying to bring over the entire history from
cvs. I want to start from the 3.7.2 code base. After reading the docs I
had some initial questions. First of all it seems that all releases would
have to be from a branch as opposed to the trunk. Is this correct? I don't
see how you could ever get a release from the main trunk as that most likely
would have other code changes in it. For instance, you're about to put
3.7.3 into QA so you create a 3.7.3 branch so that only fixes for the
current feature set go into the release as opposed to additional features
other developers are working on. At some later point in time all bugs are
fixed and you are ready to release. You then merge this branch back into
the trunk. However the trunk has additional features in it so you could
never get version 3.7.3 from the main trunk. Is this correct? Back to my
situation. I was thinking of creating an empty module. Then I would create
a 3.7.2 branch and copy over the vss code into this branch. Then I would
merge back into the trunk. Obviously this procedure is not needed for this
initial version, but I figured it might be good to treat all releases the
same. Then I would create a 3.7.3 branch and copy the 3.7.3 code into that
branch. I would then merge that back into the trunk. And I would do the
same for 3.8. Comments?
2. When should you create a branch? As soon as we do a release should we
create a branch for the next release and develop in that branch? Or should
we develop in the trunk and only move to the branch at the point when all
the features are completed for a release and we're ready to go into QA?
3. A support group is running CVS 1.11 server. We can use this server
supported by our support group or potentially run our own version of CVSNT
on a server. Is MergePoints enough of a benefit to warrant us running our
own version of CVSNT?
Thanks,
Nick
More information about the cvsnt
mailing list