Getting Started Documentation Glish Learn More Programming Contact Us
Version 1.9 Build 1367
News FAQ
Search Home


next up previous
Next: System generation Up: No Title Previous: aipsinit

Source code management

A set of AIPS++ accounts and groups have been defined to perform the following functions:

Remote consortium sites with access to the internet can choose to NFS mount the master AIPS++ RCS directories on their local development machines. This is most conveniently done via the /net automounter map. All that is required is for the fully qualified hostname to be entered in the aips2-consortium netgroup which has been created at Charlottesville for the purpose. A symbolic link is created at the remote site as

   ~aips++/master -> /net/baboon.cv.nrao.edu/aips2/aips++/master

This gives a view into the master RCS repositories in addition to the local copy in

   ~aips++/slave

which is updated once a day. All AIPS++ makefiles access the RCS repositories via a symbolic link

   ~aips++/rcs

which is set to point to one or the other. At remote sites it normally points to slave and in Charlottesville it always points to master.

When a library or executable is rebuilt, the local rcs directories are normally the ones consulted. However, it is possible to reset the rcs ``switch'' to master at a remote site to cause make to checkout and/or rebuild AIPS++ from the master repositories. This has been tried at ATNF Epping with encouraging results.

AIPS++ programmers create their own ``shadow'' representation of the AIPS++ code directory tree by using the mktree utility which also creates symbolic links into the ãips++/master directories. They then appear to have their own private workspace with a window directly into the master RCS repositories at Charlottesville. Whenever they check code out of, or into the system from their private work area they will be dealing directly with the RCS repositories in Charlottesville.

Source code checkin and checkout is mediated by ai and ao. ai activates its alter-ego, ai_master, which resides in the ãips++/master directory itself, and runs setuid to 31415 - aips2mgr's uid in Charlottesville. This mechanism allows programmers at remote sites to check code into Charlottesville, which will certainly have a different set of uids and gids to those at their own site. The remote consortium sites will, however, be encouraged to adopt the uids and gids defined at Charlottesville for AIPS++. These were deliberately chosen to be large random numbers to minimize the likelihood of conflict with the remote site's set of uids and gids.

Whenever code is checked in to the master, ai updates the local slave copy (if present - and it won't be at Charlottesville), and also the plain text copy in ãips++/code. Since the slave repositories are owned by the local aips2mgr, ai itself runs setuid to its uid (hopefully also 31415).

ai's counterpart, ao, has a similar alter-ego called ao_master which operates in precisely the same way as ai_master, thereby allowing code to be checked out of the master with a lock on it (which requires write permission on the RCS version file).

A third useful utility, au runs setuid to the local aips2mgr account and updates slave (if present) and code with the named files from the master.


next up previous
Next: System generation Up: No Title Previous: aipsinit
Please send questions or comments about AIPS++ to aips2-request@nrao.edu.
Copyright © 1995-2000 Associated Universities Inc., Washington, D.C.

Return to AIPS++ Home Page
2006-03-28