How to manage CVS tags and branches

How to get the source code to develop an existing ganga package?

Do not rely on CVS HEAD. Always use tags:

Set CVSROOT (see

Get the release you want to develop for, e.g.: cvs co -r Ganga-4-2-6 ganga

Check if the package you want to modify is on the bugfix branch or not: contact the package maintainer -> ganga/release/config/PACKAGES-4.2.6

Bring the package up-to-date (to the HEAD of either trunk or branch):

For package on the bugfix branch(e.g. Ganga-4-2-2-bugfix-branch) do this:

cd ganga/python/packageX
cvs update -r Ganga-4-2-2-bugfix-branch

For package in the trunk do this:

cd ganga/python/packageY
cvs update -A

Now you can modify and commit the package. Do not forget to tag when you are done (coordinate this with the package maintainer).

How to develop against a package version which has not yet been released?

Ask the package maintainer for a package tag you want to use. Tags should be used to manage all inter-package developments. Tags are cheap and may be created very easily, just follow the name conventions (see Do not rely on the HEAD version of the package!

cd ganga/python/packageZ
cvs update -r Ganga-packageZ-1-2

When to rely on CVS HEAD?

If you are working concurrently on the same package then most practical is to work on the HEAD (either in the trunk or on the branch). This only works if you work very closely together. You should not develop against HEAD of another package.

General information on Ganga-4-2-2-bugfix-branch

To ease wink the development we have created the Ganga-4-2-2-bugfix-branch which contains the same files as Ganga-4-2-2 release.

We have to support parallel development lines in the core and here is our strategy. You can use the same one for your packages if you wish. This email is your release manager's good advice but we live in the free world ;-),

Our strategy for Core packages

  1. the current official releases 4.2.x are in Ganga-4-2-2-bugfix-branch
  2. the development line 4.3.0-betaX stays in the trunk (HEAD)

Therefore we need two cvs copies (sandboxes):

4.2.x bugfix line (Ganga-4-2-2-bugfix-branch)

 mkdir 4.2
 cd 4.2
 cvs co -r Ganga-4-2-2-bugfix-branch ganga

4.3 development line (trunk)

  mkdir 4.3
  cd 4.3
   cvs co -r Ganga-4-2-2 ganga

The 4.3 line is the "normal" sandbox, which you should already have.

We also need some way of organizing the package tags which are sent to the release manager. For example, we have decided that Core package ganga/python/Ganga which currently has the tag Ganga-Base-4-8 will be tagged as follows:

  • Ganga-Base-4-X will belong to 4.2 development line
  • Ganga-Base-5-X will belong to 4.3 development line

At some point in the future we will have to merge the 4.2 line back to the trunk (4.3). From that point on, we will use Ganga-Base-6-X tags.

If you share the development on some packages, please discuss the detailed strategy with your peers.

-- JakubMoscicki - 10 Jan 2007

Edit | Attach | Watch | Print version | History: r2 < r1 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r2 - 2007-01-10 - JakubMoscicki
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    ArdaGrid All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2022 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
or Ideas, requests, problems regarding TWiki? use Discourse or Send feedback