Provided by: aegis_4.24.3-3_amd64 bug

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/

Reference Manual                                      Aegis                                       aecvsserver(1)