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/