'\" t
.\" aegis - project change supervisor
.\" Copyright (C) 2004, 2006-2008 Peter Miller
.\"
.\" This program is free software; you can redistribute it and/or modify
.\" it under the terms of the GNU General Public License as published by
.\" the Free Software Foundation; either version 3 of the License, or
.\" (at your option) any later version.
.\"
.\" This program is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public License
.\" along with this program. If not, see
.\" .
.\"
.\"
.\" aegis - project change supervisor
.\" Copyright (C) 1991-1993, 1997, 2006-2008 Peter Miller
.\"
.\" This program is free software; you can redistribute it and/or modify
.\" it under the terms of the GNU General Public License as published by
.\" the Free Software Foundation; either version 3 of the License, or
.\" (at your option) any later version.
.\"
.\" This program is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public License
.\" along with this program. If not, see
.\" .
.\"
.ds n) aegis
.ds N) Aegis
.if n .nr )M 8n
.if n .nr IN 8n
.if n .nr )I 8n
.if n .po 0
.hy 0
.if n .ad l
.de r)
.if !'\\*(R)'no' \{\
.PP
See also
.IR \*(n) (1)
for options common to all \*(n) commands.
.\}
..
.de eB
.RS
.nf
.ft CW
.ta 8n 16n 24n 32n
..
.de eE
.ft P
.fi
.RE
..
.ds n) aecvsserver
.TH "aecvsserver" 1 \*(N) "Reference Manual" ""
.SH NAME
aecvsserver \- serve CVS client protocol against Aegis projects
.XX "aecvsserver(1)" "serve CVS client protocol against Aegis projects"
.SH SYNOPSIS
.B \*(n) server
.br
.B \*(n) pserver
.br
.B \*(n)
.B -VERSion
.SH DESCRIPTION
The \fI\*(n)\fP command is used to serve the CVS client protocol.
The repository, of course, is stored within Aegis.
.PP
The server works by retrieving file contents from locations within Aegis
change sets and repositories. When necessary, appropriate \fIaegis\fP(1)
commands are executed by the server to fulfill the requests.
.PP
\fIThis code is still experimental.\fP
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.
.SS server
To use the server,
you will need to set the following environment variables:
.RS
.nf
.ft CW
CVSROOT=:ext:\fIhostname\fP/aegis
CVS_RSH=ssh
CVS_SERVER=\*(n)
.ft P
.fi
.RE
.SS pserver
It is also possible to use \fI\*(n)\fP as a cvs pserver, with all the
usual caveats about how insecure this access method is, because it
transmits the password \fIalmost\fP in the clear.
The root and modules are as above.
.SH MODULES
The CVS concept of modules is mapped onto Aegis concept of projects and
changes. The special CVSROOT administrative module is simulated.
.SS 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 \fIcvs export\fP command, or to perform
a read-only \fIcvs checkout\fP command.
.PP
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.
.PP
It is theoretically possible to code \fIaecvsserver\fP to create a change
(via \fIaenc\fP(1) and \fIaedb\fP(1) commands), then add the necessary
files (via \fIaenf\fP(1) and \fIaecp\fP(1) commands), then build (via
the \fIaeb\fP(1) command), then test (via the \fIaet\fP(1) command), and
finally to end development of the change (via the \fIaede\fP(1) command).
As the CVS protocol documentation says
.RS
"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."
.RE
This code is yet to be written.
Contributions welcome.
.LP
The protocol, however, doesn't make it particularly easy, either.
The semantics of the \f[CW]Modify\fP request change depending on whether
it is \fIfollowed\fP by the \f[CW]commit\fP request or the \f[CW]update\fP
request.
.SS Changes as Modules
Each Aegis change set also appears to the CVS client as a module;
it's name is \fIproject\fP\f[CW].C\fP\fInumber\fP. All \fIcvs add\fP
commands, \fIcvs remove\fP commands, \fIcvs update\fP commands and \fIcvs
commit\fP 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 \fIcvs commit\fP command, it will the be necessary
to use the \fIaede\fP(1) command and the rest of the usual Aegis process.
.PP
Once a change is no longer in the \fIbeing developed\fP state, it cannot
be changed via \fIaecvsserver\fP(1) and you will need to create a new
Aegis change set, and then \fIcvs checkout\fP a new client-side work area.
.PP
Please note: if you are experimenting with the interface via \fIcvs
\&-d :fork:/aegis\fP or similar, the work area you create \fBmust\fP be
outside the Aegis change set's development directory.
.SS 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 \fIaegis\fP(1) commands.
.\"
.\" aegis - project change supervisor
.\" Copyright (C) 1991-1993, 1995, 1997, 2004, 2006-2008 Peter Miller
.\"
.\" This program is free software; you can redistribute it and/or modify
.\" it under the terms of the GNU General Public License as published by
.\" the Free Software Foundation; either version 3 of the License, or
.\" (at your option) any later version.
.\"
.\" This program is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public License
.\" along with this program. If not, see
.\" .
.\"
.SH EXIT STATUS
The
.I \*(n)
command will exit with a status of 1 on any error.
The
.I \*(n)
command will only exit with a status of 0 if there are no errors.
.SH ENVIRONMENT VARIABLES
See \fIaegis\fP(1) for a list of environment variables which may affect
this command.
See \fIaepconf\fP(5) for the project configuration file's
\fIproject_\%specific\fP field for how to set environment variables for
all commands executed by Aegis.
.\"
.\" aegis - project change supervisor
.\" Copyright (C) 1991-1995, 1997, 2006-2008 Peter Miller
.\"
.\" This program is free software; you can redistribute it and/or modify
.\" it under the terms of the GNU General Public License as published by
.\" the Free Software Foundation; either version 3 of the License, or
.\" (at your option) any later version.
.\"
.\" This program is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public License
.\" along with this program. If not, see
.\" .
.\"
.br
.ne 2i
.SH COPYRIGHT
.ds v) 4.24.3
.ds V) 4.24.3.D001
.ds o) 0
.ds p) 4.25
.ds u) 4.24
.ds Y) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
\*(n) version \*(V)
.br
.if t .ds C) \(co
.if n .ds C) (C)
Copyright \*(C) \*(Y) Peter Miller
.PP
The \*(n) program comes with ABSOLUTELY NO WARRANTY;
for details use the '\fI\*(n) -VERSion License\fP' command.
This is free software
and you are welcome to redistribute it under certain conditions;
for details use the '\fI\*(n) -VERSion License\fP' command.
.br
.ne 1i
.SH AUTHOR
.TS
tab(;);
l r l.
Peter Miller;E-Mail:;millerp@canb.auug.org.au
\f(CW/\e/\e*\fR;WWW:;http://www.canb.auug.org.au/~millerp/
.TE