Man Linux: Main Page and Category List

NAME

       aecvsserver - serve CVS client protocol against Aegis projects

SYNOPSIS

       aecvsserver server
       aecvsserver pserver
       aecvsserver -VERSion

DESCRIPTION

       The aecvsserver command is used to serve the CVS client protocol.  The
       repository, of course, is stored within Aegis.

       The server works by retrieving file contents from locations within
       Aegis change sets and repositories.  When necessary, appropriate
       aegis(1) commands are executed by the server to fulfill the requests.

       This code is still experimental.  At the present time only a limited
       number of CVS commands are understood.  If you would like to extend
       this code, contributions are welcome.  The following commands are
       thought to work at this time: add, admin, checkout, commit, init,
       remove, update.

   server
       To use the server, you will need to set the following environment
       variables:
              CVSROOT=:ext:hostname/aegis
              CVS_RSH=ssh
              CVS_SERVER=aecvsserver

   pserver
       It is also possible to use aecvsserver as a cvs pserver, with all the
       usual caveats about how insecure this access method is, because it
       transmits the password almost in the clear.  The root and modules are
       as above.

MODULES

       The CVS concept of modules is mapped onto Aegis concept of projects and
       changes.  The special CVSROOT administrative module is simulated.

   Projects as Modules
       Each Aegis project appears to the CVS client as a module; the module’s
       name is the same as the Aegis project’s name.  This type of module
       isn’t immediately useful except for the cvs export command, or to
       perform a read-only cvs checkout command.

       You can’t commit to a project-named module.  This because Aegis
       requires all operations which would change the repository to be
       performed through a change set.

       It is theoretically possible to code aecvsserver to create a change
       (via aenc(1) and aedb(1) commands), then add the necessary files (via
       aenf(1) and aecp(1) commands), then build (via the aeb(1) command),
       then test (via the aet(1) command), and finally to end development of
       the change (via the aede(1) command).  As the CVS protocol
       documentation says
              "The protocol makes it possible for updates to be atomic with
              respect to checkins; that is, if someone commits changes to
              several files in one cvs command, then an update by someone else
              would either get all the changes, or none of them.  The current
              cvs server can’t do this, but that isn’t the protocol’s fault."
       This code is yet to be written.  Contributions welcome.

       The protocol, however, doesn’t make it particularly easy, either.  The
       semantics of the Modify request change depending on whether it is
       followed by the commit request or the update request.

   Changes as Modules
       Each Aegis change set also appears to the CVS client as a module; it’s
       name is project.Cnumber.  All cvs add commands, cvs remove commands,
       cvs update commands and cvs commit commands are performed against the
       change set, not directly to the baseline.  It is necessary for the
       change set to already exist, and once you have run the cvs commit
       command, it will the be necessary to use the aede(1) command and the
       rest of the usual Aegis process.

       Once a change is no longer in the being developed state, it cannot be
       changed via aecvsserver(1) and you will need to create a new Aegis
       change set, and then cvs checkout a new client-side work area.

       Please note: if you are experimenting with the interface via cvs -d
       :fork:/aegis or similar, the work area you create must be outside the
       Aegis change set’s development directory.

   CVSROOT
       The CVSROOT module’s contents are synthesized from Aegis meta-data.
       You can’t add or modify files in this module; you need to administer
       Aegis directly with aegis(1) commands.

EXIT STATUS

       The aecvsserver command will exit with a status of 1 on any error.  The
       aecvsserver command will only exit with a status of 0 if there are no
       errors.

ENVIRONMENT VARIABLES

       See aegis(1) for a list of environment variables which may affect this
       command.  See aepconf(5) for the project configuration file’s project_
       specific field for how to set environment variables for all commands
       executed by Aegis.

COPYRIGHT

       aecvsserver version 4.24.3.D001
       Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
       2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Peter
       Miller

       The aecvsserver program comes with ABSOLUTELY NO WARRANTY; for details
       use the ’aecvsserver -VERSion License’ command.  This is free software
       and you are welcome to redistribute it under certain conditions; for
       details use the ’aecvsserver -VERSion License’ command.

AUTHOR

       Peter Miller   E-Mail:   millerp@canb.auug.org.au
       /\/\*             WWW:   http://www.canb.auug.org.au/~millerp/