Official cvs repository: structure, use and access control

The official ATLAS CVS repository is the unique media through which ATLAS software (both fully validated and in development) should be exchanged between developers and between developers and users.

Full documentation on CVS can be found at http://cvshome.org/.

In order to use the repository, see the description of the ATLAS cvs server.

If you need to use CVS branches, please see instructions, recommendations and conventions in the Usage of CVS branches in ATLAS.

For an important restriction on tagging, see the CVS repository access rights.

The repository consists of 2 main areas:
 

  • Official ATLAS software
  • External software

  •  

     


    Official ATLAS software (i.e. under $CVSROOT/offline)

    Packages are official in the sense that they are endorsed by the offline software community and/or the domains or subgroups that "own" them and they obey the standards set in the context of the Software Process defined by the ATLAS Quality Control group.
    A package does not need to be officially validated before it is put in the repository. It does, however,  need the approval of the coordinator(s) concerned and (esp. for top level packages) the librarian.
    Packages may NOT contain external software as subpackages.

    Each top level package has one single package coordinator (typically the coordinator of the corresponding domain) who has the overall responsibility for that package.
    Coordinators of subpackages are accountable to the top level coordinator.
    The coordinator (or the domain that "owns" the package) may authorise any number of developers to contribute to the package and its subpackages.
    These people, as well the librarian and the support team, have commit (and possibly tag) access to the package tree.

    Tag access at the top level is restricted to the coordinator and if necessary a preferrably small number of developers.
    A preferrably small number of "key" developers of a package may also assign so-called "developers tags" that allow other developers to share intermediate versions while continuing development.
    This does not imply that all who have commit access, should automatically have tag access.
    Release tags (i.e. of the type PackageName-xx-yy-zz, where xx,yy,zz = [00,99]) at any level should be assigned only by the corresponding coordinator.
    See also Repository Access Rights.

    To summarise:
    A (new) developer wishing to contribute to an existing package at any level (either by committing changes or by importing one or more subpackages) should contact the corresponding coordinator who will then instruct the librarian to grant commit access at the appropriate level(s).
    The coordinator will at that time or some later stage decide whether tag access is also to be granted and instruct the librarian accordingly.
    A (new) developer wishing to establish a new top-level package should initially contact the Computing Steering Group or the Software Coordinator (to be decided) and the librarian.

    External software (i.e. under $CVSROOT/offline/External)[1]

    The procedure for the evaluation of external packages for use in ATLAS is described in an earlier document, prepared by J. Hrivnac (see http://www.cern.ch/Atlas/GROUPS/SOFTWARE/OO/asp/ref/ref-body.html#AEN112). This may in the future be revised by the ATLAS Quality Control group.

    External packages in the repository are either of the shareware type (e.g. software downloaded from an ftp site) or "pseudopackages" for truly external software. The latter are meant to allow version control for the external software and provide an SRT interface so that this external software can be used by the ATLAS packages in a seemless and straightforward fashion.

    The packages cannot be local copies of officially supported external software. Such packages can only be included if there is a clear and well justified need for ATLAS-specific modifications ratified by the original package coordinator and an expert team as well as the CSG and the librarian.

    Each package must have a single coordinator, responsible for maintenance and support.

    External users of packages shall need only standard languages and compilers to use the products. All packages must build on all supported platforms and must provide standard interface for the librarian (as defined for the official software). They also have a well-defined life-time i.e. obsolete, unmaintained or unused packages are reviewed and removed from the repository.

    [1] Some external software may reside outside the repository in the /afs/cern.ch/atlas/offline/external area and is governed by a different  policy. However, it is recommended that this software also be version-controlled and interfaced via pseudopackages as described above. It has been assumed (though not explicitly stated until now) that such external packages may NOT contain other external software as subpackages/subdirectories unless this is discussed and approved by the coordinators concerned and the librarian, for all such subpackages to be included.
     


    This page is  no longer maintained.

    (last modified by Maya Stavrianakou on 10.07.2001)