[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How should one maintain a branch for development of a major feature?

From: Pierre Asselin
Subject: Re: How should one maintain a branch for development of a major feature?
Date: Fri, 7 Oct 2005 03:12:41 +0000 (UTC)
User-agent: tin/1.6.2-20030910 ("Pabbay") (UNIX) (NetBSD/2.0 (i386))

Douglas Wade Needham <address@hidden> wrote:

> I have a question regarding branches.  At my employer, we have a major
> new feature which is going to take some considerable effort and time
> (potentially several developer weeks or months), but will create
> significant instability which already undergoes significant change.
> >From previous experience of working with CVS and branches, I know we
> can create a branch to help us reduce the instability.  As a result,
> we are doing something like the following:

>     cvs co module
>     cd module
>     cvs tag feature_branch_base
>     cvs tag -b feature_branch

> Now, as mentioned, this feature will take some time complete, and will
> eventually depend on smaller changes/features which will continue to
> be found on the mainline.  So we will want to merge the mainline
> changes into the branch from time to time, and perhaps from time to
> time (if things are stable), merging the branch back to the mainline.
> Of course, eventually we will want to merge everything back to
> the mainline when the feature is complete.  

> [ details omitted ]

If you do that, you'll be using lots of tags !  Also, I'm not sure
your final merge from branch to trunk is correct.  If I remember
correctly the solution is counterintuitive.

My usual recommendation is
    1)  Merge only from branch to trunk, never trunk to branch.
    2)  Keep your branches short.
    3)  When a branch lingers on for too long, start a new branch
        at the tip of the trunk, merge the old branch into
        the new branch and retire the old branch.

(best viewed with a monospaced font).

pa at panix dot com

reply via email to

[Prev in Thread] Current Thread [Next in Thread]