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.C
number. 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¶