On 2003-03-24 12:04, Steve Bertrand <[EMAIL PROTECTED]> wrote:
> I have developed a project for use at my ISP, which I have been keeping in
> my CVS repository (as I do all of my projects). CVS is working great, but
> I have a somewhat unrelated question, which I would apprecieate
> redirection if required.
>
> The current state of my app is ready for production, so I would like to
> take a snapshot of it as is, then implement it. I would like to leave this
> snapshot alone, and further develop in other aspects of the program now.
> Am I correct with this method?:
>
> - commit my current source and branch as RELEASE

A tag with RELEASE_1_0 is all you need to be able to extract the
versions of the files as they were at the date of the tagging
(i.e. just before the RELEASE goes out).

A branch is only required if you want to continue development in two,
uhm, `branches'.  The HEAD of every file tracks the latest, most
cutting-edge, bleeding from all edges, version of the file.  The
branch of the release, on the other hand, is only touched when changes
are backported from your experimental, HEAD branch to the release.

> - download RELEASE onto production server and put into use
>
> - further work will continue normally, and the RELEASE branch will
> not be affected

True.  You have to commit stuff to the release branch to affect it.

> - when I am ready for the new features, I can re-branch to a new
> RELEASE, redownload onto production and repeat

Sounds like a good plan to me.

> - if changes are made and required into RELEASE, I can merge at that
> time.

Yep.  If you create a separate branch for the release version, for
instance with:

        $ cvs checkout project
        $ cd project
        $ cvs tag -r RELEASE_1_0_0_BP

(where _BP means "branch point" and is a tag, not a branch), then you
can use:

        $ cvs checkout -r RELEASE_1_0_0_BP project
        $ cd project
        $ cvs tag -b RELEASE_1

After this point, you have a RELEASE_1 branch that you can use to make
changes to the 'stable' branch:

        $ cvs checkout -r RELEASE_1 project
        $ edit some files
        $ cvs commit            # This will only affect the RELEASE_1 branch

What I describe above is more or less the same policy that FreeBSD
uses to tag and branch versions.  It's described in the ``FreeBSD
Release Engineering'' article, which you can read at:

        http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng/

- Giorgos


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-questions" in the body of the message

Reply via email to